自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codeforces 400(div2) D

题意:现在有n个点,但是有k种类型,每种类型有ci个。现在有m条边连接这n个点,现在问对于每个type里面的点是不是可以cost为0到达自己同类型的点。如果可以输出Yes,并且找到每个类型间相互到达的最短距离。输出矩阵。思路:对于同一个类型的就用bfs,如果某个点能够到达跟它同类型的其他点,那么这个类型一定能够相互达到。然后缩点。用floyd就可以求解。trick:这道题目不难

2014-03-28 21:41:58 483

原创 codeforces 228(div1) B

这道题居然写了一晚上,开始的思路就对,但是处理还是欠缺经验。思路:将每个数分成二进制。将最大的2^i的i画成2*2*2*...*2有i个2组的点全连接。那么就可以得到2^i条边。对于每一个数分解成二进制都是2^i1+2^i2+2^i3...(i1>i2>i3>...)对于剩下的i2...in 只需要在之前弄好的图上在某个位置加上一个一个的点使其从1到2的距离相同就好~。我开始一直RE在35

2014-02-08 23:28:30 655

原创 codeforces 228(div1) C

题意:有几堆卡片 每堆卡片里面有多张 每张卡片上面有一个数字,两个人轮流拿,一个只能拿最上面那张,一个只能拿最下面那张。假设每个人都是最优的策略,求最后两人拿到的卡片上的数字和分别为多少。思路:对于每堆,拿最上面的人拿上半部分,拿最下面的人拿下半部分,如果该堆的卡片数是奇数,就把中间那张放在一边。偶数就是双方对半拿。最后将拿出来的奇数的中间那张卡片从大到小排个序,两个人按顺序来拿。最后

2014-02-05 23:37:13 739

原创 pku3013

将求的值算一下,会发现其实是求从1到每个点的最短路乘以点的权值的和,转化成简单的最短路,但是有几个很烦的地方,就是不能用vector,后来手写邻接表每次都遍历一遍结果也是T,后来存了每个链表的最后一个节点就过了。代码:#include#include#include#includeusing namespace std;long long w[100000];lon

2013-07-28 15:41:33 437

原创 pku2449[第k短路]

打算开始做题了。在这样耗散下去实在是不好意思跟别人讲弄过ACM。这是一道最基本的第k短路的题,很久没有做过A*的题几乎都忘了原理。还有就是这次写个dij都一直手贱。思路:1.A*:现在对于A*的理解是:f(x)=h(x)+g(x).其中h(x)是从起始点到当前节点的花费,g(x)是估价函数,估计的是当前节点x到目的节点的花费。这个估计值一定要比实际值小,对于A*的不同就是估价函

2013-07-26 20:22:10 720

原创 第一场也是最后一场比赛

今天傍晚背着书包经过主楼时,远远看着那一排排的灯,心就空了。不知道为什么开始不舍起来。也不知道是因为对于习惯的生活的突然被打破,产生的不舍。还是真正的对于ACMer生涯的结束的不舍。总之,开始留念了。这次的杭州赛,我们队应该打得很顺利,几乎没有什么严重的卡题,也没有那种惊险决定命运的一题。很平淡的结束了。今天看了一下最后的board,最后出的B也没有能够我们得铜的宿命。比赛完跟teoy队交流了

2012-11-06 23:05:10 402

原创 2011年北京区域赛I-Activation

开始做的时候无从下手,这题就是一个概率dp。很多的细节。dp[i][j]指的是在有j个人的时候Tomato排的位置为j这个状态时的概率。这个题需要考虑的就是循环的问题,第一是p1的循环,所以对p2,p3,p4的概率进行了修改使他们的和为1.然后就是每次第一个人都失败,所以对于dp[m][n]的概率是每轮的概率和相加。还有一点就是dp[i][j]=dp[i+1][j+1]*p3+dp[i+1][j]

2012-10-03 19:35:55 1215

原创 2011年大连赛区I-The Boss on Mars

