自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010489766的专栏

菜鸟ACMer

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

原创 计算几何_圆与多边形面积交

计算几何之圆与多边形面积交算法思路考虑到求多边形面积的算法中就是把多边形进行三角剖分并且将三角形的有向面积相加。 所以,我们求圆与多边形的面积的时候也是需要以圆心为中心进行对于多边形进行三角剖分。情况分类三角形的两个边短于圆半径 情况如上图。那么此时我们只需要求三角形的有向面积即可。三角形的一边短于圆半径,一边长于圆半径 此时,我们需要求出三角形与圆的两

2014-12-04 16:19:02 2420

原创 Markdown入门

Markdown入门Markdown简介关于Markdown是什么,维基百科上是这么写的Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。从中其实我们可以看到,Markdown属于标记语言,

2014-12-04 13:55:55 629

原创 HDU 4714 Tree2cycle

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714/* 一般一个点的度如果大于2的话,该点必然要断开一些连接, 因为最终每个点的度都是2, 然后就是看点上断开那些连接了, 其实,如果一个节点的除去父亲节点如果度大于1,例如为5的话, 必然断开与父亲节点的那条边,且断掉其子节点的中的三条边,共删去4条边*/#pragma com

2013-10-06 22:11:01 575

原创 HDU 4712 Hamming Distance

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712题目解析:这题实在是让人很无奈。好吧,用概率来做的题目我还是第一次见,孤陋寡闻了。好吧,因为结果的范围很小,只有0~20,而且数据范围很大,一般做必须超时,所以我们就可以用随机算法具体实现:每次随机出来两个0~n之间的数字,然后把数字对应的16进制数异或后求二进制1的个数,这样,只要多

2013-10-05 18:18:25 878

转载 浅析求素数算法

~~~~~~~~~~~~大牛博客转自http://www.cnblogs.com/luluping/archive/2010/03/03/1677552.html~~~~~~~~~~注意: 如果没有特殊说明, 以下讨论的都是针对n为素数时的时间复杂度1. 根据概念判断:如果一个正整数只有两个因子, 1和p,则称p为素数.代码:bool isPrime(int

2013-10-05 15:52:05 721

原创 HDU 4701 Game

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4701解析:没接触过几次关于最优博弈的题目,所以只能上网找blog了,了解了之后才明白。好吧,我希望多接触~~~~~~~~~~~~~~~~~~~~~~下面转自大牛博客http://blog.csdn.net/u010690055/article/details/10295541~~~~~~~~~

2013-10-02 21:12:43 1011

原创 HDU 4705 Y

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705解析:要求三个不在同一路径的,我们可以先求出在同一路径的三个有多少种,然后减去就行了。用dfs来遍历所有点,对于当前点node,研究它的每个分支p。三个点,node算一个,node的当前分支p里任取一个点,然后在不是p的地方在找一个。注意:1.需要手动扩栈      #pragma

2013-10-02 18:23:48 805

原创 UVA 11019 Matrix Matcher

解析:给定一个矩阵,求另一矩阵在这个矩阵中出现的次数;假设N*M矩阵为T,X*Y矩阵为P方法是利用count[i][j]来记录以(i,j)为左上角,且大小为X,Y的矩形中含有多少个完整行与P矩阵对应行完全相同。所以,如果在T矩阵的第r行的第c列开始与P的第i行匹配,那么count[r-i][c]++;最后判断是否有count[][]==X;PS:这题是AC自动机的进阶题目,可以

2013-09-30 16:25:31 1557

原创 UVA 1149 Dominating Patterns

题意:给你一些单词,一个文本字符串,求文本字符串中出现次数最多的单词。解析:先用word[][]保存单词,然后利用AC自动机来求哪些字符串是匹配的。作为AC自动机入门题目,如果不了解AC自动机的话可以参考http://blog.csdn.net/niushuai666/article/details/7002823,业界良心。AC自动机还有一题入门题,hdu 2222,如果大家有时间的话,

2013-09-30 11:37:06 848

原创 UVA 1401 Remember the Word

题意:给出一个字符串和S个单词组成的字典,问把这个字符串分解成若干单词的连接,总共有多少种?(单词可重复)解析:这是刘汝佳白皮书的关于Trie树的入门,也是我接触的第一题。总的思路就是可以用递推来求到底有多少种分解方法。假如用d[i]表示从第i个字符开始往后的后缀字符串的分解方法,即s[i]->s[len]  (len为字符串长度)之间的字符串。那么假如说在s[i...len]的字符串中发

