2013年6月1日
摘要: 好吧,这是我两天里唯一考试时AC的题目…………明显的按位DP,设sum1[i][lim][zero]表示在第i位,是否顶着上界,是否有前导零的所有数的前缀串之和(如12345的前缀串之和为12345+1234+123+12+1),sum2[i][lim][zero]记录的是所求的和,num[i][lim][zero]表示该状态下数的个数。那么转移很明显了:sum1[i]=now*tms[i]*num[i-1]+sum1[i-1],sum2[i]=sum2[i-1]+now*tms[i]*num[i-1]+sum1[i-1]*!(zero&&(now==0));(now为当前这一 阅读全文
posted @ 2013-06-01 16:39 stickjitb 阅读(529) 评论(2) 推荐(0) 编辑
摘要: 题目描述:首先看到这题应该知道该怎么裸吧…………以每个字符和间隙为中心可以建立若干个等和不等关系。相等关系可以用并查集合并,不等关系之间连边。然后对每一位贪心地选取合适的字典序最小的字符就可以了。然后我们发现,这样是会T的(废话),为什么?因为我们进行了太多无意义的关系判定,设想有一个非常长的回文串,它的左半边有一些小的回文串,我们已经为它们建立好了关系,那么右半边何必再做一遍呢??也就是说我们一边处理关系,一边记录当前最右覆盖的端点,每次只对覆盖端点以外进行关系的建立,这样由于右端点是单调的,不难推出复杂度为O(n),于是就可以通过了。ps.这种思想其实就是Manachar算法,一种线性求回 阅读全文
posted @ 2013-06-01 16:07 stickjitb 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 题目描述:首先注意!!这道题的修改是将x^L到x^R项进行的!!!不是下标!!也就是说mulx操作会让一些项整体右移!!好吧,不得不说电子科大的题是世界上最坑的题,电子科大的样例是世界上最坑的样例。这道题本不难,但要是看错题了…………………………就只有20分了…………………………更可悲的是,我的线段树都写错了,于是又悲惨地挂零了……………………好吧,既然要整体右移,那么就很容易想到用splay来维护了。每次mulx只需要把第r项与第r+1项合并,然后在l前添加一项系数为零的项即可。其余操作就非常容易了,记两个标记add和mul,表示这个项被乘上了mul后加上了add,如何打标记和下放标记什么的 阅读全文
posted @ 2013-06-01 15:34 stickjitb 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 题目描述:先吐槽一下为什么今年题要用纸质的…………又是版权问题么…………然后数据因为版权…………没法得到,所以现在只能在电子科大OJ上提交题目(真搞不懂,数据什么时候也不公开了…………)。首先很明显这道题要求我们找两点之间最小边的最大值,然后能买尽量买,能卖尽量卖,贪心走一遍就好了。考试的时候没有想出来正确的解法,于是上了一个类似弗洛伊德的DP,悲剧的是忘了处理列车站的情况,然后中间也是各种差错导致挂零…………悲剧的人生啊……其实这个问题很简单,两点之间的最小边的最大值一定存在于最大生成树上(因为最大生成树上两点之间的路径是所有路径中包含的边中权值最大的几条),然后就成了在最大生成树上倍增了, 阅读全文
posted @ 2013-06-01 15:15 stickjitb 阅读(378) 评论(0) 推荐(0) 编辑
  2013年3月23日
摘要: 最近两个星期都在刷字符串,感觉对模板倒是熟练了不少,但是最关键的一步——想出题的算法感觉还是不行啊…………瞬间有种被屠得渣都不剩的感觉,但求省选时别跪。总而言之,字符串的题就要告一段落了,接下来就来总结一下吧。之前做的题就不贴出来了,只发最近两周做的吧。代码懒得贴了,我写得无比丑陋的代码没有任何参考价值。首先是模板级的,没有任何思维难度的题………… hdu1711 Number Sequence:裸的单串匹配。我写了KMP和Z-Box,加了读入优化后达到了171ms,纯粹拿来测试模板速度的……各种srO CRF的140ms Orz啊…………ps 只要你闲的蛋疼这道题可以哈希的……也不难写……h 阅读全文
posted @ 2013-03-23 21:00 stickjitb 阅读(377) 评论(2) 推荐(1) 编辑
  2013年3月12日
摘要: 植树节,种一棵SBT玩玩,跑得不是很快…………不过还好吧…………求各路神牛轻虐…………………View Code 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int INF=0x7fffffff; 8 const int MAXN=1000010; 9 10 struct _Node 11 { 12 int key,size; 13 _Node *s[2]; 14 _ 阅读全文
posted @ 2013-03-12 21:14 stickjitb 阅读(310) 评论(0) 推荐(0) 编辑
  2013年2月26日
摘要: 最近看到一个很有意思的问题——2-sat问题,其基本定义就是说有n个布尔变量,给定m组变量之间的关系,每组最多只包含两个变量,求一种方案使得各个关系均满足。解法:如果去掉“每组最多只包含两个变量”的条件,那么它就成了NPC问题,但是2-sat却有着非常巧妙的多项式解——将n个布尔变量表示成2n个点,分别表示该变量为真或为假。将必须同时选的两个点之间连上一条边;这样在这个图的一个强连通分量内的点就是必须都选的,如果一个强连通分量包含了x与!x,那么这个2-sat显然是无解的,否则一定可以根据拓扑序来选定一些点使该2-sat成立。推荐两篇论文:华东师大一附中赵爽的《2-sat解法浅析》和《由对称性 阅读全文
posted @ 2013-02-26 11:50 stickjitb 阅读(247) 评论(2) 推荐(1) 编辑
  2012年11月18日
摘要: 最近学了下费用流,然后又从网上听说了传纸条可以用费用流完成,于是就试了一下。结果调了半天终于通过了。其原理很简单,就是在图中求两条不相交路径,使途经点权和最大。方法就是把原图中的每个点x拆成x1和x2,对于每个点x和它右面或者下面的点y,建立起止点为x2,y1,费用为0,流量为1的边。并且建立起止点为x1,x2,费用为点权,流量为1的边。特别地,起点(1,1)和终点(n,m)点内的边流量应为2.然后求图的最大费用最大流即可。一直在费用流增广那里卡了很久……总是报SISEGV,后来发现条件应该是i!=S而不是i!=0,然后就A了。这种方法比DP高效,但是代码长度和思维难度…………所以这种方法对于 阅读全文
posted @ 2012-11-18 12:41 stickjitb 阅读(200) 评论(0) 推荐(0) 编辑
  2012年10月1日
摘要: 格式原因直接挂链接:http://www.tyvj.cn/Problem_Show.aspx?id=1034经典ACM题目,最近为了练习DP必须要做的。 题目的要求很简单,有n个进行的任务,如果某时刻如果有任务必须完成,有多个任务在同一时刻开始则选一个进行,没有的话就休息。求最大的休息时间。 尼克有两种状态可以选择:休息,选择手上的任务并做完其中一个。设f[i]是后i分钟可以获得的最大空闲时间,可以很容易得到f[i]=f[i+1]+1(没有任务,可以休息),f[i]=max{f[i+a[i][j]]}(a[i][j]代表i时刻开始的第j个任务的持续时间),然后问题就解决了。 为什么要逆序... 阅读全文
posted @ 2012-10-01 22:57 stickjitb 阅读(217) 评论(0) 推荐(0) 编辑
  2012年9月15日
摘要: 很久没有写过题了,最近越来越弱,被一道DP虐成洪特了……由于格式原因直接挂链接:http://www.tyvj.cn/Problem_Show.asp?id=1013。分析:乍看这题像是一个双条件背包,后来正准备上时发现由于本题还要考虑妹纸数最多,所以不能通过普通的背包来写。后来又准备先求出最多妹纸数,再求最短时间。可发现后面的问题并不便求解,于是傻眼了……苦思冥想半小时依然无解,只好向大神求助,结果发现居然如此简单……被虐了………………方法:既然我们没必要把两个子问题分开写,我们就应该想想子问题之间的联系。结果发现:如果以现状搞到当前妹纸后会让总妹纸数增多,那么不管是否花时间更少,必须搞到这 阅读全文
posted @ 2012-09-15 22:27 stickjitb 阅读(126) 评论(0) 推荐(0) 编辑