摘要:        
一眼二分。然后重点是树上贪心部分 长得像dp一样,设mn为子树内已炸点的最浅点,mx为子树内没有炸并且需要炸的最深点,然后转移直接从子树继承即可 然后是判断当前u点是否需要炸,当mx[u]+mn[u] include using namespace std; const int N=300005;     阅读全文
posted @ 2018-09-15 21:07
lokiii
阅读(180)
评论(0)
推荐(0)
        
            
        
        
摘要:        
按根号300000=m分情况讨论 查询是,当x小于等于m,那么可以暴力记录直接出解;否则,用分块维护区间值,查询的时候以x为步长跳根号m次取最小值即可 还有一种并查集方法,来自https://www.cnblogs.com/CQzhangyu/p/7088337.html cpp include i    阅读全文
posted @ 2018-09-15 19:17
lokiii
阅读(140)
评论(0)
推荐(0)
        
            
        
        
摘要:        
这题加个 include都会MLE…… 神思路,每个数抵消宇哥和它不同的数,最后剩下的就是众数 cpp include int n,la,x,tot; int main() { scanf("%d",&n); for(int i=1;i    阅读全文
posted @ 2018-09-15 11:10
lokiii
阅读(104)
评论(0)
推荐(0)
        
            
        
        
摘要:        
神区间dp 设f[l][r][0]为在l到r中压缩的第一个字符为M,并且区间内只有这一个M,f[l][r][0]为在l到r中压缩的第一个字符为M,并且区间内有两个及以上的M 然后显然的转移是f[i][j][1]=min(f[i][k][0],f[i][k][1])+min(f[k+1][j][0],    阅读全文
posted @ 2018-09-15 11:01
lokiii
阅读(126)
评论(0)
推荐(0)
        
            
        
        
摘要:        
注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 cpp include include include using namespace std; const int    阅读全文
posted @ 2018-09-15 10:17
lokiii
阅读(151)
评论(0)
推荐(0)
        
            
        
        
摘要:        
好眼熟啊 直接dp显然很难算,所以设val为只在n点建一个仓库的费用,然后设f[i]为在i~n点建若干仓库并且i点一定建一个仓库的最大省钱数 转移很显然,设s为p的前缀和,f[i]=max{f[j]+s[i]\ (x[j] x[i])} a[i] 然后推转移 $$ f[i]=f[j]+s[i] x[    阅读全文
posted @ 2018-09-15 09:59
lokiii
阅读(192)
评论(0)
推荐(0)
        
            
        
        
摘要:        
脑补一下给出的图:一个环,然后有若干连接环点的边,我们就是要求这些边不重叠 考虑一下不重叠的情况,两个有交边一定要一个在环内一个在环外,所以把相交的边连边,然后跑黑白染色看是否能不矛盾即可(可能算个2 SAT?) cpp include include include using namespace    阅读全文
posted @ 2018-09-15 08:40
lokiii
阅读(165)
评论(0)
推荐(0)
        
            
        
        
摘要:        
等于有传递性,所以hash一下把等于用并查集连起来,然后再判断不等于是否合法即可 cpp include include include include using namespace std; const int N=200005; int T,n,x,y,v,f[N],g[N],tot,has;    阅读全文
posted @ 2018-09-15 08:09
lokiii
阅读(104)
评论(0)
推荐(0)
        
            
        
        
摘要:        
spfa预处理出最短路数组dis,然后反向建边bfs出ok[u]表示u能到n点 然后发现有0环的话时候有inf解的,先dfs找0环判断即可 然后dfs,设状态f[u][v]为到u点,还可以跑最短路+v的长度,记忆化,然后直接搜即可 cpp include include include includ    阅读全文
posted @ 2018-09-15 07:50
lokiii
阅读(149)
评论(0)
推荐(0)
        
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号