ACM-ICPC 2018 南京赛区网络预赛 C GDY - 模拟
程序员文章站
2022-06-04 12:09:54
...
思路:
就是模拟,但是花了好多时间去写,还是太菜……
边写bug边debug发现了自己没注意到的点。
牌肯定是有重复的,所以用multiset不用set
multiset 删除时把相同值得元素全部删除了,我们这时用表示位置的指针删
peo[i].erase(peo[i].find(*it))
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<cmath>
#include<set>
using namespace std;
int main(){
int n,m,a,t;
scanf("%d",&t);
for(int tt=1;tt<=t;tt++){
printf("Case #%d:\n",tt);
scanf("%d%d",&n,&m);
queue<int> left;
multiset<int> peo[205];
for(int i=0;i<m;i++){
scanf("%d",&a);
if(a==1||a==2)a+=13;
if(i/5+1<=n)peo[i/5].insert(a);
else left.push(a);
}
multiset<int>::iterator it,it1,it2;
int now=0,end=0;
while(1){
it=peo[now].begin();peo[now].erase(peo[now].find(*it));//出一张最小的牌
if(peo[now].size()==0)break;
int guo=0;
for(int i=(now+1)%n;i<n;i=(i+1)%n){
if(peo[i].size()==0){
end=1;
break;
}
it1=peo[i].upper_bound(*it);
it2=peo[i].end();it2--;
if(it1!=peo[i].end()&&(*it1==*it+1||*it2==15)){//能出牌就出
if(*it1!=*it+1)it1=it2;
peo[i].erase(peo[i].find(*it1));
if(peo[i].size()==0){end=1;break;}
guo=0;
it=it1;
}
else guo++;
if(guo==n-1){
now=(i+1)%n;break;
}
}
if(end)break;
if(left.size()){//上一轮没人出牌,则取牌
int tmp=left.front();left.pop();
peo[now].insert(tmp);
for(int i=(now+1)%n;i<n&&i!=now;i=(i+1)%n){
if(left.size()==0)break;
tmp=left.front();left.pop();
peo[i].insert(tmp);
}
}
}
for(int i=0;i<n;i++){
if(peo[i].size()==0){printf("Winner\n");continue;}
int ans=0;
for(multiset<int>::iterator mm=peo[i].begin();mm!=peo[i].end();mm++){
if(*mm==14||*mm==15)ans+=(*mm)-13;
else ans+=(*mm);
}
printf("%d\n",ans);
peo[i].clear();
}
}
}
上一篇: 青菜山药,做炖菜最好了
下一篇: 用javascript实现“闪动”标题栏
推荐阅读
-
ACM-ICPC 2018 徐州赛区网络预赛 H - Ryuji doesn't want to study
-
ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study(线段树区间求和)
-
ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study—— 树状数组
-
ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study(线段树 两种做法)
-
【ACM-ICPC 2018 徐州赛区网络预赛】H题 Features Track ---- 树状数组
-
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (线段树维护)
-
ACM-ICPC 2018 徐州赛区网络预赛 Trace
-
ACM-ICPC 2018 沈阳赛区网络预赛 F题 Fantastic Graph
-
ACM-ICPC 2018 沈阳赛区网络预赛-Made In Heaven-K短路
-
ACM-ICPC 2018 沈阳赛区网络预赛 - K Supreme Number - 推理