2013-09-01 09:29:07 856

原创 UVA 1146 Now or later(2-SAT问题)

2-SAT问题有n个布尔型变量,然后同时有m个条件,每个条件都是形如“xi为真或xj为假“一类的问题。然后我们的做法就是把这些变量全都抽象成图中两个点,例如给定变量xi,我们抽象成2*i和2*i+1两个点,这两个点分别代表变量的真假两种状态。然后标记2*i点代表取xi的真状态,2*i+1代表假状态。这样的话因为有m个条件,我们就可以在不同变量抽象成的点之间连一些边。这些边代表的就是推导出的意思

2013-07-18 17:31:37 1166

原创 POJ 2186 Popular Cows+POJ 1236 Network of Schools+UVA 11324 The Largest Clique

这三题全都是有关有向图点的强连通分量,而且我用的都是tarjan算法求,所以放在一起。其实做了这三体后不难发现,有向图的强连通分量题基本上就是求出强连通分量,缩环成点,然后关于点的入度和出度的问题。POJ 2186 Popular CowsPOJ 2186 Popular Cows题目链接:http://poj.org/problem?id=2186题意:在有向图中求共有多

2013-07-17 21:51:52 1017

原创 POJ 3177 Redundant Paths + POJ 3352 Road Construction

POJ 3177 Redundant Paths题目链接:http://poj.org/problem?id=3177POJ 3352 Road Construction题目链接:http://poj.org/problem?id=3352这两题很好玩,能用同样的代码过这两题。而且POJ上的数据都很弱,即使网上80%的代码都是错的,也照样能ac。题目的话明显就是求至少加入几条边能使图变

2013-07-15 22:07:59 965

原创 POJ 1523 SPF

题目链接:http://poj.org/problem?id=1523解析:这题就是求无向图的一个割点,用tarjan算法,其他的倒是没什么难的,算是割点的一个入门题吧。不过tarjan算法还是挺难理解的,如果不会的话,大家可以自行模拟一下,而且算法中用到的数组的各自的含义我在注释中也说了#include#include#include#include#include#inc

2013-07-15 21:18:08 1266

原创 UVA 11865 Stream My Contest

题意:需要用不超过cost元来建立一个能到所有点的网络,每条边都有花费和带宽,要求一颗能到所有点的树,使得整棵树的最小带宽(即该图中所有点的带宽的最小值)最大。解析:如果已知最小带宽了,问题转化为:如果仅用小于此带宽的网线,是否可以再给定花费内成功搭建网络,则明显应该求最小生成树,因为是有向图,所以就是最小树形图,可以用朱刘算法来求。朱刘算法详解:http://blog.sina.com.cn

2013-07-13 18:46:36 1556 1

原创 UVA 11354 Bond

题意:邦德要从一个城市到达另一个城市,但是每条边都有危险值,bond需要找出一条路,是的路上的危险值最小,但是从u到v的一条路的危险值取决于这条路上的边的危险值的最大值。也就是说需要找到一条路,使得该路上最长边最短,就是最小瓶颈生成树了因为要多次访问,所以的话先预处理。因为最短路一定是在最小生成树里的,所以,先求最小生成树,然后把最小生成树改成有根树,有根树中引入层的概念,根据到根节点的距离,

2013-07-13 17:59:03 1091

原创 POJ 2411 Mondriaan's Dream

题目链接:http://poj.org/problem?id=2411大致题意的话就是用高2宽1的矩型去去构成给定宽高的矩型,具体的话我是看http://blog.csdn.net/hopeztm/article/details/7841917代码的注释比较详细(因为不详细我都看不懂QAQ)//注意:x&temp如果为0,那么 x&temp==0 所得也是0,只有(x&temp)==0

2013-07-12 19:35:41 609

原创 POJ 1185 炮兵阵地

题目链接:http://poj.org/problem?id=1185作为状态压缩的入门题的话,这一题的确是很基础,唯一需要注意的就是一些边界的范围。好吧,代码的注释写的比较详细,状态压缩的入门可以看看http://blog.csdn.net/accry/article/details/6607703,博主绝对是业界良心#include#include#define max(x

2013-07-12 19:31:07 685

