自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ZOJ 3329 One Person Game(概率DP,求期望)★

/*题意:有三个骰子,分别有k1,k2,k3个面。每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。当分数大于n时结束。求游戏的期望步数。初始分数为0分析:假设dp[i]表示拥有分数i到游戏结束的期望步数则 (1):dp[i]=SUM(p[k]*dp[i+k])+p[0]*dp[0]+1;//p[k]表示增加分数为k的概率,p[0]表

2016-07-31 16:17:57 488

原创 POJ 2096 Collecting Bugs (基础概率DP)

题意:(题意看题目确实比较难道,n和s都要找半天才能找到)   一个软件有s个子系统,会产生n种bug   某人一天发现一个bug,这个bug属于一个子系统,属于一个分类   每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n   问发现n种bug,每个子系统都发现bug的天数的期望。求解:         dp[i][j]表示已经找到i种bug,j

2016-07-31 15:39:15 305

转载 poj 3744 Scout YYF I (概率DP&矩阵快速幂)★

题意:  你在一条布满地雷的道路上,开始在坐标1。每次有概率P向前走一步,有概率1-P向前走两步。道中路某几个点上会有地雷,问你安全通过的概率。地雷数N思路:假设dp[i]表示安全走到i点的概率,那么dp[i]=P*dp[i-1]+(1-P)*dp[i-2]。很简单的一个转移,但是坐标范围太大了。直接递推爆内存,而且肯定也会超时。我们换一个思路,假设x[i]表示第i

2016-07-31 15:26:13 633

原创 HDU 4283 You Are the One (区间DP)

题目:有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D。但是边上有一个小黑屋(其实就是个堆栈),可以一定程度上调整上场程序题目中堆栈的寓意在于指明此题可以用区间dp,因为一段区间是连续的,dp[i][j]表明从i到j的人占据了第1到第j-i+1的名次dp[i][j]表示从第i个人到第j个人这段区间的最小花费(是只考虑这j-i+1个人,不需要考虑前面有多少人

2016-07-30 15:59:49 296

原创 LightOJ 1422 Halloween Costumes 区间DP

题意:给你n天分别要穿的衣服,可以套着穿,但是一旦脱下来就不能再穿了,问这n天要准备几件衣服。dp[i][j]为第i天到第j天要穿的最少衣服,考虑第i天,如果后面的[i+1, j]天的衣服不要管,那么dp[i][j] = dp[i + 1][j] + 1。然后在区间[i +1, j]里面找到和第i天衣服一样的日子,尝试直到那天都不把i脱掉,那么就变成dp[i][j] = dp[

2016-07-30 15:00:01 239

原创 Uva 10003 Cutting Sticks (区间dp)

题意: 有一根长度为l的木棍,木棍上面有m个切割点,每一次切割都要付出当前木棍长度的代价,问怎样切割有最小代价题解:dpij代表切割小木棍i到j的最优费用,然后枚举第一次切割位置即可(这里不能枚举最后一次切割,因为不好递推)。#include #include #include #include #include #include #include #include #in

2016-07-30 14:33:06 292

转载 HDU 2476 String painter(动态规划)★

题目大意是给定一个起始串和一个目标串,然后每次可以将某一段区间染成一种字符,问从起始串到目标串最少需要染多少步?读完题首先会想到的自然是用区间dp,但是列出来发现,没办法区间合并。因为一旦需要考虑对某一段成段染色的话,在区间合并的时候,就无法考虑转移过程中起始串的变化了。既然这样,就不考虑成段染色造成的影响了,就当起始串和目标串处处不想等。那么考虑区间[i, i+len],自然遍历

2016-07-30 11:27:21 445

原创 POJ 3280 (区间DP)

题目大意是说一个字符串,每插入或者删除一个字符都需要一定的代价,问怎样可以使这个字符串变成一个回文串,且花费最小。首先明确的就是如果已经将区间[i,j]整理成为一个回文串(不管中间有多少个字符或者是以什么字符开头或者结尾),当DP到区间[i,j+1]时,我们可以在i-1的位置添加一个str[j+1]字符,或者将在j+1处的字符删除,得到一个新的回文串,而且我们这两步操作都没有借助或者影响区间[

2016-07-30 10:07:01 252

转载 HDU 1227 Fast Food (DP)

题意 : 有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离。思路 : 状态转移方程:dp[i][j] = dp[i-1][k-1]+dis[k][j](i #include #include #include #include using namespace std;const

2016-07-29 22:56:34 275

转载 hdu 1080 Human Gene Functions( 类似最长公共子序列)

题目大意:给定两个字符串a,b;其中两个字符串中的字母两两对应都有一个权值,并且两个字符串可以任意添加空格,使得有更多的字符可以对应,例如Given two genes AGTGATG and GTTAG,可以写成AGTGAT-G -GT--TAG 这样的最终对应权值是The score of the alignment above is (-3)+5+5+(-2)+(-3)+

2016-07-29 22:11:45 333

原创 多重背包模板

//多重背包//HDU 1059//题意:价值分别为1,2,3,4,5,6的物品的个数分别为 a[1],a[2],````a[6]//问能不能分成两堆价值相等的 #include#includeint a[7];int f[120005];int v,k;void ZeroOnePack(int cost,int weight)//cost 为费用, weight 为价值 {

2016-07-29 21:53:57 222

原创 HDU 2830 Matrix Swapping II(最大完全子矩阵之可移动列)

题意:给你一个矩阵,里面的数字只有0和1两种,其中,列可以任意移动。问如何移动可以使某个子矩阵中元素全部是1,求出这个最大子矩阵的面积。解题思路:按照最大子矩阵的思路,此题的一个条件是可以将列任意移动,我们肯定要尽量将高度大的放在一起,所以,我们可以将高度从大到小排序,然后有h[i-1]>=h[i],即如果将1,2…i个矩形连在一起,它的高应该是h[i],所以面积显然是h[

2016-07-29 16:46:51 296

原创 hdu 2870 Largest Submatrix(最大子矩阵变式)

题目:统计一个字母矩阵中最大的相同字母的面积,有些字母可以换成其他字母。分析:计算分三种分别换成a,b,c求出最大的子矩阵,求出最大即可。            然后就是hdu1505#include #include #include #include #include #include #include #include #include #include #i

2016-07-29 16:31:30 350

原创 HDU 2845 Beans (最大不连续子序列和)(压缩求解)

题意:在图中取数,例如取了81之后,同一行的相邻两个不能取,还有81的上面那行和下面那行也不能取,问能取到的最大和是多少?题解:先求某一行能获得的最大值,然后求所有行能获得的最大值.#include #include #include #include #include #include #include #include #include #includ

2016-07-29 16:13:08 613

转载 hdu 2844(多重背包:0/1背包+二进制转化)★

模型:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不跨越背包涵量,且价值总和最大。办法:根蒂根基算法这题目和完全背包题目很类似。根蒂根基的方程只需将完全背包题目的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。

2016-07-29 14:57:40 688

原创 HDU 2577 How to Type(DP)

题意:要求一个字符串输入,按键盘的最少次数。有Caps Lock和Shift两种转换大小写输入的方式思路:用dpa与dpb数组分别记录Caps Lock的开关状态#include #include #include #include #include #include #include #include #include #include #include #

2016-07-29 14:19:41 269

原创 hdu1505 City Game (最大子矩阵)

这题是HDU1506 的加强版,只要把算出以i 行为底能达到的最到的最大高度,再扫描每一行,就转化为 HDU1506 的问题了,即算出以此点为最低点能两边延伸的最大距离,最大延伸距离乘以该点的高度就是面积了,HDU 2870 则是此题的加强版#include #include #include #include #include #include #include

2016-07-29 10:47:08 271

原创 hdu 1506 Largest Rectangle in a Histogram (最大子矩阵)

题意:容易理解...分析:对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下标假设为r,然后矩阵的面积就是(r-l+1)*1;我们从左到右扫一遍,求出每个点的l保存在l[]数组里,然后从右到左扫一遍,求出每个点的r保存在r[]数组里,最后可以求出最大的矩阵了。#include #include #include #include #

2016-07-29 10:17:46 254

原创 二分匹配

变种1:二分图的最小顶点覆盖在二分图中求最少的点,让每条边都至少和其中的一个点关联,这就是“二分图的最小顶点覆盖”。二分图的最小顶点覆盖数 = 二分图的最大匹配数变种2:DAG图(无回路有向图)的最小路径覆盖用尽量少的不相交简单路径覆盖有向无环图(DAG)的所有顶点,这就是DAG图的最小路径覆盖问题。DAG图的最小路径覆盖数 = 节点数(n)- 最大匹配数(m)关键

2016-07-28 09:19:13 263

原创 hdu 3666 THE MATRIX PROBLEM (栈优化快速判环)

题意:给你一个N*M的矩阵C,问是否存在一个长度为N的数列a和长度为M的数列b使得所有C(i,j)*a(i)/b(j)在L , U范围内。解题思路:有两个式子 C(i,j)*a(i)/b(j) >= L   ,  C(i,j)*a(i)/b(j) 另外,用队列有如下两种比较可靠的方法(一般情况下)1:某个点入队次数大于sqrt(N

2016-07-27 17:27:04 389

原创 关于差分约束建图的一点理解

对于对不等式a如果c小于0,则建一条a指向b权值为-c的有向边,跑一遍最长路。当然,对于多个不等式中c有正有负的,必须要统一一下,在进行算法。

2016-07-27 16:34:54 585

原创 hdu 3440 House Man (有向图的建立)(★)

题意:有n个屋子,超人从最矮的屋子开始,依次跳下比当前屋子高且最接近当前高度的屋子(即按照屋子高度增序来跳),但超人跳跃还有一个水平距离限制D,他每次跳的水平距离这题是个差束约分看sample说明问题sample34 2 10 20 16 13 超人从10开始,跳到13,但是10和13的水平距离至少为3,但超人的水平限制距离是2,所以无论怎么移动都无法跳过去,输出-1 

2016-07-27 16:12:51 598

原创 HDU 1531 King (差分约束)

题意: 问是否存在长度为n的序列满足m个条件. 每个条件描述某一段子序列和大于或者小于k.题解:差分约束的应用,用最长路可求,可添加超级源点。SPFA中,如果一个点入队超过n次,那么表明此图存在负权值回路。#include #include #include #include #include #include #include #include #includ

2016-07-27 15:05:50 624

原创 HDU1384 Intervals (差分约束系统)

差分约束基本题型:      给出一个序列,1至n这n个数字,然后已知从i 到j 的数字和至多a、至少b,给出这么一组,然后求每个数字最小为多少,或者求总和最小为多少。      于是构造,设s[i]为0到i的和,那么s[1]即为第一个数字,s[2]-s[1]即为第二个数字,于是给出的条件转换为:s[i] - s[j] >= bs[i] - s[j] s[i] - s[i-1]

2016-07-27 11:08:52 727

转载 hdu 3631 Shortest Path (floyd)

题意:给出n个点,m条边,q个操作。对两个点的路径不得经过未标记的点。操作可以标记点或者询问两个点之间的距离,若操作非法则返回指定语句,否则执行操作。作为中间点,一个点一个点插入,理解Floyd的过程即可。#include #include#include#include#define N 330#define INF 0x7ffffffusing namespace

2016-07-27 09:44:58 324

原创 hdu 1839 Delay Constrained Maximum Capacity Path(二分+SPFA)

题目大意:有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。他们要选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。一条路径的运输容量取决与这条路径中的运输容量最小的那条边。分析与总结:因为每条路径的容量取决于这条路径中所有边中的最小

2016-07-27 09:27:17 271

转载 HDU1599 find the mincost route (floyd求最小环)

题目大意:就是说8600要去旅行,给你若干个景区,8600想要找到一条路线,比如从A出发最终回到A,并且除了出发点外其余的景区不会不会重复走一遍,如V1>V2>V3>....>Vn,并且景区数不少于3.现在要求你找出一条花费最少的路径。其中数据N,M为景区数,道路数。a,b,c表示从a到b需要花费c元。 解法:就是利用Floyd算法扩展求出无向图的最小环。 注意:无向图的最小环和有

2016-07-26 11:46:54 409

原创 HDU 2224 The shortest path (TSP模板)

题目大意:给定平面上n个点的坐标,进行一次遍历,遍历的规则就是先从最左边的点遍历到最右边的点,然后从最右边的点遍历到最左边的点,而且所有点要遍历完。算法:这题完全就是双调旅途的模板求解过程:(1)首先将各点按照x坐标从小到大排列,时间复杂度为O(nlgn)。(2)寻找子结构:定义从Pi到Pj的路径为:从Pi开始,从右到左一直到P1,然后从左到右一直到Pj。在这个路径上,会经

2016-07-26 10:08:52 958

原创 hdu 1217 Arbitrage (Floyd算法)

题意:给几个国家,然后给这些国家之间的汇率。判断能否通过这些汇率差进行套利交易。Floyd的算法可以求出任意两点间的最短路径,最后比较本国与本国的汇率差,如果大于1,则可以。否则不可以。#include#include#includeusing namespace std;mapname;#define MAXN 40double g[MAXN][MAXN];//**

2016-07-25 16:55:29 325

原创 hdu 2544 最短路(Dijkstra模板)

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF

2016-07-25 15:26:25 455

原创 hdu 4081 Qin Shi Huang's National Road System(★)

题目意思是给你一个完全图,每个点有一个权值。求一棵生成树。你可以使其中一条边权值变成0.使得该边两点的权值和除以生成树的边劝和最小。思路:   具有最优解的树一定有这么一个性质。除了权值变成0的边外,其余的边都必须是最小生成树的边。   基于这点,我们就可以先求出最小生成树,然后枚举的删边。删了一条边之后就变成了两个独立集,   而我们要在这两个集合中找一条边,使得它具有最优解

2016-07-25 14:38:53 568

原创 Hdu 3938 Portal((离线+并查集) (★)

题意描述:简单的讲就是,给你一张无向图,求有多少条路径使得路径上的花费小于L,这里路径上的花费是这样规定的,a、b两点之间的多条路径中的最长的边最小值!题解:用在这题中,是因为输入中的“询问部分”,有Q 个问,每个L可以有多少种不同路径。由于大的L必定会包含到小的L, 所以把所有问题都输入,再从大到小排序,再计算,可以减少很多计算量。这题还需要用到的是并查集中的“权值”, 用rank数组表

2016-07-25 10:12:43 718

原创 hdu 1811 Rank of Tetris(并查集+拓扑)

题意:终于,Lele要开始行动了,对N个人进行排名。为了方便起见,每个人都已经被编号,分别从0到N-1,并且编号越大,RP就越高。同时Lele从狗仔队里取得一些(M个)关于Rating的信息。这些信息可能有三种情况,分别是"A > B","A = B","A 现在Lele并不是让你来帮他制作这个高手榜,他只是想知道,根据这些信息是否能够确定出这个高手榜,是的话就输出"OK"。否则就

2016-07-24 11:55:50 234

原创 hdu 1598 find the most comfortable road(枚举+并查集)

题目:Problem DescriptionXX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要

2016-07-23 15:26:03 271

原创 hdu 4315 Climbing the Hill (阶梯博弈)

转载于:http://www.cnblogs.com/jiangjing/p/3849284.html阶梯博弈:首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输..如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只

2016-07-23 09:52:19 597

转载 POJ 3922 A simple stone game(K倍减法游戏)(*)

转载于:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html题意:两人取一堆石子,石子有n个。 先手第一次不能全部取完但是至少取一个。之后每人取的个数不能超过另一个人上一次取的数的K倍。拿到最后一颗石子的赢。先手是否有必胜策略?若有,先手第一步最少取几个?思路:(1)首先k=1的时候,必败态是2

2016-07-22 16:25:03 409

原创 Hdu 1527 取石子游戏 (威佐夫博弈)

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。威佐夫博弈中必败态即奇异局势,那么任给一个局势(a,b),怎样判断它是不

2016-07-22 16:04:25 409

原创 HDOJ3032 Nim or not Nim? (sg打表)

题意:题意:规则和nim博弈取n堆石子一样,n堆石子,游戏双方每次可以取某一堆的任意个,不可以不取,还可以把一堆分成两堆,最后没办法操作的一方为输家!题解:Lasker's Nim游戏,通过打表可以发现规律#include#include#include#includeusing namespace std;int main(){ //freopen("input.

2016-07-22 15:04:00 329

原创 hdu 2897 邂逅明下

题意:每行有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完。两人轮流取,直到堆里的硬币取完,最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,如果有回答WIN,否则回答LOST。你把对应的答案发给我,如果你能在今天晚上8点以前发给我正确答案,或许我们明天下午可以再见。”小t二话没说,将自己的邮箱给了

2016-07-22 15:00:38 285

原创 HDU2188 Public Sale(巴什博弈)

巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再

2016-07-22 14:58:19 315

空空如也

空空如也

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

TA关注的人

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