递推DP 赛码 1005 Game
- /*
- 递推DP:官方题解
- 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜
- 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩下i − 1个人时的位置
- (假设BrotherK所处的位置是1),然后利用之前计算出的F值判定此人是否可能获胜
- 时间复杂度为O(n3)
- dp[i][j] 表示有i个人,j位置的人是否可能胜利。dp[1][0] = 1; cnt = sum (dp[n][i]);
- 有最优化子结构,i个人可以由i-1个人的情况中每个能胜利的位置再走一步
- 取余小技巧:0~n-1
- */
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #include <cstring>
- #include <string>
- #include <map>
- #include <vector>
- #include <set>
- #include <cmath>
- #include <queue>
- using namespace std;
- const int MAXN = 2e2 + ;
- const int INF = 0x3f3f3f3f;
- int dp[MAXN][MAXN];
- int s[MAXN];
- int main(void) //赛码 1005 Game
- {
- //freopen ("E.in", "r", stdin);
- int t, n, m;
- scanf ("%d", &t);
- while (t--)
- {
- scanf ("%d%d", &n, &m);
- for (int i=; i<=m; ++i)
- {
- scanf ("%d", &s[i]);
- }
- memset (dp, , sizeof (dp));
- dp[][] = ;
- for (int i=; i<=n; ++i)
- {
- for (int j=; j<n; ++j)
- {
- if (dp[i-][j])
- {
- for (int k=; k<=m; ++k)
- {
- dp[i][(j + s[k]) % i] = ;
- }
- }
- }
- }
- int cnt = ;
- for (int i=; i<n; ++i) if (dp[n][i]) cnt++;
- printf ("%d\n", cnt); int x = ;
- for (int i=; i<n; ++i)
- {
- if (dp[n][i])
- {
- printf ("%d", i + ); ++x;
- if (x < cnt) printf (" ");
- }
- }
- puts ("");
- }
- return ;
- }
递推DP 赛码 1005 Game的更多相关文章
- 递推DP URAL 1167 Bicolored Horses
题目传送门 题意:k个马棚,n条马,黑马1, 白马0,每个马棚unhappy指数:黑马数*白马数,问最小的unhappy值是多少分析:dp[i][j] 表示第i个马棚放j只马的最小unhappy值,状 ...
- 递推DP URAL 1017 Staircases
题目传送门 /* 题意:给n块砖头,问能组成多少个楼梯,楼梯至少两层,且每层至少一块砖头,层与层之间数目不能相等! 递推DP:dp[i][j] 表示总共i块砖头,最后一列的砖头数是j块的方案数 状态转 ...
- 递推DP URAL 1260 Nudnik Photographer
题目传送门 /* 递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数 */ #include <cstdio> #include <algorithm> ...
- 递推DP URAL 1353 Milliard Vasya's Function
题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...
- 递推DP URAL 1119 Metro
题目传送门 /* 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 递推DP:仿照JayYe,处理的很巧妙,学习:) 好 ...
- 递推DP HDOJ 5328 Problem Killer
题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...
- hdu1978(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始:外循环扫描所有点dp[x][ ...
- 递推DP URAL 1031 Railway Tickets
题目传送门 /* 简单递推DP:读题烦!在区间内的都更新一遍,dp[]初始化INF 注意:s1与s2大小不一定,坑! 详细解释:http://blog.csdn.net/kk303/article/d ...
- 递推DP UVA 607 Scheduling Lectures
题目传送门 题意:教授给学生上课,有n个主题,每个主题有ti时间,上课有两个限制:1. 每个主题只能在一节课内讲完,不能分开在多节课:2. 必须按主题顺序讲,不能打乱.一节课L时间,如果提前下课了,按 ...
随机推荐
- Lua中的常用函数库汇总
lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...
- js打印(控件)及多种方式
非常好用的LODOP打印控件 Lodop打印控件简单使用方法 1.安装. 2.调用LodopFuncs.js文件. 3.增加OBJECT对象 <script language="jav ...
- [Effective JavaScript 笔记]第48条:避免在枚举期间修改对象
注册列表示例 一个社交网络有一组成员,每个成员有一个存储其朋友信息的注册列表. function Member(name){ this.name=name; this.friends=[]; } va ...
- Unity3D Optimizing Graphics Performance for iOS
原地址:http://blog.sina.com.cn/s/blog_72b936d801013ptr.html icense Comparisons http://unity3d.com/unity ...
- CH round #55 Streaming #6
T^T Saffah大神照样刷我这样诚心诚意想做一套NOIP模拟题的蒟蒻. 第一题 九九归一 好diao的名字... 题意就是给定一队$n,q$,求在模$n$意义下一个数$x$自乘的循环节长度. 当$ ...
- 如何在android的mk文件添加依赖已经编译好的库
用$(MY_LIB)是代表你的库的所在目录,目录结构是这样 MY_LIB |---include |-----xxx.h |-----xxx.h |---lib |----MYLIB.a LOCAL_ ...
- 让Delphi的DataSnap发挥最大效率
让Delphi的DataSnap发挥最大效率 让Delphi的DataSnap发挥最大效率 一个DataSnap的应用程序由两个层组成: DataSnap服务器,它有一个带有一个或者更多DataSet ...
- Java for LeetCode 063 Unique Paths II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- tomcat启动,输出system.out.println()
tomcat6.0在使用System.out.println("aa")的时候,用cmd启动startup.bat,弹出的那个cmd窗口看到 还可以看logs/catalina.o ...
- 【USACO】milk3
倒牛奶的问题, 开始看感觉跟倒水的问题很像, 想直接找规律, 写个类似于循环取余的代码. 但后来发现不行,因为这道题有三个桶,水量也是有限制的.只好用模拟的方法把所有的情况都试一遍. 建一个state ...