zoukankan      html  css  js  c++  java
  • 洛谷 P2367 语文成绩

    洛谷 P2367 语文成绩

    洛谷传送门

    题目背景

    语文考试结束了,成绩还是一如既往地有问题。

    题目描述

    语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?

    //这又跟神器有什么关系呢?神说:呵呵。

    //因为n和p的范围比较大 建议C++选手使用scanf读入.

    //同时建议写读入优化....

    //最后一个点,亲测pas读入800+ms,c/C++的scanf 1200+ms,所以这个点的时限改为2s

    输入格式

    第一行有两个整数n,p,代表学生数与增加分数的次数。

    第二行有n个数,a1~an,代表各个学生的初始成绩。

    接下来p行,每行有三个数,x,y,z,代表给第x个到第y个学生每人增加z分。

    输出格式

    输出仅一行,代表更改分数后,全班的最低分。


    题解:

    只能用差分。

    (O(n)).

    关于差分,请走:

    浅谈差分

    代码:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn=5e6+6;
    const int INF=1e9;
    int a[maxn],cf[maxn];
    int ans,sum;
    int main()
    {
    	int n,p;
    	scanf("%d%d",&n,&p);
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	while(p--)
    	{
    		int x,y,z;
    		scanf("%d%d%d",&x,&y,&z);
    		cf[x]+=z;
    		cf[y+1]-=z;
    	}
    	ans=INF;
    	for(int i=1;i<=n;i++)
    	{
    		a[i]=a[i]+sum+cf[i];
    		sum+=cf[i];
    		ans=min(ans,a[i]);
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    口语详解|为什么“how to say”是错的?
    9 tips to improve spoken english
    splash 安装
    ubuntu 安装NVIDIA驱动过程
    【Python数据分析】时间模块datetime
    【Python数据分析】Pandas模块下的Series与DataFrame
    【Python】文件
    博客园Markdown样式美化
    【Python】异常处理
    【Python】eval函数
  • 原文地址:https://www.cnblogs.com/fusiwei/p/14086130.html
Copyright © 2011-2022 走看看