zoukankan      html  css  js  c++  java
  • [NC189C]硬币游戏

    题目大意:有$4n$个硬币,放在$2n$个位置(即放成两排),有两个人,轮流取。第一个人取上面的,第二个人取下面的,每个人只可以取两个人都没取过的位置。若硬币正面向上,为$1$,反面为$0$。把取得的硬币按取得顺序排成一列,这个二进制数大的人赢,为有没有先手必胜策略。

    题解:贪心,一定是先取正面向上的,如果有两个都是正面朝上的就取,不然去自己的一边是正面向上的,再不然就取自己的反面向上而对方正面向上的(让对方没法取)

    卡点:字符串循环时写成了$1sim len$(应该为$0sim len - 1$)

    C++ Code:

    #include <cstdio>
    int n;
    char s[2000010], p[2000010];
    int ans[5];
    int he[2];
    int main() {
    	scanf("%d", &n);
    	scanf("%s%s", s, p);
    	for (int i = 0; i < n * 2; i++) {
    		if (s[i] == 'U') {
    			if (p[i] == 'U') ans[3]++;
    			else ans[2]++;
    		} else {
    			if (p[i] == 'U') ans[1]++;
    			else ans[0]++;
    		}
    	}
    	int now = 1;
    	for (int i = 1; i <= n * 2; i++) {
    		if (ans[3]) he[now]++, ans[3]--;
    		else if (ans[1 << now]) he[now]++, ans[1 << now]--;
    		else if (ans[3 - (1 << now)]) ans[3 - (1 << now)]--;
    		else ans[0]--;
    		now ^= 1;
    	}
    	if (he[1] > he[0]) puts("clccle trl!");
    	else puts(he[1] < he[0] ? "sarlendy tql!" : "orz sarlendy!"); 
    	return 0;
    }
    
  • 相关阅读:
    window 操作
    idea使用
    安装zookeeper
    resource和autowired
    python浅见 (Python 3000)
    Tomcat服务器
    servlet
    事件是一种委托吗?什么是委托?什么是事件?
    int值类型的ToString()方法是否装箱
    抽象类,虚方法与普通类的区别
  • 原文地址:https://www.cnblogs.com/Memory-of-winter/p/9639307.html
Copyright © 2011-2022 走看看