题目一:传送门 思路:动态规划,从每一行来看,每次更新求出这一点的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不会出现 两个数字相邻的情况:先对行进行更新,再对列进行更新. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; int a[maxn],dp[maxn]; int MAX(int x,int y) { return x>y…
题意: 每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输.对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST. 题解: 这题写的挺有意思的,要是我也能邂逅这mm就好了. 这题像是一个对称的行为,最优的策略是你取k个我就取p+q-k个,以p+q为对称点,所以对p+q取余看结果就好. 代码: #include <stdio.h> in…
巴什博奕的变形,与以往巴什博奕不同的是,这里给出了上界和下界,原先是(1,m),现在是(p,q),但是原理还是一样的,解释如下: 假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次外其他每次取得石子个数必须在[p,q]之间. 若当前石子共有n = (p+q) * r个,则A必胜,必胜策略为:A第一次取q个,以后每次若B取K个,A取(p+q-k)个,如此下去最后必剩下p个给B,所以A必胜. 若n = (p+q)* r + left个(1 < left <= p)B必胜,必胜策略为:每次…
Public Sale Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2149 Appoint description:  System Crawler  (2015-03-07) Description 尽管不想,可是现实总归是现实.Lele始终没有逃过退学的命运.由于他没有拿到奖学金.如今等待他的,就是像FarmJohn一样的农田生…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2149 Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Lele听说街上正在举行一场别开生面的拍卖会,拍卖的物品正好就是一块20亩的田地.于是,Lele带上他的全部积蓄,冲往拍卖会. 后来发现,整个拍卖会只有Lele和他的死对头Yueyue. 通过打听,L…
悼念512汶川大地震遇难同胞--选拔志愿者 HDU 2188 博弈论 巴什博奕 题意 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家.根据要求,我校也有一个奔赴灾区救灾的名额,由于广大师生报名踊跃,学校不得不进行选拔来决定最后的人选.经过多轮的考核,形势逐渐明朗,最后的名额将在"林队"和"徐队"之间产生.但是很巧合,2个人的简历几乎一模一样,这让主…
题意:容易理解. 分析:以后碰到这种类型的题,就要考虑把矩阵先按行来处理,再按列处理.先算出每行能够能够得到的最大值,然后按列处理即可. 代码实现: #include<stdio.h> #include<string.h> int n,m; ],dp[][],b[]; int max(int x,int y) { return x>y?x:y; } int main() { int i,j,res; while(scanf("%d%d",&n,&a…
题目一:传送门 思路:水题,模拟即可 题目二:传送门 思路:dp,决策每个充电站是否要充电.(决策只有搜索,DP两种解决方法) (1)考虑状态的个数,n+2个,因为除了n个还有位置0,终点len两种状态: 前一个状态可以推出后一个状态,所以可以得到循环的顺序外循环1--n,内循环i-1--0. (2)状态转移方程:dp[i]=MIN(dp[i],dp[i]+x,dp[i]+y),x表示要充电,y表示不要充电. (3)考虑x和y的求法: 如果j==0,只考虑x即可,因为第一次肯定充满电 如果j!=…
题目大意:输入一个整数t,表示测试用例是.接着输入2个整数n,m.分别表示这堆石头中石头的个数,和每次所能取得最大的石头数.判断那一方为赢家 解题思路: 1)这是一道简单的巴什博弈: 所谓巴什博弈,是ACM题中最简单的组合游戏,大致上是这样的: 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取1个,最多取m个,最后取光者得胜. 显然,如果n = m + 1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:…
点这里去做题 最简单的巴什博奕 ,凑m+1 #include<bits/stdc++.h> int main() { int T,n,r,m; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); r=n%(m+); ) printf("second\n"); else printf("first\n"); } ; }…