原创 HDU 4081 Qin Shi Huang's National Road System

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081解析:次小生成树问题。因为求A/B,所以要求B尽量小,所以需要求出最小生成树(MST),枚举最小生成树中的所有边,然后就会变成两颗子树,求两颗子树中人口最大的点,则这两个点之间的边就是用魔法建造的边。我是用prim求最小生成树,然后把最小生成树中的边存入e[]数组,最后用dfs来求两颗子树

2013-07-11 16:15:55 794

原创 POJ 3469 Dual Core CPU

题目链接:http://poj.org/problem?id=3469结合POJ 2987http://blog.csdn.net/u010489766/article/details/9301235,建图的话,这次没必要建二分图了,每个点都连接源点和汇点就行,源点和汇点就代表他的两个cpu核,一个任务不能在两个核上同时运行,所以要求最小割,即求最大流,注意:这次两个任务之间的关系是个

2013-07-11 15:56:28 744

原创 POJ 2987 Firing

题目链接:http://poj.org/problem?id=2987解析:dinic算法 + vector + 构造图形。不可以用邻接矩阵,会超时构图时把正权值点全部放到左边,负权值的点作为放在右边。源点到正点的边权值即正点权值,负点到汇点的边权值是负权值的绝对值,a是b的上司就连接a->b,权值为无穷,这样的话,删去左边的点代表不开除该点,删去右边的点代表开除该点,这样的话如果源点

2013-07-11 15:40:19 946

原创 POJ 3308 Paratroopers

题目链接:http://poj.org/problem?id=3308解析:抽象成二分图,左边的点是行,右边的点是列,如果行列之间有入侵者的话,就用边容量为Max的边连接行列点在加入源点(源点连接所有的行点)和汇点(汇点连接所有的列点)。(好吧,╮(╯▽╰)╭,为什么这么建图我也不是太明了,就知道这么建的话可以把问题转换成求最大流问题)如果源点到汇点之间有通路的话,必然行点集和列点集之间有

2013-07-11 15:28:02 863

原创 POJ 1273 Drainage Ditches

题目链接:http://poj.org/problem?id=1273解析:求最大流的一题入门题,使用的是效率不太高的EK算法,不会ek的话可以研究一下这个博客http://www.cnblogs.com/devil-91/archive/2012/08/17/2644569.html注释的很详细//EK算法#include#include#include#include

2013-07-11 15:09:30 618

原创 POJ 3080 Blue Jeans

题目链接:http://poj.org/problem?id=3080参考:http://blog.csdn.net/u010489766/article/details/9272489//对第一个的串的每个子串都进行kmp匹配算法#include#includechar s[12][70],temp[70];int next[70];int m,lent,lens;voi

2013-07-08 16:29:36 783

原创 POJ 3461 Oulipo

题目链接:http://poj.org/problem?id=3461参考:http://blog.csdn.net/u010489766/article/details/9272489简单的kmp匹配算法#include#include#define Max 10100int next[Max],n,cnt,len;char w[Max],t[100*Max];void

2013-07-08 16:26:32 824

原创 POJ 2752 Seek the Name, Seek the Fame

题目链接:http://poj.org/problem?id=2752参考:http://blog.csdn.net/u010489766/article/details/9272489//算法:找一下规律,可以发现发现ababcababababcabab这个用例的话,next[18] = 9,next[9] = 4,next[4] =2,next[2] = -1,中间关系可以证明#i

2013-07-08 16:22:43 814

原创 POJ 2406 Power Strings

题目链接:http://poj.org/problem?id=2406参考:http://blog.csdn.net/u010489766/article/details/9272489#include#includeint next[1100000];char str[1100000];int len;void get_next() { int

2013-07-08 16:19:03 926

原创 POJ 1961 Period

题目链接:http://poj.org/problem?id=1961参考://算法:KMP#include#includeint n,next[1100000];char str[1100000];void get_next() //第二种next{ int i = 0, j = -1; next[0] = -1; while(i <= n)

2013-07-08 16:15:42 685

原创 关于KMP的一些个人理解

KMP算法需要大量的时间来研究,当然,会了之后基本上就感觉很简单了。本文就是大致讲一下我在学习kmp的过程中的一些感悟和理解吧。 首先,还不了解kmp的可以先看一下别的大牛的博客,例如http://www.cppblog.com/oosky/archive/2006/07/06/9486.html,了解一下kmp的基本原理以及它的优越性在哪。 其次,KMP中有个next函数,这就是

2013-07-08 16:15:14 1253 2

原创 POJ 3159 Candies

