题目如下:
部落冲突:
题目描述
你作为西佳佳部落的首领,今天将面临n场其他部落的挑衅,你需要调度投石器去抵御外敌。
为了消灭部落i派来的敌人,你需要ri个投石器,在时间si到ti进行战斗。
你的投石器每一场战役打完无需休息,直接可以投入下一场战斗。
请问你至少需要制造多少个投石器就能抵御所有外敌?
输入输出格式:
输入格式
第一行是正整数n代表有几批敌人。之后n行每行首先输入两个时间si和ti,由横杠隔开,时间格式AB:CD;再输入正整数ri。n<=10000,ri<=10000。
输出格式
输出投石器个数。
输入输出样例 输入样例1:
4
08:00-08:20 1
07:30-08:30 2
08:30-09:00 3
08:30-08:31 2
输出样例1:
5
#include<bits/stdc++.h>
using namespace std;
struct mov{long long t,s;} a[100005];
bool cmp(mov a,mov b){
return a.s<b.s||a.s==b.s&&a.t<b.t;
}
long long n,ans,x[100005],cnt,c[100005],j;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x,y,X,Y;
cin>>x>>X>>y>>Y>>c[i];
a[i].s=x*60+X;
a[i].t=y*60+Y;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
int cntn=0;
for(j=1;j<=cnt;j++)if(a[i].s>=x[j]) break;
if(cnt>j)x[i]=a[i].t;
else cnt+=c[j],x[cnt]+=a[i].t-cntn;
}
cout<<cnt;
return 0;
}
0pt求调,悬赏关注×3(真的有三个号)