BestCoder冠军赛 - 1005 Game 【DP】】的更多相关文章

[题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时,他就胜出. 问最后可能有哪些人胜出,输出编号. [解释] 设dp[i][j]为剩余i个人,并且该j号报数 则状态转移方程为  dp[i][ (j+s[i]-1)%i+1 ]=dp[i-1][j] 初始时dp[1][1]=1 wow约瑟夫的递推公式太神奇了... 问题描述:n个人(编号0~(n-1))…
A rook is a piece used in the game of chess which is played on a board of square grids. A rook can only move vertically or horizontally from its current position and two rooks attack each other if one is on the path of the other. In the following fig…
LCIS 要用dp的思路想这题 [题目链接]LCIS [题目类型]dp &题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的,比如(x,x+1,...,y−1,y). &题解: 一定要抓住递增的子序列是连续的这一条件,那么dp方程就是 dp[a[i]] = max(dp[a[i]], dp[a[i]-1] + 1); 发现其实可以简化为 dp[a[i]] = dp[a[i]-1] + 1:因为计算过程中dp[a[i]]不会降低 对两个序列都求一遍,然后取两…
1.不要贪,缩小区间去dp就好. 2.预处理指数. 3.__int128可还行. #include <cstdio> #include <cctype> #include <cstring> #include <iostream> #include <algorithm> using namespace std; template <typename T> void read(T &x) { x = ; , c = getch…
Clarke and problem 问题描述 克拉克是一名人格分裂患者.某一天,克拉克分裂成了一个学生,在做题. 突然一道难题难到了克拉克,这道题是这样的: 给你nn个数,要求选一些数(可以不选),把它们加起来,使得和恰好是pp的倍数(00也是pp的倍数),求方案数. 对于nn很小的时候,克拉克是能轻易找到的.然而对于nn很大的时候,克拉克没有办法了,所以来求助于你. 输入描述 第一行一个整数T(1 \le T \le 10)T(1≤T≤10),表示数据的组数. 每组数据第一行是两个正整数n,…
[题意] 给一个图,这个图中既有有向边,又有无向边,每条边只能走一次,问图中是否存在环. 最多10^6个点,10^6个无向边,10^6个有向边 [题解] 因为既有有向边又有无向边,所以不能单纯的用tarjan判环,阻碍咱使用tarjan的主要还是无向边,显然不可以把无向边拆成两个有向边来搞,因为这条边只能走一次,拆成两条边可能来回分别走一次,就不满足题意了. 咱可以先处理无向边,无向边可能会把图连成一个个的连通块,用并查集,把这些连通块缩成一个点,注意,如果当发现某个无向边的两个端点在同一个并查…
题目大意:在nxm的方格中,从(1,1)走到(n,m).每次只能在原地不动.向右走一格.向下走一格,概率分别为p1(i,j),p2(i,j),p3(i,j).求行走次数的期望. 题目分析:状态转移方程很容易得到: E(i,j)=p1(i,j)*E(i,j)+p2(i,j)*E(i,j+1)+p3(i,j)*E(i+1,j). 代码如下: # include<iostream> # include<cstdio> # include<cmath> # include<…
Problem Description In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, the sequence <A, B, D> is a subsequence of <A,…
题目大意 给出一个长度为n的环状序列,两只兔子各自从一个点出发,一个顺时针跳,一个逆时针跳,每个时刻都要求两只兔子所在的数字是相同的,兔子最多跳一个圈~~~问兔子们最多能跳多少次 题解 一个逆时针跳,一个顺时针跳,经过的数字刚好组成了一个回文串,所以题目的要求就是求最长的回文,不过序列是环状的!怎么办?我们看看样例:2 1 1 2 1 3 答案是5 即2 1 1 2 1 3,其实就是[1,4]区间的最长回文加上[5,6]区间的最长回文,因此我们枚举中间点i,求出max(dp[1,i]+dp[i+…
在刷ZeroClock大神的区间DP专辑,遇见了ZOJ3469,完全不无从下手,然后有人说是论问题,推荐看徐源盛<对一类动态规划问题的研究>这篇论文,果断得膜拜了下,感觉好神奇,可以把未来的费用提前计算好~~~顺便把相关的三道题A了,其实都是一样的... BZOJ2037 [Sdoi2008]Sue的小球 题目大意 中文的... 题解 这是论文的例题 直接上原文的讲解吧... 把dp数组初始化为0x7fffffffWA了,改成0x3f3f3f3f就AC了... 代码: #include <…