自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

转载 石子合并【四边形不等式/区间dp/leetcode面试题】

本篇博文意在详细讲解如下内容F. 什么是四边形不等式S. 四边形不等式优化如何证明T. 怎么用四边形不等式优化(好气啊,这篇博文我写了两遍,第一遍的没有保存就关了) (感谢博客园的Staginner,他的博客对我有很大影响) (感谢wys大佬亲自为我查了一部分内容的错) (如果本文有什么错误的话,请向我提出,非常感谢) 这是他的博客: http://www.cnblogs.c...

2018-11-11 16:11:35 532

原创 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

2017-04-23 14:58:25 235

转载 UVA 7146 Defeat The Enemy (贪心)

题意:我方有n个士兵,对方有m个士兵,每个士兵有自己的攻击力和防御力,要派士兵过去把对方的士兵都干掉。当两个士兵相遇时,如果A的攻击力不低于B的防御力,则B就死掉了,同理如果B的攻击力不低于A的防御力,A就死掉了,可以发生两个士兵同时死亡的情况。一个士兵只能参加一次作战(即最多只能干掉对方一个敌人)。问我方能否干掉对方所有的敌人,如果能,我方最多能剩下多少士兵存活。分析:贪心题!!还学了一波m

2016-07-27 19:49:20 506

原创 hdu 1257 最少拦截系统(动态规划)

Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里

2016-07-27 16:54:08 266

原创 poj 3304 Segments(贪心+直线是否与线段相交!)

题意:给你一些线段,问是否有一条直线都穿过他们。分析:直线肯定经过两个端点。枚举端点,判断直线和线段是否相交。细节要注意,判断重合点。还有就是加入只有一条线段的话,刚好直线是过同一条直线的。所以保险的做法是枚举所有的两个端点,包括同一条直线的。【这题主要还是看大神代码中的直线和线段的相交判断和判断是否有重合点啊!!几何!】#include #include

2016-07-27 16:46:10 227

转载 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

2016-07-27 16:37:09 414

转载 hdu 3466 Proud Merchants(贪心+01背包)

题意:给你n件物品,每件物品需要花费pi价钱,它的价值为vi,并且每件物品能不能被买取决于你手里的钱是否大于每件物品的qi,你有m数量的钱,问最多的价值分析:先按照q1-p1>q2-p2排序,然后01背包。大神说:就是让C商品的q不等于p,其他都相同,这时,你就会发现如果要买C商品的话,肯定得先买C商品,因为买C商品的代价最大。所以,我们可以按照qi-pi的顺序来确定大顺序。这里我们还可以

2016-07-27 13:41:02 239

