随笔分类 - UVALive
摘要:题意:求两条从s->t的路径,使得两条路径不能经过相同的点和边,且两条路径长度之和最小。其实一看到所有点和边只能经过一次,就很容易想到费用流了。拆点,将每个点拆i成(i,i')。对于原图中的每个点,连一条(i,i',1,0)的边,对于原图中的每条边(u,v),连一条(u',v,1,w)的边(w为边的权值),然后添加源S->i',cost=0,cap=2的边(S,i,2,0)的边,添加汇点T,同理,建一条(t,T,2,0)的边,跑一次最小费用最大流就可以得到答案了。其实这题很简单,但是我比赛的时候逗比了。。居然忘记了对源点容量的限制,另一方面我费用流写
        阅读全文
                
摘要:题意:给出一个只含01的字符串,然后用s(i-1) xor s(i+1)的结果去更新s(i),最后问能否将原串更新成全部为0的字符串。一拿到就觉得这应该是找规律题,经过简单的推理,可以得到这么一些结论:1.当字符串长度为1,3,7的时候,无论原串是什么,分别最多做1,3,7次操作,总能变成全部为0的串(YY:只要字符串的长度为2^n-1,无论原串是什么,总能变成全部为0的串)2.当字符串长度为偶数时,除非原串本身全为0,否则不可能将原串更新为全部为0的串(这个能证出来,倒着推一下就行了,给出一个长度为偶数且全为0的串,向上推一个可行的状态,让它不仅含有1而且还可以变成全部为0的,这是不可能的)
        阅读全文
                
摘要:这是白书二代上的一个组合计数里面的一道练习题。我用的方法是枚举在x*y的方格中放置一条对角线,也可以理解为枚举斜率。如图,先来看这样一个问题,n=m=4,即此时有3行3列的方格的时候,可以放置斜率k=-1的直线有多少条。首先我们把每个格子都标上号。如图,我最多只能放置5条k=-1的直线。当我枚举在1*1的方格中放置对角线的时候(当然此时斜率k=-1),一共可以放置9条对角线。然而事实上斜率k=-1的对角线只需要5条就可以了,多出来了4条。那么是哪里多出来了这4条呢?我们注意看所有2*2的方格,他们多有的右下角的那条都是多余的。如图:很显然,我们需要删掉1245中的5,2356中的6,4578中
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号