巧克力棒&&新年的巧克力棒
巧克力棒
题目描述
LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去。
具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后
慢慢享用。
它打算每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则
LYK 觉得它完成了一件非常困难的事,并会得到 1 点成就感。
LYK 想知道一根长度为 n 的巧克力棒能使它得到最多几点成就感。
输入格式(chocolate.in)
第一行一个数 n。
输出格式(chocolate.out)
一个数表示答案。
输入样例
7
输出样例
4
数据范围
对于 20%的数据 n<=5。
对于 50%的数据 n<=20。
对于 80%的数据 n<=2000。
对于 100%的数据 n<=1000000000。
样例解释
思路
将 7 掰成 3+4, 将 3 掰成 1+2, 将 4 掰成 2+2 获得 1 点成就感, 将剩下的所有 2 掰成 1+1
获得 3 点成就感。总共 4 点成就感。
2-1 4-3 8-7 ......
3-1 5-3 9-7 ......
懂了嗎?
代碼實現:
#include<cstdio>
int n,ans;
int main(){
scanf("%d",&n);
ans=n;
while(n){n-=n&(-n);ans--;}
printf("%d\n",ans);
return ;
}
题目来源:CODE[VS]
新年的巧克力棒
马上就要到羊年了,羊村一片欢腾,懒羊羊则懒洋洋地躺在草坪上吃新年的巧克力棒。
他手上的巧克力棒是个由 nn 个巧克力单元格组成的长度为 nn 的长条,现在懒羊羊想把巧克力棒掰开成一个个小单元格。
初始时懒羊羊会把这根巧克力棒丢在草坪上,然后每次懒羊羊会从草坪上拿起一根长度大于 11 的巧克力棒,然后从某两个相邻的单元格的间隙处掰开变成两根巧克力棒,然后把这两根巧克力棒丢在草坪上。懒羊羊初始愉悦值为 00,每次掰开巧克力棒后如果这两根巧克力棒长度相等,那么懒羊羊将提升 11 点愉悦值。
当然,草坪上全是长度为 11 的巧克力棒时懒羊羊就会停止操作。现在懒羊羊想知道,他能获得的愉悦值最多是多少?
输入格式
一行一个正整数 TT。
接下来 TT 行,每行一个正整数 nn 表示巧克力棒的长度,你需要对每个给出的 nn 计算最多能获得的愉悦值。
输出格式
TT 行每行一个整数,表示懒羊羊最多能获得的愉悦值。
样例一
input
5
1
3
4
7
233333333
output
0
1
3
4
233333319
explanation
对于 n=1n=1,初始时草坪上已经全是长度为 11 的了,所以愉悦值为 00。
对于 n=3n=3,懒羊羊可以先把它掰开变成一根长度为 11 的和一根长度为 22 的巧克力棒;然后再把长度为 22 的巧克力棒从正中间掰开获得 11 点愉悦值,所以答案是 11。
对于 n=4n=4,懒羊羊可以先从正中间掰开变成两根长度为 22 的巧克力棒,获得 11 点愉悦值;然后再对于每根长度为 22 的巧克力棒从正中间掰开各获得 11 点愉悦值,所以答案是 33。
限制与约定
对于所有数据,T≤20T≤20。
测试点编号 | nn 的规模 |
---|---|
1 | n≤5n≤5 |
2 | n≤20n≤20 |
3 | n≤1000n≤1000 |
4 | |
5 | |
6 | n≤109n≤109 |
7 | |
8 | |
9 | |
10 |
时间限制:1s1s
空间限制:256MB256MB
来源
UOJ Goodbye Jiawu
思路同上;
代码实现
#include<cstdio>
int n,m,ans;
int main(){
scanf("%d",&m);
while(m--){
scanf("%d",&n);
ans=n;
while(n){n-=n&(-n);ans--;}
printf("%d\n",ans);
}
return ;
}
巧克力棒&&新年的巧克力棒的更多相关文章
- uoj 66 新年的巧克力棒 数学
#66. 新年的巧克力棒 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/66 Description 马上就要 ...
- UOJ66 新年的巧克力棒
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 【BZOJ1299】巧克力棒(博弈论,线性基)
[BZOJ1299]巧克力棒(博弈论,线性基) 题面 BZOJ 题解 \(Nim\)博弈的变形形式. 显然,如果我们不考虑拿巧克力棒出来的话,这就是一个裸的\(Nim\)博弈. 但是现在可以加入巧克力 ...
- uoj Goodbye Jiawu
这次比赛真是太伤我心了. 比(惨)赛(不)结(忍)果(睹) 完挂感言 uoj round 5已经挂了一次了,没想到还要再挂第二次. 这次比赛的期望得分是\(100+100+100+70+10\)的.没 ...
- [BZOJ1299]巧克力棒(博弈论)
题目:http://hzwer.com/1976.html 分析:先Orz hzwer 对于盒子外面的巧克力棒,就是Nim游戏. 所以就很容易想到先手第一步最好从盒子中取出m根巧克力棒,使得这些巧克力 ...
- BZOJ 1299: [LLH邀请赛]巧克力棒 [组合游戏]
每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度. Nim游戏多了一个决策:拿出一些石堆 显然只要给对方构造异或和为0的子集就行了 暴枚子集... #include &l ...
- BZOJ1299: [LLH邀请赛]巧克力棒(Nim游戏)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 552 Solved: 331[Submit][Status][Discuss] Descriptio ...
- BZOJ1299 巧克力棒
题面: TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. 他们以最佳策略一共进行了10轮(每次一盒).你 ...
- BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索
题目描述 TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. 他们以最佳策略一共进行了10轮(每次一盒). ...
随机推荐
- /lib/dracut/hooks/shutdown/30-dm-shutdown.sh
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVQAAAMACAIAAABEqXuoAAAgAElEQVR4nOydPWjryOK3VaZM8RYpU2 ...
- MySQL 字符编码问题详细解释
http://www.codesoil.net/tag/charset Character Set Problem in PHP + MySQL4.1+ 和许多人一样,我也是在转移blog时才发现这个 ...
- oracle数据库简单操作
导入某用户所有表和数据:imp sgp/sgp@192.168.0.99:1521/orcl file=sgp20161025.dmp full=y 导出指定表及数据:exp sgp/sgp@192. ...
- 解决input输入框在iOS中有阴影问题
input{ -webkit-appearance: none; }
- 灾备还原之gitlab
灾备还原之gitlab 备份情景:服务器A架设了gitlab,定期通过duplicity发送加密备份给B服务器,现在由于某种情况生产机器A完全无法访问(主机商跑路?硬盘冒烟?服务器BOOM了?),本地 ...
- JS中的面相对象
1.使用Object或对象字面量创建对象 JS中最基本创建对象的方式: var student = new Object(); student.name = "easy"; stu ...
- [转]sed常用命令总结
转自:http://blog.chinaunix.net/uid-26963748-id-3249732.html 一.Sed简介 Sed:Stream Editor 流式编辑器 又称行编辑器,每次 ...
- scala的Map
package com.test.scala.test object MapTest { def main(args: Array[String]): Unit = { //定义一个不可变的map v ...
- 兼容浏览器 div固定浏览器窗口底部 浮动div
css内容: <style type="text/css"> #ken_BB { padding-right:30px; text-align: center; col ...
- 6.10---mybatis中两张表查询数据dao层