Codeforces Gym101572 G.Galactic Collegiate Programming Contest (2017-2018 ACM-ICPC Nordic Collegiate...

 

 

Problem G Galactic Collegiate Programming Contest

 

 

这个题题意读了一会,就是几个队参加比赛,根据实时的信息,问你1号队的实时排名(题数和罚时相同的时候并列)。

暴力模拟,简直要模拟死了。。。有个地方感觉很有意思,就是如果某个队还一道题都没写出来的话根本就不用和1队比较,这里用一个数组存一下出题数大于等于1的队伍,直接比较这些队伍就可以,如果全都比较一遍就会超时,真的,相信我。

 

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<string.h>
 7 #include<set>
 8 #include<vector>
 9 #include<queue>
10 #include<stack>
11 #include<map>
12 #include<cmath>
13 using namespace std;
14 typedef long long ll;
15 const int INF=0x3f3f3f3f;
16 double PI=acos(-1.0);
17 const int maxn=1e5+100;
18 int s[maxn],t[maxn],num[maxn],flag[maxn]; 19 int main(){ 20 int m,n,a,b,h,ans; 21 while(~scanf("%d%d",&m,&n)){ 22 memset(flag,0,sizeof(flag)); 23 memset(s,0,sizeof(s)); 24 memset(t,0,sizeof(t)); 25 memset(num,0,sizeof(num)); 26 h=0,ans=0; 27 for(int i=0;i<n;i++){ 28 scanf("%d%d",&a,&b); 29 num[a]++; 30 t[a]+=b; 31 if(num[a]==1)s[h++]=a; 32 if(a==1){ 33 for(int j=0;j<h;j++){ 34 int cnt=s[j]; 35 if(cnt==1)continue; 36 if(num[cnt]+1==num[1]&&(t[cnt]<(t[1]-b))){ 37 ans--; 38 flag[cnt]=0; 39  } 40 else if(num[cnt]==num[1]&&t[cnt]>=t[1]){ 41 ans--; 42 flag[cnt]=0; 43  } 44  } 45  } 46 else{ 47 if(num[a]==num[1]+1&&!flag[a]){ 48 ans++;flag[a]=1; 49  } 50 if(num[a]==num[1]&&t[a]<t[1]&&!flag[a]){ 51 ans++;flag[a]=1; 52  } 53  } 54 printf("%d\n",ans+1); 55  } 56  } 57 return 0; 58 }

 

转载于:https://www.cnblogs.com/ZERO-/p/9703502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值