摘要:
POJ2253 (忘记初始化,然后怀孕了……浪费了2个小时啊尼玛);题目大意:在坐标系上给出n个点(2<=n<=200),每两个点直接可互相到达,所有从1到2的可能的路径中,最长的那条路径最短为多少解:二分即可,二分枚举上界,再用dij求路径是否可能。View Code 1 const 2 maxn=200; 3 bilibili=maxlongint>>1; 4 type 5 point=record 6 x, y: longint; 7 end; 8 9 graph=r... 阅读全文
摘要:
POJ1062题目大意:求从0到1的最短路。解:将题意拆解见图的推理不难,故在此省略。卡住我的主要是等级问题,我也读不是很懂,最后上网搜题解才发现自己原来的判断有问题,并不是距离酋长为m的 一个2m区间,而直接是一个包含酋长的区间m(竟然有比酋长还高级的人)所以枚举区间直接ac,for a[1]-k to a[1] if i<=pow[x]<=i+k;View Code 1 const 2 maxn=100; 3 bilibili=maxlongint >> 1; 4 type 5 data=record 6 dest, c... 阅读全文
摘要:
POJ 3259题目大意:若干个路径..求负环= =………同上,小插曲就是尼玛路径是双向的,虫洞是单向的,还好我懒没顾ac率写对拍,改了交了ac..坑爹。 阅读全文
摘要:
2012.1.28题外废话一下,我终于回来了,因为莫名的恐惧,竟然2个月没正经切题了。 ——傲慢与懒惰是我目前的瓶颈。POJ 1860题目大意:sb有v个s币种,已知有若干种从a到b的兑换方式,以及所需的费用(现有100元a,兑换成b,汇率为10,手续费为10,则b=(a-手续费)*汇率)。问如果能通过某种顺序兑换来刷钱则输出yes,不能就输出no。解:因为是针对最短路和最小生成树的练习,我感觉有点作弊的成分…一开始想是否能找到一条s 到x的路,再x到s查看是否增加了,但感觉非常麻烦。后面想了想如果能成立则能无限刷钱,就是一个类似负环的问题,所以用了一个spfa+负环成立判定,把spfa的更新 阅读全文
摘要:
POJ 2823 Sliding Windows题目大意:给出一个长度为n的数组(1<=n<=10^6),然后For I := 1 to n-k+1 do 问区间a[I,i+k-1]内的最大最小值。解法:复杂度最高去到n^2,显然不能朴素询问,用单调队列去维护即可,用min举例,如果新+入的数比队尾大,则保留(以后可能会用到),若小,则不断dec(mint),直到比队尾大为止(为什么?其实就是一个贪心,新数进入窗口,说明数在窗口期间都是有效的,前面几个比它大的已经不用保存了,是一种贪心的思想),我是用了一个time数组来处理一个数是否在窗口内,比较麻烦,不知道是否有更好的方法了。{ 阅读全文
摘要:
POJ 2376 Cleaning Shifts题目大意:有n只牛和t项工作,每只牛可以执行x至y项工作,求最少的牛可以把每件工作至少执行一次。解法:由于1<=n<=25,000;1<=T<=1,000,000;由此看出不是搜索,仔细观察发现是一个求最少线段覆盖一条线段的模型。先置s=0,将线段按x关键字排序,然后开始贪心,每次选可以覆盖到s的(x-1<=s)且y最大的线段,然后更新s:=y;贪心的思想…注意处理无解如何退出,这里我觉得我需要回去仔细研究下如何退出循环,虽然AC,但并不代表完美。{突然发现自己的风格改了对不上号了囧}View Code 1 {201 阅读全文
摘要:
POJ 2299 Ultra-QuickSort(开头愤怒一句:你妹的下次记得估值范围啊,int64啊!!!)题目大意:给出一个序列,问用冒泡排序要交换多少次才能使之变成升序?解法:首先分析题目性质,将之转化为求一个数左侧有多少个数小于它,亦转化为一个逆序对的问题。因为本题n最大去到50w,所以n^2是万万不能的,所以这里用到一个树状数组求逆序对的问题(也可以用归并排序的做法做)。而这里有一个重点:离散化,注意将值一样大的数视为一样大。然后快排,同时记录他的初始位置,然后用数据a(下标同初始位置)记录大小。树状数组做法:从最后一个开始,up(a[i], 1);然后ans := ans + ge 阅读全文
摘要:
题目大意:有n头牛与m对关系,表示A牛仰慕B牛,如果A牛仰慕B牛,B牛仰慕C牛,那么我们可以认为A牛仰慕C牛,给出牛的数量与仰慕关系,求有多少牛被全部的牛仰慕。解法:用普通的dfs无能为力,因为有环的存在,各种麻烦,于是用求强连通分量的算法,这里我用了kosaraju,将强连通分量求出来之后,据fjy的说法,不用实际缩点,是要用意念把点缩在一起,每个颜色只走一次(说一下缩点,截止2011.11.25为止,我还没做缩点),然后翻老程序中又翻出了一个更神的做法,如果有两个或以上颜色点没有指向其他颜色点的边,则说明无解,不然有解(因为说明有一些牛没有支持另外那部分的牛,只有一个说明全部的牛都指向了这 阅读全文