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[0] = 0,dp[1] = 1,dp[2] = 2,dp[3] = 2;
    for(int i = 4;i <= 10000;++i){
        for(int j = 1;j <= i;++j){
            dp[i] = min(dp[i],max(dp[i - j],j - 1) + 1);
        }
    }

然而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)>>1;
}
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 = 10000,lft = 1,mid = (lft + rht)>>1,temp;
        while(rht != lft){
            temp = calculate(mid);
            if(temp < n) lft = mid + 1;
            else if(temp == n){
                lft = mid;
                break;
            }
            else if(temp > n){
                rht = mid;
            }
            mid = (lft + rht)>>1;
            //printf("left is %d and right is %d\n",lft,rht);
        }
        printf("%d\n",lft);
    }
    return 0;
}
时间: 2024-12-19 22:53:35

TOJ4101.Guess Game(TOJ means Tianjin University Online Judge)(dp的思想,但这道题目是假dp)的相关文章

TOJ 1139.Compromise

2015-06-03 问题简述: 大概就是输入两段文本(用小写英文字母表示),分别用#表示一段话的结束输入,输出这两个文本的最长公共子序列. 简单的LCS问题,但是输入的是一段话了,而且公共部分比较是字符串的比较. 原题链接:http://acm.tju.edu.cn/toj/showp.php?pid=1139 解题思路: 简单的最长公共子序列问题,只不过过程中比较的是两个字符串,故使用二维字符数组保存输入文本. 输入 x[1...m][], y[1...n][] ,c[i,j]代表两个文本的

toj 4074 CF 319C 斜率优化dp

Source: http://acm.tju.edu.cn/toj/showp4074.html http://codeforces.com/problemset/problem/319/C 题意: 有n棵树(n < 10^5),每棵高度为a[i],还有个属性b[i].现在我们有个锯子来砍树,每用一次就需要维修,维修的费用是b[i],i = max(已经砍完的树的id),如果没有砍完的树,则不能维修.保证a[i]严格递增,b[i]严格递减,且a[1] = 1, b[n] = 0.求砍完所有树的最

{ICIP2014}{收录论文列表}

This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinci 10:30  ARS-L1.1—GROUP STRUCTURED DIRTY DICTIONARY LEARNING FOR CLASSIFICATION Yuanming Suo, Minh Dao, Trac Tran, Johns Hopkins University, USA; Hojj

poj 2342(树形DP)

Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6062   Accepted: 3490 Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure

zoj 3822概率dp

Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess with his friends. What's more, he bought a large decorative chessboard with N r

ZOJ 3822 Domination (概率DP)

Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess with his friends. What's more, he bought a large decorative chessboar

poj2342 Anniversary party 简单树形dp

http://poj.org/problem?id=2342 Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4322   Accepted: 2459 Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The Universi

POJ 2342 树状dp

Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4606   Accepted: 2615 Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure

(转) 很牛的求职经历

工作刚刚落实,论文也刚完成,终于有时间对自己的求职历程及求职经验进行总结了.应同学要求,最近准备书写系列文章“我的求职历程及经验分享”,请大家关注,谢谢! (一):求职历程总结 2007 年1月10日,随着在三方协议上郑重签下自己的名字,我的求职历程终于划上了一个圆满的句号.在这三个月漫长而艰辛的过程中,我付出了很多,经历了很多, 也收获了很多.这一路走来,要感谢的人太多太多,尤其要感谢每一个在找工作过程中关心.帮助过我的人,我会一生铭记你们的恩情.现在,尘埃落定,到了该回 报的时候,我首先要回