自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 ACM计算几何题目推荐

//第一期计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考

2013-07-04 12:07:16 358

原创 SGU分类及解题链接

101 Domino 欧拉路102 Coprime 枚举/数学方法103 Traffic Lights 最短路104 Little Shop of Flowers 动态规划105 Div 3 找规律106 The Equation 扩展欧几里德107 987654321 Problem 找规律108 Self-numbers II 枚举+筛法递推109 Magic

2013-05-15 08:28:03 744 3

原创 POJ 1062 昂贵的聘礼(图论|最短路)

如果去掉等级的限制,那么就可以抽象成一个图,每一个交易物品可以是一个定点,其权变就是交易的金额。设一个初始定点0代表什么都没有,所以从0到一个物品也就是这个物品的直接价格。从一个顶点到另一个顶点的权边也就是说在拥有了 s 后要得到 e 的金钱。由此可以建图求解,注意是要从0走到1(酋长的物品)此外,就是要处理等级限制的问题(等级制度害死人啊),这里没有一个一劳永逸的解法,但是由于等

2014-01-11 21:13:45 407

原创 POJ 2253 Frogger(图论|最短路)

题意就是求所有可行通路里两点距离最大值的最小值,说起来比较绕,其实也就是说青蛙所有跳法里面每一种路径的最大跳的最小值。裸一个floyd维护其 s 到 e 的最小值即可/*裸一个floyd,注意这里的边权不是相加而是取最大数*/#include#include#include#includeusing namespace std;#define N 220#define

2014-01-11 21:06:05 401

原创 POJ 3259 Wormholes(图论|最短路)

这题跟跟上一题思想类似,即要找一个负环,但具体实现有些不同:1.地上的同路是双向的,但虫洞是单向的,构图需要注意。2.这道题没有一个开始节点,但我们知道如果出现负环,那么就会一直减下去,所以开始的时候可以把所有点的距离取任意值,这也是为什么很多人写这道题根本没有数组的初始化。#include#include#includeusing namespace std;#de

2014-01-11 15:11:36 415

原创 POJ1860 Currency Exchange(图论|最短路)

题目意思其实就是要找一个正环,这里用到bellman-ford算法(其实什么算法无所谓,能找到那个环就可以),bellman-ford思想就是如果有v个定点,放缩v-1次,每次放缩用所有的边去更新其他节点,那么如果再更新发现还可以改变某些节点的权值,显然就是存在环(正环负环都一样)。#include#include#includeusing namespace std;#define

2014-01-11 11:39:49 440

原创 HDU 4763 Theme Section ( KMP )

题意很简单,给一个串,让你找一个子串,形如EAEBE,就是一个串在开头结尾中间各出现一次,问这个E最长是多少。比赛的时候各种拙计,想了一个很土鳖的方法,不知道怎么写RE了,个人觉得应该可以过(很土鳖就不介绍了)。然后看了一个大神的博客,写的真好啊,用KMP中next数组的性质,就是您老中间那个循环为什么打死我也看不懂啊,然后一天没有了,然后,我把中间循环去掉,发现根本就是无用的,给跪了,不过依

2013-09-30 21:36:46 459

原创 POJ 1661 Help Jimmy(DP)

地址:http://poj.org/problem?id=1661解法:这题说穿了还真没什么难的,将所有线段按高度排序,然后dp求解一个lefttime[i],righttime[i]分别表示从i线段左端跳下去和右端跳下去的最短落地时间(如果会摔死直接返回MAX),既然保证有解也就不用判断MAX了。PS:为什么要把这题贴出来呢?因为我昨天晚上居然傻逼呵呵的先用线段树去求每个端点的下一个线段

2013-08-28 17:34:57 392

原创 CF 339C Xenia and Weights 背包

地址:http://codeforces.com/contest/339/problem/C题意:给1-10种重量的砝码,求一个序列,左右依次放,每次放后天平的倾斜会改变且连续两个数不相等。解法:比赛时候脑残YY个贪心,然后怒跪,叉姐说了是背包,当时居然毫无感觉。dp[n][sum][last]表示第n轮放的天平的值是sum,而最后一个放的砝码是last,那么,一个裸背包诞生了,注

2013-08-27 10:52:47 805

原创 CF 10D - LCIS 区间DP

原题:http://codeforces.com/problemset/problem/10/D题意:找到两个串的最大上升子串·。解法:dp[ i ] [ j ]表示第一个串到i第二个串到j且以j结束的最长上升子串的长度,那么:if(s1[ i ]!=s2[ j ]) dp[i][j]=dp[i-1][j];else dp[i][j]=1+max(dp[i-1][k]);(

2013-08-26 21:19:21 458

原创 CF12D 区间DP

