ABC 053
目录A - ABC/ARC
题意 : x>1200,输出"ARC",小于输出"ABC"
Submission #59141472 - AtCoder Beginner Contest 053
B - A to Z String
题意 : 找出以'A'开头'Z'结尾的最长子串
思路 : 找出第一个'A'的位置 x 和'Z'的最后一个位置 y,ans=y-x+1;
Submission #59141520 - AtCoder Beginner Contest 053
C - X: Yet Another Die Game
Submission #59145419 - AtCoder Beginner Contest 053
题意 : 你有一个骰子,刚开始任意一面向上,之后每一轮你可以翻转一次骰子,每次你将获得骰子正面向上的点数作为分数,问至少多少轮之后你获得的分数 >= x?
思路 :贪心的想6和5交换着取,第一次取6,第二次取5这样,即656565~~这样取,先对11取整,再对余数考虑,余数>=6,要2次,小于6要一次
ll n;
cin>>n;
ll ans=n/11;
ans*=2;
ll m=n%11;
if(m){
if(m<=6)ans++;
else ans+=2;
}
cout<<ans<<"\n";
D - Card Eater
Submission #59141974 - AtCoder Beginner Contest 053
题意 : 你有 n 张卡片 ,每张卡片上面写着都写着一个数(可重复),每次你可以选3个数,只保留3个数的第二大,最后只能剩下不重复的数,问最后最多有多少个数可以剩下?
思路 : ans = 刚开始时不同数的个数.贪心的发现同一个数之间可以自我消除,cnt[x]表示 x 的个数,cnt[x]为奇数个可以自我消除后剩下一个 x ,cnt[x]为偶数的话则多一个 x 要用其它数来消除,则统计有多少个多出来的个数res要删除,若 res为奇数,则不需要用多的其它数来消除, res为偶数,ans--;
比如多出来1 3,则可以1 1 3消除掉1 3。
int n;
cin>>n;
map<int,int>cnt;
for(int i=1;i<=n;i++){
int x;cin>>x;
cnt[x]++;
}
int ans=cnt.size();
int res=0;
for(auto [x,y]:cnt){
if(y%2==0)res++;
}
if(res%2==1)ans--;
cout<<ans<<"\n";
标签:cnt,ABC,res,个数,ans,053
From: https://www.cnblogs.com/fcking/p/18504109