递推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时间,如果提前下课了,按 ...
随机推荐
- 神秘代码让iPhone微信闪退的解决方法
14号晚,很多人的微信朋友圈中出现了这样几句话“听说苹果手机点全文就会闪退”,下方有好几行空白,需要点击“全文”才能看到,但是一旦你是在iPhone手机微信上点击“原文”后就直接闪退了,而用Andro ...
- Scheme笔记(1)
(define pi 3.14159) (define radius 10) (* pi (* radius radius)) (define circumference (* 2 pi radius ...
- IIS网站发布部署
Windows—控制面板——程序和功能——打开或关闭Windows功能——Internet信息服务(IIS),一定要选中ASP.Net. 1.打开你的VS2012网站项目,右键点击项目>菜单中 ...
- 第16章 使用Squid部署代理缓存服务
章节概述: 本章节从代理缓存服务的工作原理开始讲起,让读者能够清晰理解正向代理(普通模式.透明模式)与反向代理的作用. 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低 ...
- HDOJ 1856
#include<cstdio> #include<cstdlib> typedef struct ufse *ufset; struct ufse { ]; ]; }UFS; ...
- [ruby on rails] 跟我学之(9)删除数据
首先需要在index页加个删除链接,并提供一个删除的确认,用户确认删除时,直接删除数据. 修改views 修改 app/views/posts/index.html.erb,如下: <h1> ...
- ios抓包官方文档
OS X Programs OS X supports a wide range of packet trace programs, as described in the following sec ...
- 深入了解PooledConnectionFactory CachingConnectionFactory Sin
深入理解PooledConnectionFactory CachingConnectionFactory SingleConnectionFactory PooledConnectionFactory ...
- 【转】Python 代码调试技巧
转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ Debug 对于任何开发人员都是一项非常重要的技能,它能够帮助我 ...
- js判空
2014年9月3日 11:36:10 转载的: http://blog.sina.com.cn/s/blog_755168af0100vsik.html typeof用法 typeof的运算数未定义, ...