题目链接
十分简单的一道题,但也有一些使人崩溃小小的坑点,数据太弱,线段树什么的都不需要!

但是!存在比赛跨年举办所以我们要对数据进行一定的处理!具体的就去看代码吧

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <math.h>
#include <stdio.h>
#define max(a,b) (a>b)?(a):(b)
int n,f[566],a,b,c,d,maxn;
int k[13]={0,0,31,59,90,120,151,181,212,243,273,304,334};
int main()//QAQ
{
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);//举办的月份
scanf("%d",&b);//举办的具体时间
scanf("%d",&c);//需要多少人
scanf("%d",&d);//指从d天前就该开始准备了!
d--;
int l=k[a]+b-d+100;//将数据处理,防止数组越界
int r=k[a]+b+100;
// cout<<l<<' '<<r<<' '<<c<<endl;
for(int i=l;i<=r;i++)
f[i]+=c;
}
for(int i=101;i<=465;i++)//循环便捷问题参照18,19行
maxn=max(maxn,f[i]);
printf("%d",maxn);//do not copy this code
return 0;
}