Sicily 1146:Lenny's Lucky Lotto(dp)

  题意:给出N,M,问有多少个长度为N的整数序列,满足所有数都在[1,M]内,并且每一个数至少是前一个数的两倍。例如给出N=4, M=10, 则有4个长度为4的整数序列满足条件: [1, 2, 4, 8], [1, 2, 4, 9], [1, 2, 4, 10], [1, 2, 5, 10]

分析:可用动态规划解题,假设dp[i][j],代表满足以整数i为尾数,长度为j的序列的个数(其中每一个数至少是前一个数的两倍)。那么对于整数i,dp[i][j] 等于所有dp[k][j-1]的和,其中k满足:2*k <= i。计算出dp矩阵后,答案便是dp[i][N]的和(i = 1, 2, ... ,N)

#include <bits/stdc++.h>
using namespace std;

int main(int argc, char const *argv[])
{
    int T;
    int index = 0;
    cin >> T;
    while(T--){
        int N, M;
        cin >> N >> M;
        long long dp[M+1][N+1];
        memset(dp, 0, sizeof(dp));
        for(int i = 1; i <= M; i++){
            for(int j = 1; j <= N; j++){
                if(j == 1)dp[i][j] = 1;
                else{
                    for(int k = 1; 2*k <= i; k++){
                        dp[i][j] += dp[k][j-1];
                    }
                }

            }
        }
        long long ans = 0;
        for(int i = 1; i <= M; i++){
            ans += dp[i][N];
        }
        printf("Case %d: n = %d, m = %d, # lists = %lld\n", ++index, N, M, ans);
    }
    return 0;
}

Sicily 1146:Lenny's Lucky Lotto(dp)

时间: 2024-12-28 00:56:55

Sicily 1146:Lenny's Lucky Lotto(dp)的相关文章

HDU 1024:Max Sum Plus Plus(DP)

http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24675    Accepted Submission(s): 8478 Problem Description Now I think you have g

Sicily 1011. Lenny&#39;s Lucky Lotto

1011. Lenny's Lucky Lotto   Time Limit: 1sec    Memory Limit:32MB Description Lenny likes to play the game of lotto. In the lotto game, he picks a list of N unique numbers in the range from 1 to M. If his list matches the list of numbers that are dra

zoj 2402 - Lenny&#39;s Lucky Lotto Lists

题目:一个序列,每个元素都至少的前面的二倍,最大值为n,问长度为l的这种船有多少个. 分析:dp,LIS类似物. 状态:f(i,j)结束数字为j且长度为i的序列的个数,有转移方程: F[ i ][ j ] = Sum(F[ i-1 ][ k ]) { 2^(i-2)<= k <= j/2): 再用S[ i ][ j ]求出长度为i结束不超过j的串的个数就可以了. 说明:(2011-09-19 01:33). #include <iostream> #include <cstd

poj 2193 Lenny&#39;s Lucky Lotto Lists 简单dp

//poj 2193 //sep9 #include <iostream> using namespace std; typedef __int64 INT; INT dp[16][2048]; int n,m; int main() { int cases,t=0; scanf("%d",&cases); while(cases--){ scanf("%d%d",&n,&m); memset(dp,0,sizeof(dp));

烂泥:学习ubuntu远程桌面(二):远程桌面会话管理

本文首发于烂泥行天下 在上一篇文章中,我们讲解了如何给ubuntu安装远程桌面及其配置,这篇文章我们再来讲解下有关ubuntu远程桌面会话的问题. 一.问题描述 在我们使用ubuntu远程桌面时,会经常遇到这样的问题.在连接远程桌面时,我打开的是会话A,我在会话A下处理一些工作的事情.由于自己不小心把这个远程桌面给关闭了,或者今天工作完毕关闭该远程桌面会话.等再进行连接远程桌面时,发现ubuntu会给出一个新的远程桌面会话B,而不是我们刚刚连接过的那个会话A,或者是昨天连接的那个会话A. 以上这

MVC之前的那点事儿系列(3):HttpRuntime详解分析(下)(转载)

MVC之前的那点事儿系列(3):HttpRuntime详解分析(下) 文章内容 话说,经过各种各样复杂的我们不知道的内部处理,非托管代码正式开始调用ISPAIRuntime的ProcessRequest方法了(ISPAIRuntime继承了IISPAIRuntime接口,该接口可以和COM进行交互,并且暴露了ProcessRequest接口方法).至于为什么要调用这个方法,大叔也不太清楚,找不到微软相关的资料哦.但大叔确定该方法就是我们进入HttpRuntime的正式大门,接着看吧. publi

密西西比河谷州立大学:Android应用程序开发(二)

第二讲 Hello World 密西西比河谷州立大学:Android应用程序开发(二),码迷,mamicode.com

活动目录父子域用户迁移之:TFS&SharePoint问题汇总(一)

前段时间做了个项目,是关于父子域合并的,其实无非就是使用ADMT把域用户,计算机等从子域迁移到父域上,看似迁移用户很简单.But--生产环境啊,Exchange,TFS,Sharepoint,还有其余乱七八糟的东西,都使用了域账号,牵一发动全身的节奏,迁移账号出点儿问题相关用户就可以坐在那打酱油了,迁移前在他们生产环境中新建测试账号迁移,但是这种测试账号相对理想的环境,测试过程中很多问题不容易发现,很多问题是迁移了客户生产用户账号时出现了问题,但是于对于TFS一窍不通,sharepoint大多不

(转)大型网站架构系列:负载均衡详解(2)

三.负载均衡算法 常用的负载均衡算法有,轮询,随机,最少链接,源地址散列,加权等方式: 3.1 轮询 将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景. 优点:服务器请求数目相同: 缺点:服务器压力不一样,不适合服务器配置不同的情况: 3.2 随机 请求随机分配到各个服务器.优点:使用简单: 缺点:不适合机器配置不同的场景: 3.3 最少链接 将请求分配到连接数最少的服务器(目前处理请求最少的服务器). 优点:根据服务器当前的请求处理情况,动态分配: 缺点:算法实现相对复杂,需要监