D. LCIStime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThis problem differs from one which was on the online contest.

2013-08-26 21:05:14 119

原创 HDU 3068 最长回文

据说能卡掉后缀数组的神题(-_-当然我还不会后缀数组),刚学了个manacher算法show一下,目测写的很挫。。。  #include#include#includeusing namespace std;#define N 110010char a[N<<1];char b[N];int p[N<<1];int main(){ wh

2013-08-12 20:19:27 396

原创 HDU 4612

给一个连通的无向图,随意添加一条边要使添加后的桥最少。缩点后求出树形图的直径,总的强连通分量-直径就行了。要手动扩栈,之后用C++交。第一次用Tarjan算法,之前一直在逃避图论,真去学了,也没什么难的,代码敲了两遍,第二次果断1A了,一如做过的题,还有必要再做一遍。#pragma comment(linker,"/STACK:102400000,102400000")#includ

2013-08-11 18:38:53 495 1

原创 POJ 1014 Dividing(DP)

简直弱到不行,想用单调队列优化秀操作居然还给写错了WA了好几次,怎一个弱字了得。。。。#include#includeusing namespace std;int a[7];bool dp[120010];int main(){ int i,j,cas=1; while(1){ memset(dp,0,sizeof(dp)); i

2013-08-09 20:56:35 392

原创 POJ 1740 A New Stone Game

