首页 > 其他 > 详细

zoj 3745 Salary Increasing(坑爹的细节题!)

时间:2014-02-23 08:43:47      阅读:355      评论:0      收藏:0      [点我收藏+]

题目

 

注意题目中的bubuko.com,布布扣,引用绝望的乐园中的进一步解释如下:bubuko.com,布布扣

这是一道浙大月赛的题,一如既往的坑爹,好好一道水题,被搞成一道坑题!!!

 

bubuko.com,布布扣
//注意:r(i) < l(i+1)  !细节啊细节!
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long num[1000010];//这里必须是long long,不然还是wa
int  main()
{
    long long sum;
    int n,m,s,t,add,a;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        sum=0;
        memset(num,0,sizeof(num));
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a);
            num[a]++;
        }
        for(int i=0;i<m;i++)
        {
            scanf("%d%d%d",&s,&t,&add);
            //for(int j=s;j<=t;j++)这样不行因为前面处理过的可能会和同一时间加薪的但排在后面的未处理的数据要小,然后就会被处理两变,然后就wa了
            for(int j=t;j>=s;j--)//所以要从大的到小的
            {
                if(num[j])
                {
                    num[j+add]+=num[j];
                    num[j]=0;//是要把原薪资为j的所有员工加薪,然后原薪资为j的员工数就变成了0
                }
            }
        }
        for(int i=0;i<1000010;i++)//因为这个“=”符号的原因!!!!!!!!!!!!啊!!!!!!!!!!!!!!!!!我是一个大白痴!!!!!!!题目不注意细节,代码也忽视了细节!!!!!!!!!!!
            if(num[i])
            sum=sum+num[i]*i;
        printf("%lld\n",sum);
    }
    return 0;
}
View Code

zoj 3745 Salary Increasing(坑爹的细节题!)

原文:http://www.cnblogs.com/laiba2004/p/3561293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!