XTU 1233 Coins(DP)

时间:2022-06-23 05:22:14

题意: n个硬币摆成一排,问有连续m个正面朝上的硬币的序列种数。

很明显的DP题。定义状态dp[i][1]表示前i个硬币满足条件的序列种数。dp[i][0]表示前i个硬币不满足条件的序列种数。

那么显然有dp[i][1]=dp[i-1][1]*2+dp[i-1-m][0].

如果前i-1个硬币满足条件,那么第i个硬币无论怎么样都满足条件。如果前i-1-m个硬币不满足条件,那么只需要再添加m个正面朝上的硬币即可。

dp[i][0]=2^i-dp[i][1].

于是最后的答案就是dp[n][1].

# include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iostream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <set>
# include <cmath>
# include <algorithm>
using namespace std;
# define lowbit(x) ((x)&(-x))
# define pi acos(-1.0)
# define eps 1e-
# define MOD
# define INF
# define mem(a,b) memset(a,b,sizeof(a))
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
# define FO(i,a,n) for(int i=a; i<n; ++i)
# define bug puts("H");
# define lch p<<,l,mid
# define rch p<<|,mid+,r
# define mp make_pair
# define pb push_back
typedef pair<int,int> PII;
typedef vector<int> VI;
# pragma comment(linker, "/STACK:1024000000,1024000000")
typedef long long LL;
int Scan() {
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void Out(int a) {
if(a<) {putchar('-'); a=-a;}
if(a>=) Out(a/);
putchar(a%+'');
}
const int N=;
//Code begin... LL dp[N][], p[N]; void init(){p[]=; FO(i,,N) p[i]=p[i-]*%MOD;}
int main ()
{
int T, n, m;
scanf("%d",&T); init();
while (T--) {
scanf("%d%d",&n,&m); mem(dp,);
dp[m][]=; dp[m][]=((p[m]-dp[m][])%MOD+MOD)%MOD;
FO(i,,m) dp[i][]=p[i];
FOR(i,m+,n) dp[i][]=(dp[i-][]*+dp[i--m][])%MOD, dp[i][]=((p[i]-dp[i][])%MOD+MOD)%MOD;
printf("%lld\n",dp[n][]);
}
return ;
}

XTU 1233 Coins(DP)的更多相关文章

  1. xtuoj 1233 coins&lpar;dp&rpar;

    Coins Accepted : 120   Submit : 305 Time Limit : 1000 MS   Memory Limit : 65536 KB Coins Problem Des ...

  2. HDOJ&lpar;HDU&rpar;&period;2844 Coins &lpar;DP 多重背包&plus;二进制优化&rpar;

    HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...

  3. HDOJ&lpar;HDU&rpar;&period;3466 Dividing coins &lpar; DP 01背包 无后效性的理解&rpar;

    HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解) 题意分析 要先排序,在做01背包,否则不满足无后效性,为什么呢? 等我理解了再补上. 代码总览 #in ...

  4. UVA 562 Dividing coins&lpar;dp &plus; 01背包&rpar;

    Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were figh ...

  5. PAT 1068 Find More Coins&lbrack;dp&rsqb;&lbrack;难&rsqb;

    1068 Find More Coins (30)(30 分) Eva loves to collect coins from all over the universe, including som ...

  6. HDU 1398 Square Coins&lpar;DP&rpar;

    Square Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  7. POJ 1742 Coins DP 01背包

    dp[i][j]表示前i种硬币中取总价值为j时第i种硬币最多剩下多少个,-1表示无法到达该状态. a.当dp[i-1][j]>=0时,dp[i][j]=ci; b.当j-ai>=0&amp ...

  8. uva--562Dividing coins &plus;dp

    题意: 给定一堆硬币,然后将他们分成两部分,使得两部分的差值最小;输出这个最小的差值. 思路: 想了好久都没想到一个合适的状态转移方程.后面看了别人的题解后,才知道能够转成背包问题求解. 我们将全部的 ...

  9. CodeChef Cards&comma; bags and coins &lbrack;DP 泛型背包&rsqb;

    https://www.codechef.com/problems/ANUCBC n个数字,选出其一个子集.求有多少子集满足其中数字之和是m的倍数.n $\le$ 100000,m $\le$ 100 ...

随机推荐

  1. 自定义HttpModule的一些经验--配置篇

    http://www.cnblogs.com/MyaSky/articles/2134954.html 自定义HttpModule的一些经验--配置篇 自定义web模块,需继承System.Web.I ...

  2. PAT 解题报告 1052&period; Linked List Sorting &lpar;25&rpar;

    1052. Linked List Sorting (25) A linked list consists of a series of structures, which are not neces ...

  3. &OpenCurlyDoubleQuote;来用”alpha版使用说明书

    1引言 1 .1编写目的 针对我们发布的alpha版本做出安装和使用说明,使参与内测的人员及用户了解软件的使用方法和相关内容. 1 .2参考资料 <c#程序设计基础>,赵敏主编,2011, ...

  4. K-th Number 线段树(归并树)&plus;二分查找

    K-th Number 题意:给定一个包含n个不同数的数列a1, a2, ..., an 和m个三元组表示的查询.对于每个查询(i, j, k), 输出ai, ai+1, ... ,aj的升序排列中第 ...

  5. Java语言基础(二)

    Java语言基础(二) 一.变量续 (1).变量有明确的类型 (2).变量必须有声明,初始化以后才能使用 (3).变量有作用域,离开作用域后自动回收 变量作用域在块内有效 (4).在同一定义域中变量不 ...

  6. 《Python学习手册》读书笔记

    之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我 ...

  7. HTML5学习指导路线

    HTML5是现在热门的技术,经过8年的艰苦努力,该标准规范终于制定完成,在这里为想要学习HTML5初级程序员详细划分一下学习内容和步骤,让大家清楚的知道HTML5需要学什么?能够快速掌握HTML5开发 ...

  8. 序列化和反序列化及Protobuf 基本使用

    序列化和反序列化 序列化和反序列化在平常工作中会大量使用,然而并不一定非常清楚它的概念.序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式.大数据量系统设计里面更为显著.机器间的通信需要 ...

  9. hibernate连接数据库和使用

    hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibe ...

  10. 【python】xsspider零碎知识点

    1.提取url信息 urlparse() from urlparse import urlparse url = "http://scrapy-chs.readthedocs.io/zh_C ...