本来打算一道一道的刷过去,结果发现,最水的题我都想了好久,这道题用容斥来解就好,开始想的版本只是减去了它的因子,结果一直WA,后来细细的想了很久,才发现这是一道容斥,还有一个地方就是这里有一个除30没有注意到这个细节,还有就是这题处处要小心越界。唉,最简单的题,我都不觉得水,更何况是难题呢。上代码:#include#includeusing namespace std;long

2012-08-20 22:06:55 2807

原创 hdu2296

今天机房断网,结果回来才交果不其然WA掉了。然后又是各种调各种弄,最后竟然A了。真是畸形。个人觉得字符串上的DP基本都是按照字符串的位进行的。当然我也没有做几道题。这个也是一个很简单的DP但是对于预处理方面可能需要考虑一下,以及它最后的要求是输出字典序最小。而且之前也没有看到最后答案可能会有空串什么的,改了就过了。上代码:#include#include#include#inc

2012-07-29 00:52:33 477

原创 zoj3228

这是一道很有意思的字符串的题。大部分的人都是用AC自动机过的。但是在看HH大神的博客的回复下面看到一种很有意思的解法。通常对于tire树的构造都是用字串构造。母串匹配。但是今天看到有人用母串构造tire树。但是这样构造需要一些前提。首先已经知道子串的最大的长度,其次这样的方法的构造不会MLE。开始的时候我用new node但是MLE了后来改为静态的方式构建tire就过了。我两种方法都写了一下。最开

2012-07-27 21:14:22 371

原创 HDU2825

解题思路:首先按照正常的思路将自动机模型建立起来。然后就在上面进行DP其中DP[i][j][k].i表示字符串的字符的个数j表示的是最后一位是什么状态.k表示magic string的状态这是用状态压缩记录的也就是2^10。通过每一位01表示该个magic string是否被表示。这道题开始的时候是TLE,是memset的问题。改了之后就狂WA。后来找到了WA的原因,但是没有办

2012-07-26 21:15:52 1227 1

原创 SGU489

不知道是什么原因,别人的o(n^2)是600ms,我的却是900ms擦边过。这个题的状态方程如下:dp[i][j][0]=sigma(dp[i-1][x][1])(j=j的所有可能的和。同理可以推出1状态的情况。但是这个dp需要一些小地方注意优化。。减少时间什么的。上代码:#includeusing namespace std;int dp[4][10010][2];mai

2012-07-21 13:16:20 416

原创 关于SG函数

一年前的博文了。时间过得真快啊~~~现在又不会SG了。         一直觉得博弈是一个很是神秘的东西,现在在看博弈,觉得很是有趣,尤其是SG函数,昨天今天做了几道题,尤其 是上周的多校给了我很多不一样的东西。开始的时候做的是HDU上的两道取石子的题目。基本上都是给你几堆石子然后有规定你只能取几颗什么的。多校的那道题我按同样的思路来写WA掉了,现在才终于理解所谓的前继后继。明明是很明显的一个

2012-07-14 14:19:15 2829

原创 codeforces-Problem 193B - Xor

这道题的减枝很好。如果是我自己写肯定不会写这样的减枝。这个减枝主要是剪掉了连续的两次异或的所有情况。代码如下:#includeusing namespace std;int b[50],p[50],k[50];__int64 ans;int n,u,r;void dfs(int step,int a[],int way){    int a1[50];    i

2012-07-02 21:01:37 532

原创 POJ3659

我讨厌这样的题!!!就是你有思路,你的状态方程什么的都是正确的,但是就是因为敲码的什么其他原因,你直到现在才过!!这道题,开始的时候没有仔细的读题,把它当成了线段覆盖来做,然后就WA了。。后来发现不对,这是一道点覆盖的题目。最开始想的是用01两个状态来记录节点,后来手跑的时候发现有bug。。每个点需要有三个状态。0状态是该点没有tower,但是覆盖了该点。1状态是该点有tower,覆盖该点。2状态

2012-06-17 22:08:21 758

原创 POJ1849

这道题开始的时候完全没有理解它在说什么,后来看了别人的解题报告,然后自己画图理解。但是由于没有太懂,直到现在也没有完全明白,只是直观上的感觉是这样,并没有严格的证明。借用一下别人的思路:思路1:这道题画图分析了以后会慢慢的发现答案其实就是所有边的和的二倍减去从某个节点出发的最长两个路径之和。因为除了从某节点出发的两条路径之外其他的边都要走两边。这个节点是可以选的,这两条路径也是可以选的,因此我

2012-06-17 13:29:10 600

原创 POJ1383

树的直径。开始写了一个dfs的然后RT了。于是后来改成写两个bfs,然后就过了。思路,两次bfs,第一次随便从哪一个节点开始找到一个距离它最远的节点。然后第二次bfs从找到的最远的节点开始找最远的路,即为树的直径。这里有一个很好的证明,从别人博客看来的:BFS找到的最长路即为树的直径;原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点证明: 1) 如果u 是直径上的点

