TOJ4101.Guess Game(TOJ means Tianjin University Online Judge)(dp的思想,但这道题目是假dp)
题意:你要从[1,n]这个n个数中猜出来规定的某个数,现在这个数未知,问你在最糟糕的情况下(但是你采用了最优的策略),你要猜多少次才能猜出这个数。现在有两种条件:
第一种:当你猜的数比指定的那个数小的时候,系统会提示你small;
第二种:当你猜的数比指定的那个数大的时候,系统会提示你wrong,但是从这以后不论你猜的数比指定数大或小,系统将永远提示你wrong。
在这里最糟糕情况可以理解为这个人很倒霉,命运总是让他多猜。
分析:
数列:1,2,3,4,....,k,....,n
比如说你猜了数字k,那么现在有两种情况:
α.你猜的数字比指定的数字大了,由于你很倒霉,所以你得一个个地往小里猜,此时最糟糕的情况是指定数字是1,那么你要猜k - 1次;
β.你猜的数字比指定的数字小了,那么相当于又开始了一个规模为n-k的游戏;
现在定义dp[i]---->在最糟糕的情况下,从规模为i的数列中猜数,最少要猜多少次。
那么我们应该怎么制定自己的策略呢?由于你很倒霉,那么命运一定会让你进入两种情况中多的那一种。那么好,我就让两种情况要猜的数尽量相等,这样就是最优的策略。
dp[i] = min{max(k-1,dp[i-k])+1;
memset(dp,F,sizeof(dp));
dp[] = ,dp[] = ,dp[] = ,dp[] = ;
for(int i = ;i <= ;++i){
for(int j = ;j <= i;++j){
dp[i] = min(dp[i],max(dp[i - j],j - ) + );
}
}
然而n<= 109,这样的时间复杂度是O(n2),空间复杂度是O(n)。
即爆时间又爆空间。
这就是为啥说这是个假dp了,然而让人惊喜的是,这道题目的得数有规律:
从1到n对应的得数分别是:1个1,2个2,3个3,4个4......
那这个就相当于解一个不等式了,(X2+X)/2 ≥ n,由于在定义域上单调,这里用二分搜索即可:
AC代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
//#define LOCAL
using namespace std;
int calculate(int x)
{
return (x * x + x)>>;
}
int main()
{
//#ifdef LOCAL
//freopen("TOJ4101.txt","r",stdin);
//freopen("TOJ4101out.txt","w",stdout);
//#endif
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
int rht = ,lft = ,mid = (lft + rht)>>,temp;
while(rht != lft){
temp = calculate(mid);
if(temp < n) lft = mid + ;
else if(temp == n){
lft = mid;
break;
}
else if(temp > n){
rht = mid;
}
mid = (lft + rht)>>;
//printf("left is %d and right is %d\n",lft,rht);
}
printf("%d\n",lft);
}
return ;
}
TOJ4101.Guess Game(TOJ means Tianjin University Online Judge)(dp的思想,但这道题目是假dp)的更多相关文章
- HDU-1003 Max Sum(动态规划,最长字段和问题)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- leetcode array解题思路
Array *532. K-diff Pairs in an Array 方案一:暴力搜索, N平方的时间复杂度,空间复杂度N 数组长度为10000,使用O(N平方)的解法担心TLE,不建议使用,尽管 ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- 基于Java的支持可变QPS的http负载生成器,提供交互界面和RMI接口
Load generator The load generator is a Java maven project which is implemented using httpclient+thre ...
- POJ 2342 Anniversary party(树形dp)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7230 Accepted: 4162 ...
- fake gucci outlet perform a couple associated with things in great trust
Based on my a lot of years of encounter within Taobao, purchase bags must go to the high reputation ...
- a* products
Experience of black-box testing on set-top-boxes/IP-connected devices, games consoles and tablets ht ...
- HDOJ 1520 Anniversary party
树形DP....在树上做DP....不应该是猴子干的事吗? Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- 2014牡丹江D Domination
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
随机推荐
- Entity Framework Code First在Oracle下的伪实现
为什么要说是伪实现,因为还做不到类似MsSql中那样完全的功能.Oralce中的数据库还是要我们自己手动去创建的.这里,我们舍掉了Model First中的EDMX文件,自己在代码里面写模型与映射关系 ...
- 浅谈访问控制列表(ACL)
1.ACL简介2.前期准备3.ACL的基本操作:添加和修改4.ACL的其他功能:删除和覆盖5.目录的默认ACL6.备份和恢复ACL7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重 ...
- React组件实现越级传递属性
如果有这样一个结构:三级嵌套,分别是:一级父组件.二级子组件.三级孙子组件,且前者包含后者,结构如图: 如果把一个属性,比如color,从一级传递给三级,一般做法是使用props逐一向下传递,代码如下 ...
- myeclipse2015复制项目需要修改的地方
项目下 D:\Workspaces\MyEclipse 2015\angular001\.settings 的org.eclipse.wst.common.component文件,修改里面未原来的 ...
- 优化php性能的一点总结
图示为100个并发,请求1000次目标地址 进行测试 最重要的两个参数:Requests per second :每秒接受请求数,这里每秒接收101个请求 Time per request:一个请求用 ...
- Mysql Innodb体系结构
Innodb体系结构 Innodb存储引擎主要包括内存池以及后台线程. 内存池:多个内存块组成一个内存池,主要维护进程/线程的内部数据.缓存磁盘数据,修改文件前先修改内存.redo log 后台线程: ...
- 【CSS】如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
- 是什么让C#成为最值得学习的编程语言
随着 Web.iOS.Android.智能设备的流行,新的编程语言纷纷涌现并表现不俗,如 Ruby,Python,Scala,Go,Node.js,Swift 等.反观已经发展了近20年的 C# 语言 ...
- 傻瓜式使用AutoFac
定义一个接口: using System; using System.Collections.Generic; using System.Linq; using System.Web; namespa ...
- 【Android N_启示录】
[啰嗦~]自从接触Android以来,大概也有3年时间,基本是跟着项目走,做过的东西不算多也不算少,从当初做上层应用到系统级应用,再到Framework,以及后来接触功耗.性能优化等需求.给我的感觉就 ...