codeforces
swust_lian
无武
展开
-
codeforces 620E New Year Tree (DFS序+线段树区间操作+二进制)
题意:给出一棵树,每个节点初始都有一个颜色值,有m次操作,1操作:输入id,c。第id个节点以及其子树都被染成c。 2操作:id,输出id子树中不同颜色的种数。 解法:先跑一次DFS,第id个节点就控制DFS序为l,r的区间。那么就转换为了线段树的区间操作。 怎么记录有多少种颜色?题意上说颜色种数不超过60。那么第c种颜色就对应二进制的第c位,两段区间合后的颜色为他们两段区间颜色值的“或”。原创 2016-01-24 15:45:51 · 485 阅读 · 0 评论 -
Codeforces 615B Longtail Hedgehog 【dp】
题意:给出一个图,找到一条链,这条链点的编号是递增的,使得这条链:MAX(长度*最后一个点的度) 解析:dp[i]表示以i点结尾,最大的链长。所以u->v,dp[v]=max(dp[v],dp[u]+1); 最后的答案就是 ans=max(ans,dp[x]*degree[x]); #include #include #include #include #include #include #原创 2016-01-09 13:30:30 · 288 阅读 · 0 评论 -
codeforces 616D Longest k-Good Segment
题意:给n个数(大小不超过10^6),求连续的不同的数个数小于k的最大长度的起始坐标。 思路:枚举从i坐标开始,不超过K的最大长度。 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX原创 2016-01-13 14:44:48 · 634 阅读 · 0 评论 -
codeforces 631c
题意:给你n个数a1...an,接下来m次操作,每次操作(op,x),if(op==1)前x个数按照递增排列,if(op==2)前x个数按照递减排列,输出此n个数最终的顺序,(1 ≤ n, m ≤ 200 000,|ai|) 分析:先不管op,根据x的大小,如果x比之前操作的x'都大,那么之前的操作就是无效的。但是,x之后的操作,x'比x小的数可以影响结果。所以,我们的思路是,先找到一个最大的x原创 2016-03-05 16:09:26 · 479 阅读 · 0 评论 -
codeforces 650c
求最长路,相同的点用并查集缩点。。 不得不吐槽下这个博客,退出按键找了半天,重新登录这个号后,发表文章还是显示的那个号。本来写好了的题解,一下就没了,懒得重写了。#include #include #include #include #include using namespace std; #define maxn 1000005 int n,m; struct node { int原创 2016-04-10 15:56:25 · 395 阅读 · 0 评论