2012-05-19 00:37:41 463

原创 HDU2196

很早之前就说要把树形DP学会,现在才开始。暑假就快到了,而我却无所事事了一个月,这一个月几乎没有学算法,几乎没有敲题。周末和队友做了金华的题,觉得还好。但是那么简单的B我却无从下手,又觉得眼熟,原来之前的练习赛中出现了这道题,然后不会就不会了。现在开始恢复状态了,好好打完一个暑假,尽全力,不要留遗憾也就够了。回归到这道题目中来,就是简单的两次DFS。首先第一次是建树,并且求出经过它儿子节点的最

2012-05-15 17:14:13 1631

原创 POJ1077

昨天练习的题目,前天才学A*,昨天敲错了,保存的不是状态真不知道自己怎么想的。这道题还有一个地方就是需要康拓展开,看了别人的解释才明白,后来发现这道题可以直接写BFS,害得我昨天一直在纠结A*。今天将普通BFS写一下,然后再写了一下A*一个70ms,一个35ms也没快多少。自己写的A*有一个问题就是当需要存储的状态已经在OPEN里面了,但是如何更新.我直接省略了这一步。觉得将它们全部放入让

2012-03-19 23:09:48 447

原创 POJ1742

会DP的都是大神。这道题主要想说的就是在use这个数组的应用上,之前一直敲出来都是错误的代码,百思不得其解,现在明白了,是在求的时候对于硬币的使用不是一次的之前就是没有用use,少了一个状态,使整个思路都是错的。唉,DP的道路漫漫啊。。。还有图论,今天如果不是碰到做过的那道双连通分量的题,不知道死得有多惨。唉。。上代码:#include#includeusing namespace

2012-01-30 00:12:49 392

转载 <转>博弈相关

博弈算法之alpha-beta搜索 收藏    博弈一向被认为是最富挑战的智力游戏,有着难以言语的魅力。自从出现计算机后人们就开始有了与计算机下棋的想法。早在上世纪60年代就已经出现若干博弈程序,并达到较高的水平,现已出现计算机博弈程序能够与人类博弈大师抗衡的局面。博弈理论的研究不断为人类科学提供新的课题,同时也对深层次的知识研究提出了严峻的挑战。如何表示博弈问题的状态,博弈过程和取胜的知识是

2012-01-27 22:55:45 369

原创 编号(长度)动态规划

题库a)       最长不下降子序列以一元组(i)作为状态,表示第i个作为序列的最后一个点的时候的最长序列。于是很容易想到O(n2)得算法。但本题可合理组织状态,引入一个单调的辅助数组,利用单调性二分查找,优化到O(nlogn)。关于优化详见优化章。一些问题可将数据有序化,转化成本题。              应用:拦截导弹(NOIP99 Advance 1) 就是原题。

2012-01-15 23:11:41 396

原创 寒假刚开始的时候立一下志

