自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Aszxqw

新博客地址 http://yanyiwu.com

  • 博客(239)
  • 收藏
  • 关注

原创 POJ 1204 Word Puzzles [ Trie树 模板题]

题意:从一个字母表里面找出目标字符串。思路:很裸的字典树。#include#include#include#include#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))#define Abs(a) ((a)>0?(a):(-(a)))#define llong l

2012-04-09 12:13:05 1449

原创 POJ 2983 Is the Information Reliable? [ 差分约束系统 spfa]

思路:差分约束还是很神奇。我的理解,本质是在对N个点排序,这么多点之间有距离关系,因为存在V这种模糊距离关系,所以距离关系有约束。顾用差分约束系统来解决。主要差分方程:1.i-j>=w && i-j=-w);2.i-j>=1;spfa松弛方程if(d[v]d[v]=d[u]+w;即d[i]始终保存节点i的取值范围的左边界。然后则是

2012-04-08 22:28:26 558

原创 文本语音朗读软件 c#程序

首先安装微软的Speech Application SDK(SASDK),它的最新版本是SAPI 5.1 他能够识别中、日、英三种语言,你可以在这里下载:http://www.microsoft.com/speech/download/sdk51/需要安装这两个文件Speech SDK 5.1和5.1 Language Pack,其中5.1 Language Pack可以选择安装支持的

2012-04-08 15:54:18 1100

原创 POJ 1189 钉子和小球 [dp]

思路:简单dp,手工模拟一下概率的计算过程就知道怎么做了。#include#include#include#include#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))#define llong long long intusing namespace std;const in

2012-04-07 18:17:14 758

原创 POJ 1208 The Blocks Problem [模拟]

题意:堆积木问题,四个移动条件要读对。思路:数据量小,直接模拟即可。#include#include#include#include#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std;const int N=30;const i

2012-04-04 14:43:19 1615

原创 POJ1414 Life Line [暴搜]

题意:一个游戏,题目很长讲的都是游戏规则,不难懂。思路:因为数据量小,直接暴力深搜即可。#include#include#include#include#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std;const int N=15;

2012-04-04 09:43:28 1061

原创 POJ 1926 Pollution

题意:给定一个图,注入一定污染物,问最后污染物均分到每个点是多少?思路:每个点有固定的入度(入度和出度一样,因为是双向边)。同一个连通集合里的点,污染物是按入度分配。因为数据量小,连通集合直接用floyd即可。其实思路很简单,单色wa很多是有陷阱:1.孤立点。2.输入是real number3.输出每组数组要后面接一个空行。#incl

2012-04-03 14:37:57 1098

原创 POJ 1989 The Cow Lineup [dp]

题意:给定一串长度=n,数字大小问最短的不属于该序列子串的串长度为多少。这个串的数字都思路:说是dp,我觉得本质其实所找规律。拿范例来说。前8个数字已经使1,2,3,4,5都至少出现一次。所以前8个数字可以归为一个集合。然后再发现后6个数字也是1,2,3,4,5都至少出现了一次,也归为一个集合。最后的答案数是集合数+1.其实这种题目都是灵感很

2012-04-03 12:29:13 1115

原创 POJ 1958 Strange Towers of Hanoi [dp]

题意:汗诺塔问题。改成4个柱子了,解法已经在题目中给定。思路:其实就两个状态方程:dp3[i]=2*dp3[i-1]+1;dp4[i]=Min(dp4[i],2*dp4[k]+dp3[i-k]);ps:什么我觉得linux下的csdn博客编辑比windows下的好看多了。#include#include#include#incl

2012-04-01 19:56:13 605

原创 POJ 2029 Get Many Persimmon Trees [dp]

题意:给一个矩阵,里面分布着n个星号。给定一个小矩阵,问最大可以圈进多少个星号。思路:dp方程:dp1[i][j]=dp1[i-1][j]+dp1[i][j-1]-dp1[i-1][j-1]+a[i][j];//代表从(1,1)到(j,i)圈进的星数。dp2[i][j]=dp1[i][j]-dp1[i-ty][j]-dp1[i][j-tx]+dp1[i-ty][j-tx];

2012-03-30 19:59:25 648

原创 POJ 2181 Jumping Cows [贪心]

题意: 给定一个数字串,按奇偶顺序挑选几个数字,+奇选的数字-偶选的数字,问怎样顺序挑选使最后的和最大。思路:O(n)贪心。本质上其实是在对这个串进行分割,分割成若干段,每个段里面有一个最大值,一个最小值,且最大值在最小值前面。O(N)去遍历,先找出最大值,然后找出最小值,就算完成一个子段。至于最后的子段肯定是只有最大值,所以只需在读取的串最后面加一个数字0即可。

2012-03-29 20:29:06 801

原创 POJ 2184 Cow Exhibition [dp 背包]

题意:给定两串数字,有正有服,求出最大和,且这个和的状态下满足任一边都不为负。思路:dp。说是背包,但是其实完全不懂背包的也可以做出来。本质就是用dp数组来记录状态,然后依次增加状态和更新而已。。值得注意的就是对负值平移成非负的。linux环境下vim编辑器a掉的第二道题,很艰难,没少gdb。强烈意识到要开始改装一下vim成ide了,利其器。#i

2012-03-27 21:31:45 666

原创 POJ 2192 Zipper [dfs+剪枝 || dp]

题意:给定三个字符串,如果前两个可以拼装成第三个,则输出yes,否则输出no。思路:1:DFS:最直观的思路是可以用dfs去搜,从第三个字符串为目标串去dfs(0,0,0)。如果在第一个串里字符匹配,则dfs(i+1,j,k)。这种dfs本质所在搜一刻二叉树。但是我觉得这种ac了说明数据弱,否则因为这种dfs需要回溯,很容易超时。不过ac也是看了disc

2012-03-26 17:43:47 639

原创 POJ2231 Moo Volume [简单dp]

题意:给定n个数字。问任意两数之间的差的总和是多少。思路:先从小到大排序。然后dp转移方程:dp[i]=dp[i-1] + (i-1)*(a[i]-a[i-1]);最后结果是ans=dp[n]*2;(因为噪声计算是双向的)其实与其说是dp,还不如说是找规律。这样的时间复杂度是sort的时间复杂度O(nlogn)。#include#include#

2012-03-24 14:02:53 1739 1

原创 POJ2329 Nearest number - 2 [BFS]

题意:给定一个矩阵。定义好距离的表达式。如果这个矩阵有0,则找出离它最近的非0数填充之,然后这个最近非零数不只一个,则不填充。思路:我不明白这题为啥归类到DP了。很显然是广搜啊。由距离的定义我们可以知道每次广搜都是上下左右地移动即可。不难写,但是要注意就是如果调用stl里面的queue则超时。#include#include#includ

2012-03-24 11:46:10 1009

原创 POJ 2336 Ferry Loading II [贪心 DP]

题意:摆渡:每次可以摆渡n辆车,摆渡要来回的,去和返的时间一样都是t,有m辆车需要摆渡。这m辆车抵达码头的时间给定。问如果摆渡,可以使摆渡完所有的车的时间最少。且输出这个条件下,最少的来回数。思路:贪心+dp。现在要满足总时间最少,则最晚抵达的车要尽早摆渡过岸。假设最晚抵达的车,车号为m的时间为 40。则最后一趟摆渡出发的时间可以是t>=40的区间都可以

2012-03-23 22:45:25 1057

原创 POJ 2346 Lucky tickets [DP]

题意:n位长的十进制数序列显然有10^n种。问满足前n/2序列数和等于后n/2序列数和的种数多少。思路:dp [ i ][ j ][ k ]:代表前i位和为j,后i位和为k的种类数。转移方程:dp[i][j][k]+=dp[i-1][j-wj][k-wk];#include#include#include#include#include

2012-03-23 13:17:20 1089

原创 POJ 2353 Ministry [DP]

题意:给定一个m x n矩阵,要求从上到下寻找一条最短路径,这条最短路径顺序必须是从小到下,每一层的时候向左向右都行。思路:申请数组如下:dp [ i ] [ j ] :抵达第i层第j个点的最小消耗。pre [ i ] [ j ]:抵达第i层第j个点的前一个点,即保存路径。因为每个点的pre点只有三种情况,上左右,所以当 pre [ i ] [ j ]==j时,即代表是

2012-03-22 18:48:44 826

原创 POJ 2356 Find a multiple [抽屉原理]

题意:给定n个正数,请你从中找出若干个数,其和刚好是n的倍数。思路:抽屉原理。sum[0]=0;sum[i]=(a[1]+a[2]+a[3]...a[i])%n;如果存在i>0 使得sum[i]=0;则直接输出a[1],a[2],,....a[i]即可满足题意。如果不存在,考虑sum[ j ]-sum[ i ]=a [ i+1 ],a[ i+2 ]....a[

2012-03-22 16:51:48 1688 1

原创 POJ 2385 Apple Catching [DP]

题意:很久很久以前,山上有两棵苹果树,每一分钟,其中一棵就会掉下一颗苹果。树下有一只牛,好吃懒做。每一分钟只可以出现在某一棵苹果树下面,因为他没有买分身斧,dotaer都懂的。问给定一个奔跑次数,怎样奔跑才能吃到的苹果数量最多。思路:dp。申请一个二维数组dp [ j ] [ w ] 。j 代表此状态下 剩余奔跑速度 j 的条件下 ,站在w树下的最大吃到苹果树

2012-03-22 12:57:33 1070

原创 POJ 2392 Space Elevator [DP 多重背包]

题意:给定n种砖块,每种砖块有c个,高度是w,在h高度下可以使用。问怎样累加可以使总高度最高。思路:如果没有h高度约束的话显然是直接全部相加即可。用dp解决,每个高度值 j 是一种状态。所以其实本质是背包问题。因为每种砖块是有限个,所以是多重背包。用二进制优化时间。但是因为h高度约束的问题,每个状态 j 只可能由 高度约束 h >=j 的砖块 有关。所以要先由h高度

2012-03-22 10:32:14 482

原创 POJ1129 Channel Allocation [图染色 暴搜]

题意:给定一个图。如今要给每个点分配一个频段(可视为染上一种颜色)。要求如果某两个点之间有边,则染上的颜色不能相同。为如何颜色可以使使用的颜色数最少。思路:因为数据量N从1到n依次染色,初始时染色点1为颜色1,即color[1]=1;对于每个点,他的颜色可能值用一个has数组表示。如果它与已经染色的点之间有边,则将该has值赋值true。然后遍历该has数组,找

2012-03-14 10:51:33 546

原创 POJ 2676 Sudoku [暴搜]

题意:给定一个9*9矩阵,矩阵值只为0到9;0代表需要你去填充的格子。只能用1到9中的数字填充。问怎样填充可以满足三个约束条件,分别是:横看,竖看,3*3方格看,都刚好是1到9各个数字不重复。思路:暴搜。看了discuss以为很复杂。其实不会。不过就是需要用bool row[N][N];bool col[N][N];bool sqr[N][N];三个哈希数组来判

2012-03-14 09:43:40 440

原创 POJ 2531 Network Saboteur [暴搜]

题意:给定一个图,矩阵表示边权值。问怎样分配N个点进两个集合,可以使这个集合之间的边的权值和 最大。思路:因为N无需任何优化,直接173MS AC掉。#include#include#include#include#include#include#define llong long long#define Min(a,b) (a<b?a:b)#def

2012-03-13 22:23:27 488

原创 POJ1656 Counting Black [简单暴力]

题意:给定100*100的方格,每次涂颜色或者问颜色操作。思路:以为数据量太小,直接暴力模拟而过。A水题真是一种陶冶。#include#include#include#include#include#include#define llong long long#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?

2012-03-13 13:29:35 931

原创 POJ1595 Prime Cuts [暴力打表]

题意:给定一个数字n,将1到n中的所有质数按照中心值为c的规定输出,具体规定题目写得很清楚。思路:简单的暴力打表题。调智能车调得郁闷,找个水题A掉缓冲一下心情,所以这题就这么牺牲了。#include#include#include#include#include#include#define llong long long#define Min(a

2012-03-13 13:05:17 1274

原创 POJ1724 ROADS [最短路变形 二维dp+spfa]

题意:给定金钱数量k,城市数量n,单向边数量m。每条单向边有两个指标w:距离;cost:花费金钱数。问在花费小于等于k的情况下,最短的路程是多少。思路:申请一个二维dp[n][k];dp[i][j]代表在花费j的条件下到达第i个城市的最短路程值。这个二维数组dp初始化值为inf。对dp[1][0]=0;然后用spfa进行处理,不断优化整个dp数组的值。但

2012-03-10 11:01:57 845

原创 POJ2421 Constructing Roads [最小生成树 prim]

题意:很裸的最小生成树。思路:将已经建造的边赋值为0,然后进行prim就ok。#include#include#include#include#include#define llong long long#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?a:b)#define Abs(a) ((a)>0?(a):

2012-03-08 20:06:23 508

原创 图论算法模板整理

最短路系列:spfa:#define Min(a,b) (a<b?a:b)#define Max(a,b) (a>b?a:b)#define Abs(a) ((a)>0?(a):-(a))#define Mod(a,b) (((a)-1+(b))%(b)+1)int n,m;int d[N];struct { int v,w,next;}edge[2*M]

2012-03-07 19:02:48 1384

原创 BOJ 热身赛 F题 解题报告 [最大流最小割 dinic]

题目在下面链接:点击打开链接F  Panic RoomDescriptionYou are the lead programmer for the Securitron 9042, the latest and greatest in home security software from Jellern Inc. (Motto: We secu

2012-03-01 09:49:15 859

原创 POJ 3159 Candies [差分约束系统 SPFA+STACK]

题意:有一包糖果要分给n个学生,对于输入数据u v w代表学生v得到的糖果数比学生u得到的糖果数 至多可以多出w个。问满足条件的情况下,学生n比学生1至多可以多出多少个糖果。思路:很显然的差分约束方程求解问题。先根据u v w构造差分方程:d[ v ]-d[ u ]再用该方程建图:addedge(u,v,w):建立一条从u出发到v的权值为w的单向边。然后进行spfa找出

2012-02-28 21:22:46 634

原创 POJ1201 Intervals [差分约束系统 SPFA]

题意:给定m个区间,且在每个区间内必须至少取有w个数,如果取数可以使总的区间取的数个数最少。思路:差分约束系统 最短路求最优解先是根据题目条件构造一个差分约束系统。例如题目给的条件 u v w,可以转化为d[u]-d[v-1]>=w这个约束条件。所以依次可以得到d[7]-d[2]>=3;d[10]-d[7]>=3;d[8]-d[5]>=1;d[3]-d[0]

2012-02-28 19:19:26 578

原创 POJ3662 Telephone Lines [二分 最短路]

题意:题目描述得挺隐晦。但是本质就一句话:求一条"最短路":第k+1大的边最小的"最短路"。思路:二分加最短路判定。最答案进行二分。然后按照二分的值用0,1处理整个图:将比二分值大的边都置为1,将比二分值小的边都置位0。然后进行找1到n的最短路,如果值小于K,则这个二分值满足题意。再继续二分,直到找到最优解。#include#include#include

2012-02-27 17:32:07 1410

原创 POJ1511 Invitation Cards [最短路,dijstra+heap,spfa]

题意:给定节点数n,和边数m,边是单向边.问从1节点出发到2,3,...n 这些节点路程和从从这些节点回来到节点1的路程和最小值。思路:很显然的最短路,先以1为起点进行一次最短路,然后再将边反向一下再以1为起点进行一下最短路。这题的意义在于数据,一般的dijstra的O(N^2)显然没法过。先用dijstra+heap试试。(以前被这个heap唬到了,其实heap直接用pr

2012-02-23 12:21:43 3582

原创 POJ1151 Atlantis [离散化]

题意:求矩形合并的总面积。思路:想练一下离散化专门找的题目。很好的一道题,没用线段树,因为N=100,所以直接离散化则可以O(N^2)求出。更具体的可以参看下面链接:http://www.cppblog.com/RyanWang/archive/2009/02/22/74612.html#include#include#include#incl

2012-02-22 12:30:25 735

原创 POJ3638 Moogle [DP]

题意:花了不少时间才读懂。根据例子说吧,0 9 20 40 ,n=4,m=3,即可以存储3个,但是显然头尾0和40必须存储。所以还可以存储一个,显然取20,这样可以根据公式退出i=2的这个位置的值是10,和9的误差为1,最后输出误差之和/n的值。所以第二个例子:10 40 10 19 30 40 90 140 190 202 210最佳方案是取0 40 190 210

2012-02-19 12:52:51 784

原创 POJ3666 Making the Grade [DP,离散化]

题意:给定一个序列,以最小代价将其变成单调不增或单调不减序列,这里的代价看题目公式。思路:很容易想到是DP。1.对前i个序列,构成的最优解其实就是与两个参数有关。一个是这个序列处理后的最大值mx,和这个序列处理的代价值cost。显然最大值mx最小最好(这样第i+1个值可以不花代价直接接在其后面的可能性更大),cost最小也最好(题意要求),但是两者往往是鱼和熊掌。用dp

2012-02-18 22:26:30 8145 2

原创 POJ1179 Polygon [DP 矩阵链乘]

第一道矩阵链乘。特地翻了一下算法导论里面的矩阵链乘,感觉其实就是可以用递归去递归到一个最优解。但是递归的过程有冗余,这些冗余用记忆化DP可以处理掉,本质其实是递归树的剪枝。代码写挫了,但是AC心情好,不管了。#include#include#include#define Abs(a) ((a)>0?(a):-(a))#define Mod(a,b) (((a)-1+(b))

2012-02-18 13:12:50 1238

原创 POJ2559 Largest Rectangle in a Histogram [单调栈]

题意:给定多个矩形,求最大的合并面积。思路:和POJ2082【前一篇文章】一样的题目。还是单调栈的应用,关键还是理解单调时候可以用O(N)的算法处理,所以处理成单调栈。本质思路参看前一篇文章。不过注意要用__int64或者long long。#include#include#include#include#define max(a,b) (a>b?a:b)

2012-02-09 17:29:11 763

原创 POJ2082 Terrible Sets [DP 单调栈]

题意:能把题目写得这么纠结真是种境界。本质即是给定一定顺序的矩形,每个矩形都紧挨着x轴,问最大的矩形面积是?思路:1.O(n^2)的暴力法:#include#include#include#include#define max(a,b) (a>b?a:b)#define abs(a) ((a)>0?(a):-(a))#define min(a,b) (a<b

2012-02-09 13:36:50 2250

空空如也

空空如也

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

TA关注的人

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