
POI
文章平均质量分 76
Zeyu_King
蒟蒻代码风格巨丑,神犇勿喷:)
展开
-
[BZOJ 2795]POI2012 A Horrible Poem
很优美的题目:)列出以下性质:1、循环节一定是长度的约数(废话。。。)2、如果n是一个循环节,那么k*n也必定是一个循环节(关键所在)3、n是[l,r]这一段的循环节 的充要条件是 [l,r-n]和[l+n,r]相同(利用这个性质我们在判断是否为循环姐是可以做到O(1))我们从性质2开始,如果len是循环节,那么最小循环节一定是len的约数——是不是有想法了?枚原创 2014-12-17 22:01:44 · 1647 阅读 · 0 评论 -
[BZOJ 2790]POI2012 Distance
乍一看以为是神题,想了想,原来很暴力。。。可以看到乘和除是没有顺序关系的,那么为了我们就统一先除再乘。假设我们已经把原数除完了变成x,那么再在x上乘一些数使得得到的数在所有书中所需的步数最小,记为min1,次小的几为min2。预处理大法~~~~对每个数字枚举所有约数d,更新的最小值。在计算答案,同样枚举约数,利用min1或min2计算即可。代码#include #in原创 2014-12-16 16:49:45 · 935 阅读 · 0 评论 -
[BZOJ 2084]POI2010 Antisymmetry
说白了就是判断两个相反的串,从某一位置开始,向两个串的相反方向延伸,使得到的子串是相同的,并且长度最大。求最大的延伸长度。水题,很明显的hash吧,O(nlgn)。也可以看作是manacher的变种,跑manacher可以做到线性复杂度。#include #include #include using namespace std;const int MOD=(1e9)+7原创 2014-12-07 12:45:57 · 947 阅读 · 0 评论 -
[BZOJ 2796]POI2012 Fibonacci Representation
大概就是说假设 F(x)d[n]=min( d[a-F(x)] , d[F(x+1)-a] )+1记忆化一下就行了。证明吗。。。这个坑再填吧。。。#include #include #include #include using namespace std;typedef long long LL;LL f[110],n;int Q,i;map hash;in原创 2014-12-17 22:20:19 · 1158 阅读 · 0 评论 -
[BZOJ 3060]POI2012 Tour de Byteotia
考试的时候瞎写了个骗分算法居然给碰上标算了。。。先说一下当时是怎么想的吧,本来是打算直接按照读入顺序加边并删除的,但是这很明显有反例,于是。。。。于是我决定先把两端点均大于k的加入,再把剩下的边加进去。。。。。。评测出乎意料的过了看了题解后再yy,似乎这样做很靠谱。首先第一次加入的边是显然正确的。那么剩的点最多形成一棵树,用类似kruskal的加边方法就行了!#incl原创 2014-12-16 21:52:25 · 1207 阅读 · 1 评论 -
[BZOJ 2791]POI2012 Rendezvous
逗逗逗,一开始看错了题目,然后杯具了一个多小时。。。。。看明白了题目还是思路还是很直观的。首先若果两个点的在环之外就可以走到一起,很明显这就是最优解。如果在环内的话,那么我们分找出两个点第一个进入环的祖先,很容易证明最优解一定是这两个祖先中的一个,然后。。。敲代码吧#include #include #include using namespace std;const i原创 2014-12-16 21:43:57 · 782 阅读 · 0 评论 -
[BZOJ 2081]POI 2010 Beads
练暴力的题目。。。直接枚举长度,计算答案,hash判重。复杂度其实和调和级数有关,大概就是O(n*ln(n))(笔者偷懒判重直接用排序写了,水过了。。。)#include #include #include using namespace std;const int MAX=(1e9)+9,Maxn=200005;int po[Maxn],hash[Maxn],rhash[原创 2014-12-07 13:03:12 · 701 阅读 · 0 评论 -
[BZOJ 2802]Poi2012 Warehouse Store
好坑的一道题目!看到题面,再看看 “In tests worth 50% of the points the condition n1000 holds in addition.” , 很容易把人往dp优化之类的地方想。然后就会杯具了。。。。跳出dp吧!把两个数列分别做个前缀和,任务很明显,在b数组中删除一些数,使得前缀和数组中每个i,sumai>=sumbi注意到每次删除b原创 2015-01-07 12:58:25 · 584 阅读 · 0 评论 -
[BZOJ 1133]POI2009 Kon
比较简单的DP题吧,不多解释了,直接上代码#include #include #include using namespace std;int n,K,i,j,k,s[605][605],g[605][605];int ans,x,y,f[605][55],p[605][55];void print(int x,int y){ if (y==0) return; pri原创 2014-11-24 12:26:34 · 1130 阅读 · 0 评论 -
[BZOJ 2085]POI2010 Hamsters
表示蒟蒻在ac这道题之前理解的矩乘都是极为片面的原本我以为矩乘只能优化线性转移,例如f[n]=ai*f[i]+aj*f[j]+ak*f[k].......其实这样的方程也是可以转移的:f[n]=min(f[i]+ai,f[j]+aj,f[k]+ak......) Matrix operator *(const Matrix &x)const{ Matrix ret; fo原创 2014-12-21 14:40:24 · 967 阅读 · 0 评论 -
[BZOJ 2803]Poi2012 Prefixuffix
在说正解前先orz一下zy的神骗分算法——枚举总长度——如果在1~i和n-i+1~n这一段字母acsii和相同则在做下一步判断然后枚举判断啦。。。。居然只超时一个点(数据好和谐~~)!回来说正解。看到题解,好厉害的题目!这题目有个好厉害的性质。我们用F[i]记下(i+1,n-i)的最大相同前缀后缀,那么F[i-1]证明就用反证法,自己画了张拙图:如果F[原创 2015-01-08 10:25:57 · 1317 阅读 · 0 评论 -
[BZOJ 1138] POI2009 Baj 最短回文路
做题的过程还是挺曲折的。最下的想法是把原创 2014-11-24 12:31:34 · 949 阅读 · 0 评论 -
[BZOJ 2086]Poi 2010 Blocks
实战的时候逗比的使劲儿优化O(mnlgn)的算法,搞得吐血后才多对1个点,还是有2个点毫无压力的T啦然后看了题解才发现自己逗比到一定境界了。。。。我们的目的就是找到最小的j,使得j这样我们就可以去掉lgn了。把s最成一个单调下降的序列,现在队列求出n对应的j(很明显j存在于这个下降序列中),我们发现在找n-1对应的j中,若想更新答案,其对应的j必定比n对应的j小!因此我们只用两个指原创 2014-12-07 12:49:08 · 1102 阅读 · 0 评论 -
[BZOJ 2096]Poi2010 Pilots
NOIP题,两个单调队列即可~~~~#include #include #include using namespace std;const int Maxn=3000005;int qx[Maxn],qd[Maxn],a[Maxn];int lx,ld,rx,rd,n,i,j,k,ans;int read(){ int ret=0; char ch=getchar(原创 2015-01-07 13:00:04 · 610 阅读 · 0 评论 -
[BZOJ 2087] POI 2010 Sheep
神题啊首先必须yy出一个性质:一条边如果不能将点分成两部分为偶数个点,那么无论在哪种方案中他都是不合法的!(其实很明显啦,蒟蒻想了半天也没发现)我们枚举凸包上每个点,按此点为原点将剩下的所有点极角排序。复杂度O(nm logm)有了边之后,我们可以设计dp了。f[i][j]表示从i顺时针到j之间的已经全部分完了的方案数,可得f[i][j]=sigma(f[i][k]*f[k][原创 2014-12-16 09:15:22 · 857 阅读 · 0 评论 -
[BZOJ 2277]Poi2011 Strongbox
蒟蒻被神题虐暴了。。。。。感觉之前的数论都白学了考虑可行的密码x,y,那么(x+y)%n也可行。那么也就是说k*gcd(x,y)%n都可行,我们权且称gcd(x.y)为基数p。我们已经有了一个可行的密码t,那么p就是t的约数。再者我们有m-1个不可行的密码x,也就是说p不能满足k*p%n=x,这个可以用扩欧判断一下。最后我们还需要看到t必须是n的约数,因为如果不原创 2015-01-08 09:50:57 · 1301 阅读 · 0 评论 -
[bzoj 2525]Poi2011 Dynamite
记得这题还有个兄弟——poi2009 gas,至今还wa一个点。。。。不管了,至少看上去这题比他兄弟和谐一点首先毋庸置疑,肯定是二分答案。O(n^2)的检查很好想吧。从下向上扫描,如果一个炸弹暂时没有在规定时间内被引爆,那么一定是在尽可能上的地方放一个炸弹。——直接写就是O(n^2)了。。。。程序片段bool Judge(){ memset(p,-1,sizeof(原创 2015-01-06 13:42:45 · 793 阅读 · 0 评论 -
[BZOJ 2789]POI2012 Letters
water。。。。很明显我们把相同的字母相对位置弄出来后,前后同一位置的一定是对应的,否则一定不优。那么问题就变成两两交换将一个位置的数换到另一位置,裸树状数组。。。老样子,贴代码#include #include #include #include using namespace std;#define lowbit(x) ( (x)&(-(x)) )const i原创 2014-12-16 21:36:41 · 961 阅读 · 1 评论 -
[BZOJ 2799]POI 2012 Salaries
算出每个点取值的范围:1~maxx_i。把没用的点从小到大放在一个数组里,按照maxx_i顺序扫描。如果当前maxx_i=k的仅有一个点,且在1~k中只有一个数可用,那么这个节点的值确定了。如果maxx_i=k的节点数==在1~k中可用的数的数量,很明显之前的节点会把这些数占满,1~k中可用的数全置为不可用。复杂度:O(n)#include #include #include原创 2014-12-16 06:53:28 · 812 阅读 · 0 评论 -
[BZOJ 2082]POI 2010 Divine divisor
数论小集合。题目里第一问本质上要求的其实是 数a1*a2*a3*....*am(m2^(指数是k的素数个数)-1瓶颈在于我们如何求出这个质因数分解,ai我们最多能找出ai在10^6(不到80000个素数)以内的质因子,我们就先找出小因子。与下来只可能存在 p、p*q、p^2p^2的情况可以很容易判定能够出来我们又可以想到了大素数判定(笔者弱弱的不会写Miller-Rab原创 2014-12-07 14:40:51 · 1006 阅读 · 0 评论 -
[BZOJ 1120]POI2009 str
吐槽一下,好啃的题目。。。。。我们可以看到在两个点之间的矩形内分界线是直线x+y+C=0或x-y+C=0。矩形之外都是矩形的分界线。然后思路很明显了,我们将要询问的矩形全记下来,最后用扫描线加树状数组求答案即可。程序。。。。还是贴上来吧原创 2014-11-24 12:21:03 · 988 阅读 · 0 评论 -
[BZOJ 1119]POI2009 slo
题意就不说了吧。我们把题目模型找出来:把ai在b数组出现的下标记作i号节点的目标节点。我们把目标节点连起来就构成了若干个环。每次我们有两种操作交换两个元素来两个环合并。交换一个元素直接将一个环消去(当然得花费代价)。当然每次交换元素总有代价,要求最后把所有环消去的代价最小代价最小。毋庸置疑我们一定是完成操作1之后再对所有环进行操作2。第二个操作的代价很好处理,直接选出其原创 2014-11-22 19:07:05 · 986 阅读 · 0 评论 -
[bzoj 2526]Poi2011 Inspection
water,water,water。。。。树上维护几个值就好了(NOIP模拟赛上的常见题。。。。)#include #include #include using namespace std;typedef long long LL;const int Maxn=1000006;int node[Maxn*2],next[Maxn*2],a[Maxn],q[Maxn];in原创 2015-01-06 13:38:34 · 929 阅读 · 0 评论 -
[BZOJ 2801]POI2012 Minimalist Security
首先不要被题目吓倒,这题你就做出大半了。只有联通块内才会互相约束(废话)扫描每一个联通块,找到一个起点,假设他的权值为x。那么每个连出去的边的终点权值为 w-x 。也就是说每个点上一定为kx+b(其中k=1或-1)也许每个点会被扫描到多次,分以下几种情况1、k1==k2,若b1!=b2无解,若b1==b2.......没有影响,继续running2、k1!=k2,那么我们原创 2014-12-21 15:20:25 · 1010 阅读 · 0 评论 -
整体二分入门
骗分神器!推荐论文:xhr2013集训队论文能够整体二分的题目必须满足一下几点(摘自xhr论文)1、询问答案具有可二分性2、修改对答案的判定相互独立,互不影响3、如果修改对询问有贡献,则贡献是确定的,且与判定标准为无关4、贡献满足结合律、交换律,具有可加性5、题目允许离线(好像现在大部分题目强制在线)另外一个很重要的一点就是注意些整体二分时必须是的当前步骤的复杂度只原创 2015-04-24 09:40:40 · 2246 阅读 · 0 评论