原创 动态规划之前缀动态规划: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(

2016-07-26 23:05:00 419

原创 动态规划之划分动态规划:矩阵链乘 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

2016-07-26 20:35:48 188

转载 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

2016-07-26 19:37:57 260

转载 poj 2484A Funny Game(博弈论)

题意:给你n个相同的硬币围成一个圈,每次可以去一个硬币旁的一个或两个;问你谁最在最后都取完;分析:我真是个博弈论渣渣!!            博弈的精髓,当nSample Input1230Sample OutputAliceAliceBob#include#includeusing namesp

2016-07-25 16:13:55 212

转载 POJ-2234:Matches Game(博弈论,异或大法好)

题意:有M堆火柴,没堆火柴个数不同。两个人轮流取火柴,可以拿少于该堆火柴数量的个数,一次拿一堆。求先手是否一定能赢分析:好强大的推理!!(1)只有一堆,先手赢(2)两堆,一共2根火柴,后手赢              (取完一堆即可)  两堆,一共3根火柴,先手赢               (1+2格局,在2个的一堆中取1个,转化为前一种情形)  两堆,一堆2个,另一堆2个,

2016-07-25 16:09:11 871

转载 uva10943 How do you add?(隔板法+递推)

题意:把一个数n分解成k个数相加的形式(允许有0)。感受:本来以为组合数学题自己还是懂的一点点的,没想到啊!!高中组合数学都还给金进啦!一开始看了公式还是一头雾水(就很不爽),找了很久的解释,终于找到了详细的解释。智商仿佛在降低,看来要多补补了,哈哈哈哈哈哈哈!大神说:很裸的隔板法。引用一下维基上对隔板法的解释:现在有10个球,要放进3个盒子里

2016-07-25 15:53:47 255

转载 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

2016-07-25 10:30:05 197

原创 hdu 1584 蜘蛛牌(dfs)

Problem Description蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么这些牌也跟着一起移动,游戏的目的是将所有的牌按同一花色从小到大排好,为了简单起见,我们的游戏只有同一花色的10张牌,从A到10,且随机的在一行上展开,编号从1到10,把第i号上的牌移到第j号牌上

2016-07-25 08:44:19 395

转载 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 ?

2016-07-24 21:10:30 370

原创 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

2016-07-24 19:38:01 162

原创 hdu 1010Tempter of the Bone(dfs+剪枝)

题意:有一个N*M的迷宫,‘.’代表能走的格子,‘X’代表墙,‘S’代表入口,‘D’代表出口,如果能在规定时间内到达出口,输出“YES”,否则输出“NO”。分析:感觉自己老是不会搜索,看了几段课程后想开始练练搜索【不知道为什么一直不喜欢搜索题,所以一直没做这个专题】,感觉这题很经典。#include #includeusing namespace std;char map[9][9]

2016-07-24 19:02:08 207

原创 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, 表示寻路的起终点。           求一条

2016-07-23 16:27:34 251

原创 poj 1511 Invitation Cards(spfa + 邻接表 + 反向思维t)

题意:第一行先给P,Q两个数,P代表公交站点的数量,Q代表有几条公交线。              接下来有Q行,每一行有a,b,c三个数,a代表起点,b代表终点,c代表花费      求从1点开始,到达每一个点,并且返回,来回最少需要多少花费。  分析:天哪,spfa求最短路真是万能啊!!大二上学了数据结构,感谢学长出了用spfa才能解决的题目,让我好好学了一下spfa,虽然也学了F

2016-07-23 14:45:55 207

转载 codeforces No to Palindromes!(字符串处理,不能有回文)

题意:给你两个整数n,p,n表示字符串的长度,p表示在字母表中只能用前p个字母。然后给你一个符合没有回文字串的字符串s,求是否有下一个这样的字符串且字典序比s大但最小。分析:握草啊,做完这题不小心超神排第四了,但是是因为看了大神的思路后才敲出来的【罪过罪过】。大神说:下一个满足的字符串一定是改变尽量靠右的字符才能得到(字典序), 从最右面开始找,假设当前是第i位,如果i位增加之后满足和

2016-07-22 15:53:34 771

原创 codeforces 24 Game(数学构造)

题意:给你一个数字n,1,2,3,4......,n-1,n在一个集合里,每次拿出两个数进行加或者减或者乘三种操作,每次操作结果再放入集合中,问能不能使集合最后剩下的那个数是24!不能输出“NO”,能输出“YES”,并且输出步骤! 分析:题目做着做着越觉得神奇了!!看到这题一头雾水(我还是太年轻了),看了大神的提点,才恍然大悟!!感叹现在人的脑洞真的好大啊!!关键在于凑1!!凑1!!【具体看代

2016-07-22 14:55:07 355

原创 hdu 2087 剪花布条 (kmp模板题)

看样例就知道题意,kmp模板的稍微改动Sample Inputabcde a3aaaaaa  aa# Sample Output03#include#include#include#includeusing namespace std;char t[1111],p[1111];int pi[1111];void getFail(char

2016-07-22 11:09:39 261

转载 kmp算法模板

据说是刘佳汝书籍里的模板,亲测能用:  void getFail(char* P, int* f){ int m = strlen(P); f[0] = 0; f[1] = 0; for(int i = 1; i < m; i++) { int j = f[i]; while(j && P[i] != P[j]) { j = f[j]; } f[i + 1

2016-07-22 11:00:01 191

原创 字符串搜索之BMH 算法(伪代码)

天哪,算法复杂度越来越低了,连线性的都不用了!!O(n-m)!!从后往前扫的功效!!(要匹配的字符)  逆简单算法• 如果从P的后面开始搜索?– Boyer and MooreReverse-Naive-Search(T,P)01 for s 02 j 03 // check if T[s..s+m–1] = P[0..m–1]04 while T[s+j] = P

2016-07-21 21:19:19 1140

原创 字符串搜索之KMP算法(伪代码)

之前的Rabin-Karp算法虽然在一定程度上达到了优化,但是最坏情况下也是O(nm)的复杂度。  接下来说说KMP算法,复杂度是线性的O(n+m) 前缀表• 我们可以预先计算大小为m的前缀表来存储p[q]的   值 (0     P      p  a  p  p  a  r    q  0  1  2  3  4  5  6p[q]  0  0  0  1  1

2016-07-21 20:38:20 2626

原创 字符串搜索之Rabin-Karp 算法(伪代码)

最近在听哈尔滨工业大学王宏志老师的《算法设计与分析》这门课,感觉受益匪浅。今天就记录一下有关字符串搜索的Rabin-Karp 算法。

2016-07-21 19:50:54 801

原创 codeforces G. Doctor(二分查找)

题意:有n种动物要看病,每种动物有自己最大的看病次数(ai),但是医生只看k次,问看完k次后,剩下的要看病的动物。分析:握草啊,我这个渣渣算是又领悟了一番二分查找的神奇!虽然之前有想过二分查找,但是苦于自己的思维太狭窄了。。根本没想过可以这么找啊。大神就是大神!要多多学习才是,具体讲解看代码(自己的理解而已。。)Examplesinput3 31 2 1

2016-07-21 16:21:53 337

转载 动态规划之编号动态规划:hdu 1025(dp+二分 求最长上升子序列)

题意:有两个街道,一边都是贫困城市,一边都是富有城市,要在这两边之间建公路,且不能相交。求最多能建多少条公路。分析:dp+二分假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。下面一步一步试着找出它。我们定义一个序列B,然后令 i = 1 to 9 逐个考察这个序列。此外,我们用一个变量Len来记录现在最长算到多少了首先,

2016-07-21 11:58:29 229

转载 codeforces H. DZY Loves Physics(巧证)

题意:给出一张图,图中的每个节点,每条边都有一个权值,现在有从中挑出一张子图,要求子图联通,并且被选中的任意两点,如果存在边,则一定要被选中。问说点的权值和/边的权值和最大是多少。分析:必然存在一条边数≤1的最优解假设存在最优解(G)ans最小边数>1,则点数>2ans=∑vi/∑c 由假设知对G的子图,(u+v)/c∴∑u+∑v∴(∑u+∑

2016-07-20 20:17:24 232

转载 codeforces C. Hometask(贪心)

题意:在一串文字中有一些字符对(2位)不允许出现,问最小修改数。输入时的字符对保证两个字符不同,且其中字符唯一分析:一个字串只含有某个对中的字母,这个字符对才可能存在,要破坏这个字串,就在改变出现次数最少的那个字符,由此寻找符合题意的字串,并且求出修改次数,叠加即可#include#include#include#includeusing namespace std;#defin

2016-07-20 19:45:30 397

原创 codeforces B. Combination(贪心)

题意:有N张卡牌,每张卡牌有两个值a和b,a代表能获得的点数,b代表拿了这张卡牌后还能拿多少张卡牌,拿了一张卡牌就丢掉一张卡牌。求能获得的最大点数。分析:对b从大到小排序,若b相等,对a从大到小排序,然后一张张拿,点数相加就可以。#include#include#include#includeusing namespace std;//int a[1005],b[1005];s

2016-07-20 13:32:10 241

转载 hdu 1421 搬寝室

题意: 给定n个物品,每个物品有重量,   从中选出m对,使得这m对物品重量差的平方和最小。  疲劳度:m对物品重量差的平方和分析:先对n中物品的重量排序   令dp[i][j]表示前i个物品中选j对的最小疲劳度。   则dp[i][j]可能含有第i个物品(这种情况下,第i种物品一定是和第i-1个物品配对),   则dp[i][j]=dp[i-2][j-1]+(

2016-07-20 10:12:23 158

转载 hdu 1159 Common Subsequence(最长公共子序列问题)

Sample Inputabcfbc abfcabprogramming contest abcd mnp Sample Output420#include#include#include#includeusing namespace std;int dp[1005][1005];char s[1000],t[1000];in

2016-07-19 20:44:51 213

转载 HDU 1024 Max Sum Plus Plus

题意:给定由 n个整数(可能为负整数)组成的序列a1,a2,a3,……,an,以及一个正整数 m,要求确定序列 a1,a2,a3,……,an的 m个不相交子段,使这m个子段的总和达到最大,求出最大和。分析:动态规划的思想。1.基本思路:  首先,定义数组num[n],dp[m][n]. num[n]用来存储n个整数组成的序列. dp[i][j]用来表示由前 j项得到的含i个字段

2016-07-19 20:22:58 179

转载 HDU 1506 Largest Rectangle in a Histogram(最大连续矩阵面积)

Sample Input7 2 1 4 5 1 3 34 1000 1000 1000 10000  Sample Output84000分析:我们要求最大矩形面积,那么我们应该求每个矩形向两边延伸的最大长度,最坏情况为0(n),必然TLE,那么我们可以应该DP的思想,用一个数组来保存一些结果。例如,dpl【i】表示从左边过来的最长,那么我们计算dp

2016-07-19 20:20:49 237

转载 HDU 1231最大连续子序列

Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该

2016-07-19 20:18:32 329

转载 HDU 1864最大报销额(01背包)

题意:现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。分析:1.只有A,B,C三种物品可以报销,含有其他物品的发票作废;2.单样物品的价值不能超过600;3.每张发票总价值不能超

2016-07-19 17:01:44 242

转载 HDU 2955 Robberies(01背包)

题意:有一个小偷要偷银行的钱,可是他偷每家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。问你在他安全的情况下,他最多可以偷多少钱。  分析:题目给我们的是被抓的概率,,而我们要求最大的逃跑率,需要去被抓的概率pi的补 ,即1-pi。只有逃跑率才会等于各个逃跑率之积,被抓的概率不会等于各个被抓的概率之积。  状态转移方程:dp[j]=max(dp

2016-07-19 16:56:25 159

转载 STL容器之优先队列

优先级队列,以前刷题的时候用的比较熟,现在竟然我只能记得它的关键字是priority_queue(太伤了)。在一些定义了权重的地方这个数据结构是很有用的。先回顾队列的定义:队列(queue)维护了一组对象,进入队列的对象被放置在尾部,下一个被取出的元素则取自队列的首部。priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级。这种队列不是直接将新元素放置在队列尾部,而

2016-07-15 10:48:37 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除