zoukankan      html  css  js  c++  java
  • 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+ ext{lcm}(a,b)) 处相遇。
    有奇环的条件是 (frac{ ext{lcm}(a,b)}{a}+frac{ ext{lcm}(a,b)}{b}equiv 1 pmod 2)
    接下来分类讨论:

    1. (a,b) 皆为奇数,不满足,无奇环
    2. (a,b) 一奇一偶,满足,有奇环
    3. (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
    ",cnt);
    	for(int i=1;i<=n;i++)if((a[i]&-a[i])!=ansi)printf("%lld ",a[i]);
    	return 0;
    }
    

    E.

    由于不能走回头路,所以只有环才能让它调头
    因此,对于每一个边双

  • 相关阅读:
    ZooKeeper的工作原理
    redis 数据类型详解 以及 redis适用场景场合
    nginx负载均衡原理
    Java中缓存的介绍
    Java中接口的作用
    json与xml的区别
    最经典40个多线程问题总结
    Java线程 : 线程同步与锁
    dbcp与c3p0的区别
    Linux常见命令
  • 原文地址:https://www.cnblogs.com/BlogOfchc1234567890/p/11619567.html
Copyright © 2011-2022 走看看