Codeforces 1220
Posted blogofchc1234567890
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1220相关的知识,希望对你有一定的参考价值。
C.
水题
Code
#include<bits/stdc++.h>
using namespace std;
const int maxn=500003;
char s[maxn];
int n;
int main()
scanf("%s",s+1);
n=strlen(s+1);
for(int i=1,mi=maxn;i<=n;i++)
mi=min(mi,int(s[i]));
puts(mi<s[i]?"Ann":"Mike");
return 0;
D.
把节点想成一个数轴。
一张图是二分图 \(?\) 这张图没有奇环。
考虑两个数 \(a,b\) ,以这两个数为间隔连边,假设从 \(x\) 处开始,那么一定在 \(x+\textlcm(a,b)\) 处相遇。
有奇环的条件是 \(\frac\textlcm(a,b)a+\frac\textlcm(a,b)b\equiv 1 \pmod 2\)
接下来分类讨论:
- \(a,b\) 皆为奇数,不满足,无奇环
- \(a,b\) 一奇一偶,满足,有奇环
- \(a,b\) 皆为偶数,将 \(a,b/2\) ,递归处理。
因此,? 这张图为二分图,即不存在奇环,当且仅当所有数在二进制下末尾有相同位数的零。
扩展到多个数也是一样的。
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long D;
const int maxn=200003;
int n,buc[63];
D a[maxn];
int lg(D x)
int ret=-1;
while(x)ret++,x>>=1;
return ret;
int main()
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",a+i);
buc[lg(a[i]&-a[i])]++;
int ans=-1,cnt=0;
D ansi;
for(int i=0;i<=60;i++)if(buc[i]>ans)ans=buc[i],ansi=1ll<<i;
for(int i=1;i<=n;i++)if((a[i]&-a[i])!=ansi)cnt++;
printf("%d\n",cnt);
for(int i=1;i<=n;i++)if((a[i]&-a[i])!=ansi)printf("%lld ",a[i]);
return 0;
E.
由于不能走回头路,所以只有环才能让它调头
因此,对于每一个边双
以上是关于Codeforces 1220的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 1220B. Multiplication Table
Codeforces Round #586 (Div. 1 + Div. 2) B. Multiplication Table
Codeforces Round #586 (Div. 1 + Div. 2) E. Tourism
Codeforces Round #586 (Div. 1 + Div. 2) C. Substring Game in the Lesson