操作格子

来源:互联网 发布:红米note清空用户数据 编辑:程序博客网 时间:2024/04/28 00:15

    有n个格子,从左到右放成一排,编号为1-n

共有m次操作,有3种操作类型:

    1.修改一个格子的权值,

    2.求连续一段格子权值和,

    3.求连续一段格子的最大值。

    对于每个23操作输出你所求出的结果。


输入格式

第一行2个整数nm

接下来一行n个整数表示n个格子的初始权值。

接下来m行,每行3个整数p,x,yp表示操作类型,p=1时表示修改格子x的权值为yp=2时表示求区间[x,y]内格子权值和,p=3时表示求区间[x,y]内格子最大的权值。

输出格式

有若干行,行数等于p=23的操作总数。

每行1个整数,对应了每个p=23操作的结果。

样例输入

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

样例输出

6
3

数据规模与约定

对于20%的数据n <= 100m <= 200

对于50%的数据n <= 5000m <= 5000

对于100%的数据1 <= n <= 100000m <= 1000000 <= 格子权值 <= 10000


大一的可以用来练手,控制如何输入输出,参考代码如下:

#include <stdio.h>int main(){int n,m;int *a;int i,j,k;int p,x,y;int sum, max;int **input;scanf("%d%d",&n,&m);a=new int[n];input=new int *[m];for(k=0;k<m;k++)input[k]=new int [3];for(i=0;i<n;i++)scanf("%d",a+i);for(i=0;i<m;i++)scanf("%d%d%d",&input[i][0],&input[i][1],&input[i][2]);for(i=0;i<m;i++){p=input[i][0]; x=input[i][1]; y=input[i][2];switch(p){case 1: a[x-1]=y; break;case 2:sum=0;for(j=x-1;j<y;j++)sum+=a[j];break;case 3:max=a[x-1];for(j=x;j<y;j++)if(a[j]>max)max=a[j];}switch(p){case 2:printf("%d\n",sum);break;case 3:printf("%d\n",max);}}return 0;}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信手机充值冲错了怎么办 国通石油卡怎么办红卡 善融商城有假货怎么办 中百购物卡丢了怎么办 cncbk被骗25万该怎么办 中银e贷额度冻结怎么办 招行抵押贷循环额度怎么办 小额钱袋被拒了怎么办 银行需要提供消费贷款发票怎么办 中银e贷款逾期怎么办 按揭房不想要了怎么办 房贷不想还了怎么办 融e借没有u盾怎么办 窗式空调声音大怎么办 瑞得卡过期了怎么办 对公账号转错了怎么办 中银e令丢了怎么办 中银e贷到期了怎么办 招行信用卡附属卡怎么办 华普超市购物卡怎么办 公司发超市购物卡怎么办 物美购物卡丢了怎么办 淘宝买肯德基电子券留错号码怎么办 京东e卡过期了怎么办 京东e卡绑定错了怎么办 手机换号京东账号绑的银行卡怎么办 京东金条激活失败怎么办 京东买的k3不能激活怎么办 优购手机光黑屏怎么办 优购手机忘记手势密码怎么办 消费卡过期了钱怎么办 超市卡过期了钱怎么办 宜家购物卡的钱怎么办 武商购物卡过期怎么办 丹尼斯卡过期了怎么办 联华ok卡过期了怎么办 汉购通过期了怎么办 天猫退货要检测报告怎么办 京东退货后发票怎么办 京东金融被盗刷怎么办 京东e卡丢了怎么办