Codeforce 1425 A. Arena of Greed 解析(思維)

今天我們來看看CF1425A

題目連結

題目

略,請直接看原題。

前言

明明是難度1400的題目,但總感覺不是很好寫阿,而且以下題解我感覺有些地方我也懵懵懂懂的,不是超級確定

想法

首先,這題目有一個除以\(2\)的動作,因此有可能聯想到\(:\)我們必須用二進位來看待數字\(n\)。

有一個不等式非常重要,在這邊重提:\(\sum\limits_{n=0}^k2^n<2^{k+1}\),也就是更高位的\(bit\)一定比低位的所有\(bit\)總和還要大。

並且我們注意到,如果把一個偶數\(-1\),目前最低位的\(bit\)會被拆成更低位的所有\(bit\)的總和,也就是例如:\(100000_2-1_2=11111_2\),下標\(_2\)是指二進位。

而我們可以觀察到,如果有個偶數,且偶數的第\(0\),第\(1\)個\(bit\)都是\(0\),也就是例如\(1100_2\)這個數字。只要我們先減\(1\),這樣會變成\(1011_2\),因此對手只能拿\(1\),使得變成\(1010_2\)。而\(1010_2\)並不符合「第\(0\),第\(1\)個\(bit\)都是\(0\)」,因此我們直接拿一半...。

只要我們遵循「是偶數且第\(0\),第\(1\)個\(bit\)都是\(0\)」時先拿\(1\),那麼之後對手都只能拿到\(1\)而不能拿\(\frac{n}{2}\),我們有極大的優勢。

最後如果能再注意到\(:\)只有當我們至少有一個大於\(100_2\)的\(bit\)時,我們才會在「是偶數且第\(0\),第\(1\)個\(bit\)都是\(0\)」時先拿\(1\),因為在\(100_2\)時,我們就算先拿一半,只要對手接下來也最多拿到\(1\)。

程式碼:

ll t,n,nn,ans;
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>t;while(t--){
cin>>n;nn=n;ans=0;
if(n&1)n--;
while(n>0){
if(n<8){
if(n&1)ans++,n--;
else ans+=n/2,n/=2;
if(n==0)continue;
if(n&1)n--;
else n/=2;
continue;
}
assert(n%2==0);
if(n%4==0)ans++,n-=2;
else ans+=n/2,n/=2,n--;
}
if(nn&1)cout<<nn-ans<<'\n';
else cout<<ans<<'\n';
}
return 0;
}

標頭、模板請點Submission看

Submission

A. Arena of Greed 解析(思維)的更多相关文章

  1. E. Almost Regular Bracket Sequence 解析(思維)

    Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...

  2. C2. Power Transmission (Hard Edition) 解析(思維、幾何)

    Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...

  3. F. Moving Points 解析(思維、離散化、BIT、前綴和)

    Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易 ...

  4. B. Two Arrays 解析(思維)

    Codeforce 1417 B. Two Arrays 解析(思維) 今天我們來看看CF1417B 題目連結 題目 略,請直接看原題. 前言 a @copyright petjelinux 版權所有 ...

  5. C. k-Amazing Numbers 解析(思維)

    Codeforce 1417 C. k-Amazing Numbers 解析(思維) 今天我們來看看CF1417C 題目連結 題目 略,請直接看原題. 前言 我實作好慢... @copyright p ...

  6. D. Road to Post Office 解析(思維)

    Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒 ...

  7. C. Bank Hacking 解析(思維)

    Codeforce 796 C. Bank Hacking 解析(思維) 今天我們來看看CF796C 題目連結 題目 略,請直接看原題. 前言 @copyright petjelinux 版權所有 觀 ...

  8. B. Kay and Snowflake 解析(思維、DFS、DP、重心)

    Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不 ...

  9. D. Rescue Nibel! 解析(思維、組合、離散化、差分)

    Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ...

随机推荐

  1. Kubernetes K8S之Ingress详解与示例

    K8S之Ingress概述与说明,并详解Ingress常用示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  2. React使用AntV G6实现流程图

    安装 npm install @antv/g6 --save 引用 import G6 from '@antv/g6' 自定义节点 /** * 方式一 */ G6.registerNode('rect ...

  3. 微服务实战系列(四)-注册中心springcloud alibaba nacos

    1.场景描述 因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的 ...

  4. C语言专项错题集

    2020-08-10 记录 #1 1 struct student{ 2 int num; 3 int age; 4 }; 5 struct student stu[3]={{6001,20},{60 ...

  5. 转载:tensorflow slim模块用法

    https://www.cnblogs.com/hellcat/p/8058092.html

  6. Centos-操作系统相关信息-uname

    uname 获取系统相关信息 相关选项 -a 显示全部信息 -m 显示系统CPU架构 x86_64 -n  显示主机名, 和 hostname 一样 -s 获取系统类型 -r   内核信息

  7. 【原创】xenomai内核解析--实时IPC概述

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1.概述 2.Real-time IPC 2. ...

  8. 开源后台系统*mee-admin*

    mee-admin开源后台系统 Preface 这是一个开放的时代,我们不能总是把东西揣在口袋里面自己乐呵. 也正如名言所说的"如果你有两块面包,你当用其中一块去换一朵水仙花" 所 ...

  9. shiro入门学习--授权(Authorization)|筑基初期

    写在前面 经过前面的学习,我们了解了shiro中的认证流程,并且学会了如何通过自定义Realm实现应用程序的用户认证.在这篇文章当中,我们将学习shiro中的授权流程. 授权概述 这里的授权指的是授予 ...

  10. Mysql的Sql语句优化

    在Mysql中执行Sql语句经常会遇到有的语句执行时间特别长的情况,出现了这种情况我们就需要静下心分析分析. 首先,我们需要确定系统中哪些语句执行时间比较长.这个可以使用Mysql的慢日志来跟踪.下面 ...