首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
[HDU6196]happy happy happy
】的更多相关文章
[HDU6196]happy happy happy
题目大意: 有一个长度为n的数列,A和B两个人轮流从两端取数,B先取,A想使分数严格小于B且尽量接近B,问两人分数之差最小是多少. 思路: 折半搜索,先预处理出长度为part的最大差最小差,再预处理出后面一段能取到的不同差值,然后dfs,当范围等于part时,就在数组中二分查找一下. #include<cstdio> #include<cctype> #include<vector> #include<ext/hash_set> inline int get…
hdu6196 happpy happy happy (meet in middle + 剪枝)
题意 从1到n共计n(<=90)个物品,每个物品有一个价值a[i],儿子和爸爸轮流做游戏,儿子先手.儿子每次选价值最大的{最左边,最右边}的物品,如果价值一样大, 则选取最左边的物品. 爸爸每次可以取最左边或最右边的物品. 问你,爸爸想要输(价格严格小),而且差值尽可能少的最小差值是多少. 分析 首先n<=90,所以应该是个搜索,而不是dp 我们来考虑一下为什么不是dp,而只能搜索? 如果题目改成爸爸想让差值最大或者最小,那么显然可以直接dp,而这里实际上求一个大于0的最小差值,相当于在所有…