题目链接:http://poj.org/problem?id=3159解析:仍然是spfa+静态邻接表求最短路问题,但是只能用stack,用queue就会超时,不知道为什么╮(╯▽╰)╭,//需要注意,虽然看似是求最长路,其实还是求最短路,因为如果1->2权值30,2->3权值20,1->2权值10,我们只能选权值10的,因为要使所有人都满意//这题用queue就会TLE,但是用stac

2013-07-08 15:37:22 706

原创 POJ 1511 Invitation Cards

题目链接:http://poj.org/problem?id=1511解析:就是邻接表+spfa算法,这题用vector+spfa超时(白费我码了好长时间了( ‵o′)凸),然后我就开始自学了静态链表。静态链表的话开三个数组,fir[i],nex[i],e[i],其中fir[i]存的是第i个点的最新输入的一条边在e[]中的下标,nex[i]存的是与第i个边相同起点的边的下标,e[i]是第i

2013-07-06 13:45:42 634

原创 POJ 1050 To the Max

题目链接:http://poj.org/problem?id=1050解析:特别巧妙地一种枚举,也可以说是dp吧,看了大牛的博客才懂的╮(╯▽╰)╭革命尚未成功,同志仍需努力啊//算法:num[i][j]存的是第i行中前j个数的和,这样的话,num[i][k]-num[i][j]就是第i行,j->k列的小矩阵的和#include#includeint num[110][11

2013-07-05 20:42:52 650

原创 HDU 1069 Monkey and Banana

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069解析:就是一种叠罗汉问题,可以用dp,不过这题目数据范围较小,所以可以用floyd最长路算法水过,,//算法:箱子全部看成点,当a箱子上能放b箱子时,a->b之间连个有向边。那么问题就变成求图中最大的有向边,即floyd来求最长路(dijkstra只能求最短路)#include#i

2013-07-05 20:38:13 635

原创 HDU 1011 Starship Troopers

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011题意:你作为指挥官,要派遣士兵去房间里面消灭虫子,取得虫子的大脑(brain)。房子构成一棵树,然后给你每个房间里的虫子数和brain的数目,求用给定的m个士兵最多有多少个brain解析:强烈建议,这题一定要结合HDU 1561 The more,The Better    http://

2013-07-05 20:32:09 613

原创 POJ 3723 Conscription

题目链接:http://poj.org/problem?id=3723解析:男女之间有了男女关系之后就会产生羁绊,然后花费就会降低(为什么不是男男,女女之间呢,╮(╯▽╰)╭不纯洁的异性关系)。这题的话仔细想一想,因为m和n个点都必须选,所以最大为(m+n)*10000的花费,所以现在只需要选出权值最大的路径就行了。而且同一个连通图内不能有环,因为每个男女只能用一个关系。那么就变成了最大生

2013-07-04 22:40:35 1283

原创 UVA 11997 K Smallest Sums

Problem KK Smallest SumsYou're given k arrays, each array has k integers. There are kk ways to pick exactly one element in each array and calculate the sum of the integers. Your task is to find

2013-07-04 18:17:18 1532 3

原创 POJ 1182 食物链

题目链接http://poj.org/problem?id=1182题意:巧妙的利用关系之间的可加性。例如:a吃b,parent[a] = b,r[a] = 1,b吃c,parent[b] = c,r[b] = 1.因为a吃b,b吃c,所以c一定吃a即如果更新paret[a] = c,r[a] = r[a]+r[b] = 2,即c吃a. 其他情况也证明可以累加。如果超过3的话就模3,为负数的话

2013-07-04 17:37:57 654

原创 UVA 1160 X-Plosives

X-Plosives A secret service developed a new kind of explosive that attain its volatile property only when a specific association of products occurs. Each product is a mix of two differen

2013-07-04 16:51:08 833

原创 POJ 1442 Black Box

题目链接:http://poj.org/problem?id=1442题意:就是两个操作,add是加入一个数,get是获取第i小的数,每次get的时候i都加1.输入的话,第一行a数组就是所有的需要逐次加进队列的数字,第二行u数组代表当队列中元素的个数为多少时执行一次get操作。解析:自己做的话曾经想到用set,但是最后的话因为set无法查询第k小的数,只能查询确定值的数。所以用迭代器从be

2013-07-04 16:39:58 594

原创 POJ 1577 Falling Leaves

Falling LeavesTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 3563 Accepted: 1988Description Figure 1Figure 1 shows a graphical representation of

2013-07-04 14:27:06 663

空空如也

空空如也

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

TA关注的人

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