卡了一晚上的博弈终于想通,获得成就3/8男人。。。。。 /* 从昨晚开始想,到现在终于想通了,终于独立思考弄出来一题了,泪崩。。。 题意: 现在有n堆石子,两个人轮流取,每人一次取至少一个石子,然后将该堆石子挪任意到其他堆(当然可以不挪) 而要注意的是,只要有石子,就可以挪向不止一堆 思路: 我们推倒从1-

2013-08-07 11:29:43 438

原创 POJ 1742 Coins(多重背包|单调队列优化)

用二分拆包就TLE了,学了个单调队列优化,具体东西写在代码的注释中。奋战LTC的男人八题,两天两道题,成为1/4男人,3/4不明生物,所以。。。。至今情况不知道算是阴阳人还是人妖。。。。底下的如果没解完八题的仔细琢磨下再喷我。。。。/* 这是我至今遇到的最恶心的多重背包,居然可以把二分拆包卡掉,ORZ LTC。。。 不过确实很有意思,题意为有n种钱币,每种钱币面值a[i

2013-08-07 10:47:19 583

原创 POJ 4035 Maze(树形DP|期望)

题意:给一个树状图,从屋子1开始,等概率选择一条路走过去,对于屋子 i 会有概率 ki 被杀死(被传送到屋子1),ei逃脱(结束),问逃脱的期望是多少。思路:用 dp [ i ] 表示在屋子 k 逃脱的期望步数,那么有以下可能:1.被杀死,概率为k [ i ]那么被转移到dp[ 1 ] ,注意此时不产生步数的消耗(刚开始没考虑结果没过样例)2.跑掉,那么就终止了,概率e [ i ] ,

2013-08-06 12:14:48 457

原创 POJ 2151 Check the difficulty of problems

基本就是DP吧,统计下不爆零的概率减去小于n题且不爆零的概率就可以水过。。。这题边界可能有点多,写的时候注意下#include#includeusing namespace std;#define T 1010#define M 40int m,t,n;double p[T][M];double dp[T][M][M];double sum[T][M];int ma

2013-08-05 20:09:38 376

原创 HDU 3853 LOOPS

水题,注意有一种永远留在当前的情况要判断下,如果是直接跳,因为这个位置是不可能到达的(不然怎么算概率)//注意trick#includeusing namespace std;#define eps 1e-5#define N 1010double dp[N][N];double st[N][N];double right[N][N];double down[N][N];i

2013-08-05 20:06:28 367

原创 POJ 4089 Activation

题意:N个人在排队注册账号,只能队头的人注册,但是服务器不太好会产生以下四种情况:1.激活失败:此时排队的队形不变,等待下一个时间 此种概率为p12.断开连接:此时队头人离开到队尾继续排队,原来在他后面的人前移,概率为p23.注册成功:队头人离开 后面的人前移,概率为p34.服务器崩溃:大家都没得玩了 概率为p4想知道在N人排队,且自己排在前k个位置内服务器崩溃的概率。标记

2013-08-05 20:03:35 452

题意:有n个人排队等着在官网上激活游戏。Tomato排在第m个。对于队列中的第一个人。有一下情况:1、激活失败,留在队列中等待下一次激活(概率为p1)2、失去连接,出队列,然后排在队列的最后(概率为p2)3、激活成功,离开队列(概率为p3)4、服务器瘫痪,服务器停止激活,所有人都无法激活了。求服务器瘫痪时Tomato在队列中的位置<=k的概率解析:概率DP;设dp[i][j]表示i个人排队,Tom

2013-08-05 19:41:06 52

原创 ZOJ 3329 One Person Game

以下解释来自kuangbin的博客:http://www.cnblogs.com/kuangbin/     题意:有三个骰子,分别有k1,k2,k3个面。每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。当分数大于n时结束。求游戏的期望步数。初始分数为0设dp[i]表示达到i分时到达目标状态的期望,pk为投掷k分的概率,p0为回到0的概率则dp[i

2013-08-05 19:33:32 387

原创 POJ 2096 Collecting Bugs(概率DP)

题目大意:一个人每天找到一个bug,而一个系统有n个子系统,共s类bug,问要求在每个子系统上找到bug且找到所有类型的bug需要几天。思路:dp[i][j] 代表找到i个系统出现bug,bug的种类出现j种,离任务目标的期望天数,分情况讨论。找到一个已有bug的子系统的已出现类型bug:( i * j ) / ( n * s ) * dp [ i ] [ j ]找到一个已有bug的子

2013-08-05 19:23:25 397

原创 POJ 3744 Scout YYF I (概率期望|矩阵快速幂)

题意: n个雷,分别在a[1]...a[n] ,走一步概率为 p ,走两步概率为 1-p ,一开始在 1 号位置,问安全到达终点的概率。   思路:        将整个过程划分成阶段处理:1 ~ a[1]a[1]+1 ~ a[2]…………a[n-1]+1 ~ a[n]那么只要求出每次踩到雷的概率,求反面,再把所有阶段结果连乘就可以了。ans[i]表示踩

2013-08-05 19:11:51 396

原创 HDU 4336 Card Collector

题目大意:有n种卡片,每包食物最多可能有一种卡片,每种卡片出现的概率不同,为pi,那么求集齐n种卡片的期望是多少?        解法:       1.容斥原理:显然是看别人题解+YY容斥,然后莫名其妙过了,然后莫名其妙给了个解释:拿到i卡片的期望是1/pi,j类似,但是同时拿到i和j就不是1/pi+1/pj,因为没有去重,容斥原理,排斥掉重复计算的i中拿到j,j中拿到i的重复计数,同时

2013-08-04 22:17:41 58

原创 HDU 4405 Aeroplane chess

题目大意:玩一种飞行棋,从0开始走到n,根据扔骰子的点数向右走,但是其中可能存在通道,即直接传送到另一个位置,问掷骰子的期望次数。e[i]代表在i位置的期望        DP求解,若遇到通道则俩期望相等#include#include#includeusing namespace std;#define N 100010#define M 1005double e[N]

2013-08-04 22:16:41 342

原创 ZOJ 3460 Help Me Escape(概率DP)

题目大意:吸血鬼会被随机传送到n洞穴中的一个,每个洞穴有其战斗值ci,如果此时吸血鬼的战斗值大于ci则战斗ti天可以逃脱,否则需要等第二天随机传送,而且此时其战斗值增加ci,问逃脱时间期望是多少。      思路:用f[k]表示战斗值为k时候逃脱的期望,那么               若k>ci f[k]+=1/n*ti               否则 f[k]+=1/n*(f[k

2013-08-04 22:12:15 365

原创 HDU4611 Balls Rearrangement

题意描述:有1-n编号的物品,放在0到a-1的盒子中,其中第i个物品放在 i%a 编号的盒子中,而现在要搬动物品,把这些物品放在0到b-1的盒子中,其中i物品放在i%b盒子中,每件物品移动的量为abs(ida-idb) ida,idb分别代表物品i在a,b盒子的编号,求总的移动量。    易知循环节是LCM(a,b),但是这个循环节太大了,如果暴力更新必须超时,考虑到成段改变,因为每一段的长度

2013-08-03 22:32:13 382

原创 HDU4639 Hehe(组合|递推)

题意描述:给一个串,其中“hehe”可以被替换成“QNMLEB”,当然也可以不替换,问有多少种情况    那么首先找出一段连续的hehe 形如“hehe……he” 计算其可能替换数目f[ i ],然后可以运用乘法原理求总的数目即可。    我们将一个"he"看成一个单位,i记录这个串的单位个数,那么f[ i ] = f[ i - 1 ] + f[ i - 2 ] 即增加的这个元素不替换的情

2013-08-03 22:19:35 485

原创 SGU495 Kids and Prizes(DP概率)

题目描述:有n个盒子,装着东西,m个人取盒子,每次取一个盒子打开,每个盒子的第一个打开者拿走物品,而放回空盒子,以后的人打开了空盒子就没有东西拿。那么问东西被拿走的期望是多少。    首先这是一个放回的概率,即盒子的总数一直没有变化,都是n,而一个人拿走了东西,下一个人拿到东西的概率就被-1/n 因为一个人最多只能带走一件东西,而盒子总量没有变化,假设第i个人拿走东西的概率是Y[ I ]  没

2013-08-03 22:07:56 623

原创 Codeforces 148D Bag of mice(DP概率)

题意描述:公主和龙依次从一个装有w个白老鼠,b个黑老鼠的袋子里抓老鼠,公主先抓,龙抓完后会有一只老鼠跑出来,所有老鼠被选中或跑出来都不再出现在袋子中,若都没有抓到白老鼠而袋子空判龙赢,问公主赢的概率。    首先想到问题很复杂,在于龙抓完老鼠还会跑一只,所以不能直接算,用DP;    win[ i ] [ j ] 表示当有i只白老鼠和j只黑老鼠公主赢的概率,lost[ i ] [ j ]

2013-08-03 21:52:03 394

原创 POJ 1269 Intersecting Lines(计算几何)

平面内两直线位置判断,若有交点,求交点位置,只要推出公式就可以了。 #include#includeusing namespace std;double x,y,x1,y1,x2,y2,x3,y3,x4,y4,k1,k2,b1,b2;void process(){ if((x4-x3)*(y2-y1)==(y4-y3)*(x2-x1)){

2013-07-05 23:22:49 379

原创 POJ 3304 Segments(计算几何)

此题问是否能找到一条直线使所有线段投影有公共部分(可以是一个点)问题转换为:找到一个直线,与所有线段相交再转换:不一定所有满足上一个条件的直线都经过两个线段端点(不一定属于一个线段)如果存在那么一定存在一个(至少一个)从两个端点确定而满足条件的直线(原谅我那土鳖的语文吧)那么,问题就转换成了:枚举任意两个端点,问所确定的直线是不是与所有线段相交。此外:主要等价点的判断 sig()函

2013-07-04 10:15:40 366

原创 POJ 2398 Toy Storage(计算几何)

这题跟TOYS很类似,嗯,直接在那个上面改的,主要是几个线段的位置是乱序的,需要sort下,然后最后改成记数输出就可以了。  //POJ2398 Toy Storage//叉积+二分+排序#include#include#include#includeusing namespace std;#define N 50005#define ll lo

2013-07-03 18:14:38 440

原创 POJ 2318 TOYS(计算几何)

居然脑残认为一定从(0,0)点作为左下角的点,然后怒WA,然后请爽爷出手查,果断一针见血啊!Orz嗯,第一题计算几何//POJ2318 TOYS//叉积+二分#include#include#includeusing namespace std;#define N 50005#define ll long longstruct Point{

2013-07-03 17:34:33 380

原创 POJ2031 Building a Space Station(最小生成树)

kruskal求最小生成树  //poj2031 Building a Space Station//kruskal#include#include#include#include#includeusing namespace std;#define N 101int n;int fa[N];double x[N

2013-06-02 23:23:15 367

原创 SGU 149 Computer Network(树形DP)

又一道卡了半天的题啊,又一道被称作水题的树形DP,膜拜大神Orz。。。。主要维护好三个量down1[ k ] 为以k向下所能到达的最远距离down2[ k ] 为以k向下所能到达的次远距离up[ k ]为以k向上所能到达的最远距离down1,down2都不难实现,说下up(wa在这里一次。。。)up有以下几种可能:1.如果其父节点的down1不过k,那么down1[ f

2013-05-22 23:50:35 644

原创 SGU 117 Counting(快速幂|二分)

//SGU 117 Counting//二分//by night_watcher#include#includeusing namespace std;#define ll long longll m,k;ll pow(int a,int b){ if(b==1) return a%k; if(b%2==0){

2013-05-22 22:31:12 602

原创 SGU 114 Telecasting station(中位数)

真心没啥好说的了,求个中位数吧PS:吐槽下,后面的.00000是故意恶心人的么?//SGU 114 Telecasting station //中位数//by night_watcher#include#includeusing namespace std;#define N 15001int n;struct NODE{ int x,

2013-05-22 16:41:09 730

原创 SGU 143 Long Live the Queen(树形DP)

不枉我SGU134卡了半天,这道题纯练手了,果断1A了~类似SGU134,预处理下,然后找到这个无向图之间的关系,思路够清晰的话应该不会错。PS:看别人思路去学习没什么可耻的,但不能过分依赖而放弃思考。//SGU 143 Long Live the Queen//树形DP//by night_watcher#include#include#includeus

2013-05-22 16:14:48 566

空空如也

空空如也

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

TA关注的人

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