石子合并【四边形不等式/区间dp/leetcode面试题】 本篇博文意在详细讲解如下内容F. 什么是四边形不等式S. 四边形不等式优化如何证明T. 怎么用四边形不等式优化(好气啊,这篇博文我写了两遍,第一遍的没有保存就关了) (感谢博客园的Staginner,他的博客对我有很大影响) (感谢wys大佬亲自为我查了一部分内容的错) (如果本文有什么错误的话,请向我提出,非常感谢) 这是他的博客: http://www.cnblogs.c...
1003. Emergency (25)【Dijkstra or DFS】 1003. Emergency (25)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueAs an emergency rescue team leader of a city, yo
UVA 7146 Defeat The Enemy (贪心) 题意:我方有n个士兵,对方有m个士兵,每个士兵有自己的攻击力和防御力,要派士兵过去把对方的士兵都干掉。当两个士兵相遇时,如果A的攻击力不低于B的防御力,则B就死掉了,同理如果B的攻击力不低于A的防御力,A就死掉了,可以发生两个士兵同时死亡的情况。一个士兵只能参加一次作战(即最多只能干掉对方一个敌人)。问我方能否干掉对方所有的敌人,如果能,我方最多能剩下多少士兵存活。分析:贪心题!!还学了一波m
hdu 1257 最少拦截系统(动态规划) Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里
poj 3304 Segments(贪心+直线是否与线段相交!) 题意:给你一些线段,问是否有一条直线都穿过他们。分析:直线肯定经过两个端点。枚举端点,判断直线和线段是否相交。细节要注意,判断重合点。还有就是加入只有一条线段的话,刚好直线是过同一条直线的。所以保险的做法是枚举所有的两个端点,包括同一条直线的。【这题主要还是看大神代码中的直线和线段的相交判断和判断是否有重合点啊!!几何!】#include #include
codeforces 268E Playlist(数学期望) 题意:有一个歌单,歌单里有n首歌,每首歌有他的持续时间和Manao喜不喜欢的概率,Manao按顺序听歌,有如下规则: 例如有A,B,C,D四首歌Manao listens to A, he likes it, he remembers it.Manao listens to B, he does not like it, so he listens to A, a
hdu 3466 Proud Merchants(贪心+01背包) 题意:给你n件物品,每件物品需要花费pi价钱,它的价值为vi,并且每件物品能不能被买取决于你手里的钱是否大于每件物品的qi,你有m数量的钱,问最多的价值分析:先按照q1-p1>q2-p2排序,然后01背包。大神说:就是让C商品的q不等于p,其他都相同,这时,你就会发现如果要买C商品的话,肯定得先买C商品,因为买C商品的代价最大。所以,我们可以按照qi-pi的顺序来确定大顺序。这里我们还可以
动态规划之前缀动态规划:poj 1458 Common Subsequence(最长公共子序列) 题意:给你两个字符串,求最长公共子序列分析:这题输入中间有任意空格,估计要cin和cout输入输出。还有,范围要开的够大。。【从1000改到1005才过的】 LCS 长度的递归方程C[i, j] = 0 if i=0 或 j=0C[i, j] = C[i-1, j-1] + 1 if i, j>0 且 x i = y jC[i, j] = Max(
动态规划之划分动态规划:矩阵链乘 poj 1651 Multiplication Puzzle 题意:给你n个数,进行如下操作,问最小值 For example, if cards in the row contain numbers 10 1 50 20 5, player might take a card with 1, then 20 and 50, scoring 10*1*50 + 50*20*5 + 10*50*5 = 500+5000+25
Codeforces 439D Devu and his Brother 题目:给你两个数组a,b,经过+1、-1操作使得a数组中的最小值等于b数组中的最大值,求最小操作数分析:先把两个数组里的数存到同一个数组里,然后升序排序,这样我们就得到了一条线性的数列,那么既然是n+m个数里前m个要比后n个小,也就很自然的能找到平衡点为数列当中的第m或者第m+1个数了。【傻逼地忘记c数组应该是a,b数组的大小的两倍了= =】#include#include#inclu
poj 2484A Funny Game(博弈论) 题意:给你n个相同的硬币围成一个圈,每次可以去一个硬币旁的一个或两个;问你谁最在最后都取完;分析:我真是个博弈论渣渣!! 博弈的精髓,当nSample Input1230Sample OutputAliceAliceBob#include#includeusing namesp
POJ-2234:Matches Game(博弈论,异或大法好) 题意:有M堆火柴,没堆火柴个数不同。两个人轮流取火柴,可以拿少于该堆火柴数量的个数,一次拿一堆。求先手是否一定能赢分析:好强大的推理!!(1)只有一堆,先手赢(2)两堆,一共2根火柴,后手赢 (取完一堆即可) 两堆,一共3根火柴,先手赢 (1+2格局,在2个的一堆中取1个,转化为前一种情形) 两堆,一堆2个,另一堆2个,
uva10943 How do you add?(隔板法+递推) 题意:把一个数n分解成k个数相加的形式(允许有0)。感受:本来以为组合数学题自己还是懂的一点点的,没想到啊!!高中组合数学都还给金进啦!一开始看了公式还是一头雾水(就很不爽),找了很久的解释,终于找到了详细的解释。智商仿佛在降低,看来要多补补了,哈哈哈哈哈哈哈!大神说:很裸的隔板法。引用一下维基上对隔板法的解释:现在有10个球,要放进3个盒子里
hdu 1518 Square(dfs) 题意:给你几个木棒,问能否将这些木棒头尾相接形成一个正方形分析:记录我的第一道自己敲的dfs!!!,虽然最后T了(T T)。这题要优化的地方很多,不然很容易超时。#include#include#include#includeusing namespace std;int vis[100],a[100];int m;int l; //边长(总和除以4) bool dfs(i
hdu 1584 蜘蛛牌(dfs) Problem Description蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么这些牌也跟着一起移动,游戏的目的是将所有的牌按同一花色从小到大排好,为了简单起见,我们的游戏只有同一花色的10张牌,从A到10,且随机的在一行上展开,编号从1到10,把第i号上的牌移到第j号牌上
hdu 1426 Sudoku Killer(数独 dfs) 题意:就是数独!分析:这题被大神认为是水题,我也只是有点思路,跟着大神的思路和代码敲完,一直T啊,天哪。。一定要cin输入才能不T嘛,为何??Sample Input7 1 2 ? 6 ? 3 5 8? 6 5 2 ? 7 1 ? 4? ? 8 5 1 3 6 7 29 2 4 ? 5 6 ? 3 75 ? 6 ? ? ? 2 4 11 ? 3 7 2 ? 9 ?
hdu 1016 Prime Ring Problem (dfs) 题意:输入一个n(nNote: the number of first circle should always be 1.Sample Input68 Sample OutputCase 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61
hdu 1010Tempter of the Bone(dfs+剪枝) 题意:有一个N*M的迷宫,‘.’代表能走的格子,‘X’代表墙,‘S’代表入口,‘D’代表出口,如果能在规定时间内到达出口,输出“YES”,否则输出“NO”。分析:感觉自己老是不会搜索,看了几段课程后想开始练练搜索【不知道为什么一直不喜欢搜索题,所以一直没做这个专题】,感觉这题很经典。#include #includeusing namespace std;char map[9][9]
hdu 1598 find the most comfortable road(并查集+枚举) 题意:第一行两个正整数n和m,正整数n (1 接下来的m行是三个正整数StartCity,EndCity,speed,表示从表面上看StartCity到EndCity,限速为speedSARS。speed 然后是一个正整数Q(Q 接下来Q行每行有2个正整数Start,End, 表示寻路的起终点。 求一条
poj 1511 Invitation Cards(spfa + 邻接表 + 反向思维t) 题意:第一行先给P,Q两个数,P代表公交站点的数量,Q代表有几条公交线。 接下来有Q行,每一行有a,b,c三个数,a代表起点,b代表终点,c代表花费 求从1点开始,到达每一个点,并且返回,来回最少需要多少花费。 分析:天哪,spfa求最短路真是万能啊!!大二上学了数据结构,感谢学长出了用spfa才能解决的题目,让我好好学了一下spfa,虽然也学了F