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 ...
随机推荐
- JavaScript引用是如何工作的
原文链接:https://www.sitepoint.com/how-javascript-references-work/ 摘要:JavaScript中没有指针,并且JavaScript中的引用与我 ...
- [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
- app专项测试自动化测试方法思路与实现
秉着个人意愿打算把python+rf接口自动进行彻底结束再做些其它方面的输出~但事与愿违,但领导目前注重先把专项测试方面完成,借此,先暂停python+rf(主要是与Jenkins集成+导入DB+微信 ...
- C#实现rabbitmq 延迟队列功能
最近在研究rabbitmq,项目中有这样一个场景:在用户要支付订单的时候,如果超过30分钟未支付,会把订单关掉.当然我们可以做一个定时任务,每个一段时间来扫描未支付的订单,如果该订单超过支付时间就关闭 ...
- MYSQL表记录字段换行符回车符处理
), ), ''); CHAR(10): 换行符 CHAR(13): 回车符
- KEIL中逻辑分析仪的使用
本学期开了门嵌入式的课程,在实验课上用到了一款基于ARM Cortex-M3处理器的LPC1768的实验板.本来这种课程我觉得应该可以学到很多东西,可是我发现实验课上老师基本只是讲了xx实验课的要求, ...
- 2017-4-18 ADO.NET
1.什么是ADO.NET? (是一种数据库访问技术) ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问 ...
- Python之路- 反射&定制自己的数据类型
一.isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, super)检查sub类是否是 super ...
- JS组件系列——自己动手封装bootstrap-treegrid组件
前言:最近产品需要设计一套相对完整的组织架构的解决方案,由于组织架构涉及到层级关系,在表格里面展示层级关系,自然就要用到所谓的treegrid.可惜的是,一些轻量级的表格组件本身并没有自带树形表格的功 ...
- js与juery基础知识对比(一)---2017-05-06
用表格做的,想要对比的内容一目了然,红色部分为重点 js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...