半个月没看cf 手生了很多(手动大哭)

Problem - A - Codeforces

题意

给定数字n, 求出最大数字k, 使得  n & (n−1) & (n−2) & (n−3) & ... (k) = 0

题解

&:有0则0

假如n转为二进制共有x位 , 要使&后=0, k的最高位需=0

我们使最高位=0,后面都为1; 那么此数+1=什么

=100000(x-1个0), 这样就能&后=0了

-------------------------------------------------------------------------

结论

k= (1<<x - 1)

1左移x位再-1

代码

#include <iostream>

using namespace std;

int main()
{
int n, t;
cin >> t;
while(t --)
{
cin >> n;
int s = 0;
while(n)
{
s ++;
n >>= 1;
}
s --;
cout << (1 << s) - 1 << endl;
} return 0;
}

Problem - B1 - Codeforces

题意:对一个01回文串,每次有两个操作(1)将一个0变为1,消耗1美元;(2)将字符串翻转,不消耗金钱(条件:  1). 此时不是回文串  2). 上次别人操作没用翻转)当串全为1时游戏结束,花钱少的人胜,问谁胜。

题解:先手初始时为回文, 不能翻转,但只要他改变了一个数,就破坏了回文串的属性,使得后手可以翻转;因此显然大多数情况下后手能让先手多花两美元,从而后手胜。

但也有一些特殊情况,比如一开始串就全为1,那么直接平局;

假如回文串是奇数长度且最中间为0,那么先手还可以操作一下:如果此时只有这中间的一个0,那自然还是输;但假如不是,那么先手把中间的0转换了就先后手易位,两 极 反 转,此时虽然先手多花了1美元,但根据上面的结论,局势转换后后手方可以让先手多花两美元,因此可必胜。

 附: 先手一定会少花2美元原因

假如该串为0000

操作:  A:0100  -->   B:1100   -->   A: 1110  -->B: 翻转成0111   -->   A: 1111

A花费3元, B花费1元

代码

#include <iostream>
#include <cstring> using namespace std; int main()
{
int n, t;
cin >> t;
while(t --)
{
int n, sum = 0;
string s; bool f1 = 0;
cin >> n;
cin >> s;
int n1 = s.length();
if(n1 % 2 && s[n/2] == '0')
s[n/2] = '1', f1 = 1; for(int i = 0; i < n1/2; ++ i)
if(s[i] == '0')
sum ++; if(f1 && sum > 0)
cout << "ALICE" << endl;
else if(f1 || !f1 && sum > 0)
cout << "BOB" << endl;
else
cout << "DRAW" << endl;
} return 0;
}

部分参考于 Codeforces Round #721 (Div.2)部分题解 - 知乎 (zhihu.com)

最新文章

  1. 计算机程序的思维逻辑 (49) - 剖析LinkedHashMap
  2. [LeetCode] Validate Binary Search Tree 验证二叉搜索树
  3. 控制HTML Input只能输入数字和小数点
  4. C#报修系统Ⅱ
  5. 全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗
  6. linq里面似in的查询
  7. Android_UI
  8. XHTML代码规则&amp;手工html转换xhtml
  9. PHP之路——验证码实现
  10. libthrift0.9.0解析(一)之TServer
  11. [Bayes] Why we prefer Gaussian Distribution
  12. [BZOJ1031] [JSOI2007] 字符加密Cipher (后缀数组)
  13. 【数据结构】赫夫曼树的实现和模拟压缩(C++)
  14. python之多继承与__mro__的使用
  15. 在后台业务管理系统中使用Autofac实现微信接口的处理
  16. sorted
  17. KubeCon CloudNativeCon China 2019
  18. 【PAT】B1067 试密码(20 分)
  19. zabbix系列(六)zabbix添加对ubuntu系统的监控
  20. .net core 3.0中可以使用gRPC了

热门文章

  1. openEuler网络配置+换源+桌面环境ukui等基本环境部署
  2. 安装backbox和win7双系统记录
  3. mycat的基本介绍 看这一篇就够了
  4. 简单面试前算法一览java
  5. Mysql之B+树索引实战
  6. setTimeout时间延迟为何不准?
  7. NO Oracle database,JUST USE Oracle client。远程导入导出dmp
  8. 如何在网上找MySQL数据库的JDBC驱动jar包?
  9. java线程池源码分析
  10. 数组有没有 length()方法?String 有没有 length()方法?