监督学习

问题描述

 
 

监督学习就是用正确答案已知的例子来训练神经网络,也就是用标记过的数据来验证数据模型的正确性。现在有这么的一个数据:某房地产商有 n 栋商品房,第 i 栋售价为 ai 元。房地产老板现让你写一个程序,在他的指令下,可以让 l 到 r 之间的售价都增加 x ,也可以计算 l 到 r 之间的售价总和并返回结果。指令如下:

1 l r

代表返回 l 到 r 之间的售价总和,称为1指令;

2 l r x

代表 l 到 r 之间的售价都增加 x ,称为2指令。

输入

 
 

第 1 行输入 n (1 <= n <= 105) 和 m (1 <= m <= 105),n 代表商品房的栋数, m 代表指令的个数(即 l 和 r 的组数)。
第 2 行输入 n 个数,分别代表 a1, a2, ... , an ,其中 1 <= ai <= 105
第 3 ... m + 2 行输入 1 指令 或者 2 指令,其中 1 <= l <= r <= n , 0 <= x <= 105

输出

 
 

输出进行1指令操作后的结果。

输入范例

 
 
4 4
3 2 4 7
2 1 3 3
1 2 4
2 3 3 2
1 3 4

输出范例

 
 
19
16

Hint:
有4栋房子,售价分别为3、2、4、7,先进行2指令操作后,房价变为6、5、7、7,进行1指令操作就是对第2到第4栋房子售价进行相加,结果即为5+7+7=19,然后再
进行2指令操作,房价变为6、5、9、7,再进行1指令操作得到结果即16。

AC代码:

#include<stdio.h>
int main()
{
    int n;
    int m;
    int l;
    int r;
    int x;
    int a;
    int i;
    int sum;
    int house[100002];
    while(scanf("%d %d",&n,&m)!=EOF){
        for(i=1;i<=n;i++)
            scanf("%d",&house[i]);
        for(i=0;i<m;i++){
            scanf("%d",&a);
            if(a==1){
                sum=0;
                scanf("%d %d",&l,&r);
                while(l<=r){
                    sum=sum+house[l++];
                }
                printf("%d\n",sum);
            }
            else if(a==2){
                scanf("%d %d %d",&l,&r,&x);
                while(l<=r){
                    house[l]=house[l]+x;
                    l++;
                }
            }
        }
    }
    return 0;
}



猜你喜欢

转载自blog.csdn.net/sifangege/article/details/80246082