zoukankan      html  css  js  c++  java
  • 小Z的课堂检测(test)

    【题目描述】

    大家都知道小Z的课总是十分快的(鬼知道为什么),然后我们阿M同学总是在上课时处于神游状态亦或是休眠状态,所以她对小Z到底讲了什么是一无所知。然而,小Z总是很坏地打断阿M的休眠状态,并问她问题。作为阿M的开黑好伙伴,你当然不希望阿M同学翻车(不然下一个回答问题的人就是你啦)。所以你需要编写个程序帮助阿M求小Z对于知识点到底讲的档次有多深。已知小Z在课上总会扯到涉及到N个知识点,小Z会进行M个动作(讲课或是提问阿M)。由于小Z比较古灵精怪,所以小Z的讲课时只会讲连续的知识点,并且对于这段区间内的知识点都提升一样的档次。而且,小Z也比较懒,所以小Z只会问阿M关于某一个知识点的了解程度。

    【输入描述】

    第一行读入N,表示小Z要涉及到N个知识点

    第二行读入A[1],A[2]……A[N-1],A[N]表示小Z上几节课已经把第i个知识点的       难度提升到A[i]的难度

    第三行读入M,表示小Z要进行M个动作

    接下来M行,读入Choice

    若Choice=1,则表示小Z要讲课啦

    接下来读入L,R,X 表示小Z要对L到R这些连续的知识点提升难度X

    若Choice=2,则表示小Z要提问啦

    接下来读入K,表示小Z问阿M第K个知识点他已经讲到哪个难度了

    【输入描述】

    每行输出一个数表示阿M应该回答的正确答案

    样例输入1

    10

    1 2 3 4 5 6 7 8 9 10

    5

    1 2 3 4

    2 3

    1 3 4 5

    2 5

    1 5 8 5

    【样例输出1

    7

    5

    【样例输入2

    7

    5 3 7 7 5 8 5

    9

    1 2 7 -1

    2 1

    2 2

    1 2 3 1

    1 2 7 2

    2 2

    1 3 3 -1

    2 3

    2 1

    【样例输出2

    5

    2

    5

    8

    5

    【数据范围】

    对于50%的数据,N<=1000,M<=1000

    对于100%的数据,N<=100000,M<=100000 |X|<=50000

    |A[i]|<=50000;

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int n,m,bl[100005],block;
    long long a[100005],tag[100005];
    void change(int l,int r,int x)
    {
    	for (int i=l; i<=min(bl[l]*block,r);i++) a[i]+=x;
    	if (bl[l]!=bl[r])
    		for (int i=block*(bl[r]-1)+1; i<=r; i++) a[i]+=x;
    	for (int i=bl[l]+1; i<=bl[r]-1; i++) tag[i]+=x;
    }
    int main()
    {
    	freopen("test.in","r",stdin);
    	freopen("test.out","w",stdout);
    	scanf("%d",&n);
    	block=sqrt(n);
    	for (int i=1; i<=n; i++) scanf("%d",&a[i]),bl[i]=(i-1)/block+1;
    	scanf("%d",&m);
    	while (m--){
    		int st;
    		scanf("%d",&st);
    		if (st==1) {
    			int l,r,x;
    			scanf("%d%d%d",&l,&r,&x);
    			change(l,r,x);
    		}
    		else{
    			int x;
    			scanf("%d",&x);
    			printf("%lld
    ",a[x]+tag[bl[x]]);
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    sign in和sign up区别
    sql语句左右表连接理解
    神器
    js不能执行的几个小白错误
    关于isset使用产生Can't use function return value in write context错误
    jQuery中怎么添加innerText、innerHtml(转)
    C#开发BHO程序(引)
    C# 开发BHO插件
    JS对日期时间的操作
    解决JQuery中datatables设置隐藏显示列多次提交后台刷新数据的问题
  • 原文地址:https://www.cnblogs.com/zqzxwdm/p/6931716.html
Copyright © 2011-2022 走看看