既然已经选择了,就要风雨兼程。这次的期末告诉我用心,是能够成功的。我不可能靠自己的智慧成功,因为我根本就没有那个智慧。暴力,所有的成功都来自暴力。哈学可能是对于我这样愚钝的人最好的方式。下学期要考四级了。还是想弄到600+,所以寒假努力吧!!!想想你的2011,那段令你痛不欲生,那段不堪回首的岁月。你成功的时候,觉得大家都有人情味,当你失意的时候,没有任何人情味而言。鄙夷也好,排斥也罢。这样的

2012-01-13 13:38:32 1381 1

原创 POJ2528

这是一道很值得一说的题目,首先这道题又用到了我不会的离散化。通过看HH神牛的博客,大概懂所谓的离散化。离散化就是将大区间映射到小区间内。这道题有几个要点首先是先将所有的值排一个序列,然后将其中重复的值消去。。。如果两个值间的的距离值相差2个距离则在中间加上一个值。在这里要说明HH神牛的代码貌似有两个小错误,首先是在两个数之间再加上一个数的时候,应该是x【m++】=x【i-1】+1;第二是x数组开小

2012-01-12 17:48:18 552

原创 POJ 3352 || POJ3177

开始的时候是去做论坛上的poj上的2942,但是发现我不会做,于是去查关于双联通的问题,然后就看到了tarjan算法,记得国庆在家的时候,就想学来着,结果本身对于强连通什么的基础的东西都没有弄懂,跟不要说去看tarjan算法了。。。全是一团雾水。一周前各种找资料,但是发现很多博主没有真正的理解tarjan,于是混用,找了很多份博客来看由于大家的理解是不同的于是我越来越糊涂。后来看到一个博客里面提到

2011-12-09 23:44:04 665

原创 POJ1094

从昨天写到今天,真是弱爆了。就是用拓扑排序。但是我的存在几个问题。首先,我没有想到如果得到的关系既不能确定他们的大小关系,又有矛盾的地方就应该输出矛盾。。。所以当我一发现不能确定就return,导致我WA了。。。后来睡觉的时候想到优先级,但是又懒得起来改,于是今天晚上编完了离散的答案后,就来改,其中还有一些零碎的小细节需要注意,就不赘述了。上代码:#include#include#

2011-11-13 23:48:38 653

原创 2011 Multi-University Training Contest 1 - Cat VS Dog

二分匹配的问题很是迷人,关键点就是在怎样建图。这道题我没有想出来但是学习到了不少的东西。首先匈牙利算法的在main()里面的循环是循环的是left这边的。而find函数这是right。看来我还是没能理解怎样在增广。其次就是建图的问题,如何连边?就是将有冲突的点连接起来。这道题我用的是喜欢猫的小孩在左边,喜欢狗的在右边的方式,进行构图。其实也可以两边都是p个小孩。但是在最后找到最大匹配的时候需要/2

2011-10-30 22:33:20 314

原创 大一就过去了

这个总结本来很早就该写了。但是一直没有写。大一的专业排名出来了。看了之后很是伤心。大一上的时候还是专业排名15的我,而现在已经沦落到45了。中间的差距令我生畏。现在对未来是无限的恐惧。现在我时而清醒时而迷茫,清醒的时候想着,我一定要赶上他们。迷茫的时候又想着,上天根本就不想让

2011-10-14 12:33:52 404

原创 POJ1011 POJ2362(9.7博文)

<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->(忘了上传)泪奔啊。。。神们两个月前过的题我现在才做,还不太会。。。呜呜。。。首先鸣谢叶神。。。我终于把神博客里的搜索写完了。

2011-10-04 15:53:42 259

原创 hdu3832(2011 Multi-University Training Contest 1 - Host by HNU )

题意:给n个点,求将前三个点连接起来的使用的最少的点的个数(每个点都有半径,两个点相连接表示两个的半径和大于或等于两点间的距离)。思路:我没有想出该怎么做,想了很久,后来看了题解,题解用的是最短路做。开始我尝试用最小生成树做。但是不知道该怎么弄。到最后只有用DFS我可能才能做

2011-10-04 15:50:04 490

原创 POJ 2983 && POJ 1201

做了两道差分约束的题目。但是都是用的bellman-ford来写的。其中POJ1201开始的时候TLE 了,就是在最后一个更新的时候由min到max的更新d[ ].这样的话会重复操作。后来将其由max到min就200+飘过。POJ2983是最开始的时候存边点的时候有问题。所以WA

2011-09-24 21:29:32 440

原创 POJ2513

开始的时候只是用了tire树。。但是没有判断图是否连通。。。觉得只要奇数个的是0或2就好了。。后来发现了这样的情况:b b\n  s r\n s t\n满足奇数个那个条件但是是impossible的。。于是用并查集。。想原来最开始学习的就是并查集,现在竟然很是生疏。。。union

2011-09-21 15:00:07 339

转载 一位ACMer过来人的心得(转载)

刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?       我想说下我的理解。       很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。       我觉得一般情况下,对于我们

2011-09-21 10:33:33 249

原创 POJ3253

这完全是一道记录我成长的题目。    开始的开始看到这道题目,貌似是watercube的第一场比赛。貌似是第一次网络赛。那时候是盐在想这道题目。YY了各种方法没有能过sample。后来叶神告诉我那是什么哈夫曼树。但还是没有去写,那时根本不懂什么是哈夫曼树。

2011-09-21 09:33:14 361

原创 POJ2503

写了几道hash的题目,结果都是水过的。只有这一道老老实实的用链表,用折叠法(完全看不懂这代码)。最开始想水过,结果MLE。后来想的是将所有的字母全部加起来然后hash,结果TLE了,后来又想尝试着将所有的字母乘起来然后mod一个素数。结果RE了。心如槁灰。于是看DISCUSS,

2011-09-19 23:16:23 472

原创 POJ2299

对于这道题我的收获很多。原来第一次写树状数组的时候没有注意自己写的是求逆序数的。现在又弄来用了。求逆序数有两种方法,一种是用数状数组,而另一种就是用归并排序。今天终于懂了什么是离散化。当数据我只是求他们的关系,而与他们本身无关的时候就可以用树状数组。把大数弄小直到我能够用数组打开

2011-09-16 22:01:06 613

原创 POJ3436

这是第二道网络流。。=。=我是有多落后。。这题完全是看的别人的思路,照着别人的代码敲的。感觉这样的拆点方式很是巧妙,是按机器的流入流出进行拆点。分为两个点。然后再进行连接。开始的时候一直WA。是因为没有将为2的机器某点与源点相连。也没有将其与汇点相连。只是感受到了网络流的一点点美

2011-09-16 20:43:29 469

原创 POJ3080

字符串的题目,第一次感受到了C++里面string的美啊!!!完全是太棒了。很是喜欢find。和substr。。。太方便了。对于找子串来讲。当然这道题用C来写就不得不用KMP相对来讲要麻烦很多啊~~~上代码:#include#includeusing namesp

2011-09-16 20:37:20 433

原创 POJ3259

这是我的第一道bellman-ford模板题。但是还是要记录一下。这里有一个很不错的模板。贴上来~~~【zz】地址:http://www.wutianqi.com/?p=1912/** About:  Bellman-Ford算法* Author: Tanky W

2011-09-07 22:23:28 707

原创 POJ1753(未完待续)

我开始就是暴搜然后TLE了。后来看了DISCUSS说逆搜能秒过。然后就换了一下。结果94MS过。当然这是钻了数据的漏洞,还会再写一遍这道题。先把我龌龊的代码贴上来。明天网预,虽然与我的关系不大,但是还是加油的打好吧。。。上代码:#include#includeus

2011-09-03 00:12:28 310

空空如也

空空如也

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

TA关注的人

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