博客园 首页 私信博主 显示目录 隐藏目录 管理 动画
摘要: "题目链接" $Description$ 有n个数,将其分为k段,每段的值为这一段的总共数字种类,问最大总值是多少 $Solution$ DP,用$f[i][j]$表示当前在i 分成了j份(第j份包括i) 那枚举前边的断点k,即 $f[i][j]=max{f[k][j 1]+val(k+1,1)}$ 阅读全文
posted @ 2018-02-12 12:38 SovietPower 阅读(260) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 下落一个d s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵线段树t2(h和all) (同一维,需要维护独立的两棵线段树) t1要用标记永久化实现,t2普通 阅读全文
posted @ 2018-02-12 12:34 SovietPower 阅读(249) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 13904K 532ms 最大 环状 子段和有两种情况,比如对于a1,a2,a3,a4,a5 一是两个端点都取,如a4,a5,a1,a2,那就是所有数的和减去不选的,即可以计算总和减最小连续子段和 二是两个端点不都取,如a1,a2,a3,那需要记录最大连续子段和 线段树,令 阅读全文
posted @ 2018-02-12 12:30 SovietPower 阅读(274) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp //注意取模! include include using namespace std; const int N=1e5+5; int n,mod,Sum[N 1)) aTag[rt]%mod)%mod; Sum[rt 1) aTag[rt]%mod)%mod; aTag[rt 阅读全文
posted @ 2018-02-12 12:30 SovietPower 阅读(196) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 阅读全文
posted @ 2018-02-12 12:29 SovietPower 阅读(174) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp //离散化后范围1~cnt不要错 include include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF: SS+ 阅读全文
posted @ 2018-02-12 08:22 SovietPower 阅读(191) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 序列上的主席树 某点是利用前一个点的根建树 同理 树上的主席树 某个节点可以利用其父节点(is unique)的根建树 排名可以利用树上前缀和求得: 对于(u,v),w=LCA(u,v),u v这条链的值就是 sum "u root]+sum[v root] sum[w r 阅读全文
posted @ 2018-02-12 08:22 SovietPower 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 多次求区间$mex$。 阅读全文
posted @ 2018-02-11 20:49 SovietPower 阅读(319) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $Description$ 有一个长为n的序列Ai,要求支持查询[l,r]的最值、历史最值,区间加/重设 $Solution$ 线段树,每个点再维护一个历史(从0到现在)最大值、历史(从上次下传标记到现在)最大的set,add标记 PushDown时肯定是先下放历史标记,之后再用当前标 阅读全文
posted @ 2018-02-11 17:06 SovietPower 阅读(399) 评论(2) 推荐(2) 编辑
摘要: 题目链接: "BZOJ" "洛谷" $O(n^2)$DP很好写,对于当前的i从之前满足条件的j中选一个最大值,$dp[i]=d[j]+1$ cpp for(int j=1; j include include define gc() getchar() define now node[rt] def 阅读全文
posted @ 2018-02-11 10:45 SovietPower 阅读(384) 评论(1) 推荐(1) 编辑
摘要: "题目链接" 无优化版本(170行): cpp / 首先树剖可以维护树上的链Sum、Max 可以对每个宗教建一棵线段树,那这题就很好做了 不过10^5需要动态开点 (不明白为什么nlogn不需要回收就可以 不是每个Insert加log个节点?) 操作修改完更改原数列!盲人。。 / include i 阅读全文
posted @ 2018-02-10 21:45 SovietPower 阅读(159) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 异或只有两种情况,可以将序列放到01Tire树上做 在不异或的情况下在Tire上查找序列的mex很容易,从高位到低位 如果0位置上数没有满,则向0递归;否则向1 (0位置上的数都满了 即 其子树叶子节点都有值) 异或情况下 若x在当前位有1,则反转0/1继续走 由于异或具有 阅读全文
posted @ 2018-02-10 16:10 SovietPower 阅读(258) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $Description$ 有一片n亩的土地,要在这上面种草。 在每一亩土地上都种植了一种独一无二的草,其中,第$i$亩土地的草每天会长高$a[i]$厘米。 一共会进行$m$次收割,其中第$i$次收割在第$d[i]$天,并把所有高度大于等于$b[i]$的部分全部割去。求每次收割得到的草 阅读全文
posted @ 2018-02-10 13:46 SovietPower 阅读(267) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 或者 "这" 吧。。 被数据坑了 cpp / 操作按左端点排个序 依次进行即可 不是很懂 为什么不写Build 而在Add时改mp[rt]=p 会WA(too short on line 251..) 找到Reason了。。Modify下界写错 那么为什么单点修改正确性会被下界影响。。 阅读全文
posted @ 2018-02-10 08:47 SovietPower 阅读(351) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 首先考虑询问[1,n]怎么做 设 f[i][0/1]表示[1,i]以0/1结尾的不同子序列个数 则 $if(A[i]) f[i][1] = f[i 1][0] + f[i 1][1] + 1 , f[i][0] = f[i 1][0]$ $\ \ if(!A[i]) f[i][0] = 阅读全文
posted @ 2018-02-10 08:05 SovietPower 阅读(195) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 求异或和,容易想到,如果同一个数异或偶数次相当于0 ∑ai还不大,那想一下每个子集和出现多少次,显然只需要知道次数的奇偶,可以用bitset bit[i]=0/1表示子集和为i出现了偶数次/奇数次 有个简单的dp方程: f[x+a[i]]+=f[x] 对于一个x,bit(注 阅读全文
posted @ 2018-02-09 17:09 SovietPower 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "题目链接" "主要思路" cpp / 对于询问1,用堆代替multiset/Splay 对于询问2,multiset 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 / include include include include c 阅读全文
posted @ 2018-02-09 17:08 SovietPower 阅读(168) 评论(0) 推荐(0) 编辑
摘要: "题目链接" "主要思路" cpp / 其实只需要multiset即可 对于询问1,删除、插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 不开O2慢成狗 开了也不是很快 / inc 阅读全文
posted @ 2018-02-09 17:06 SovietPower 阅读(224) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp //输出ht见UOJ.35 include include include const int N=1e6+5; int n,tm[N],t1[N],t2[N],SA[N],rk[N],ht[N]; //SA[i]=j:排名为i的后缀开头的下标为j //rk[i]=j:以下标i 阅读全文
posted @ 2018-02-09 13:34 SovietPower 阅读(294) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 分块。对于块之外的,暴力修改、查询; 对于一整块内的,修改后sort使每一块块有序,询问时二分 =C的位置求个数 / include include include include using namespace std; const int N=1e6+5; int n, 阅读全文
posted @ 2018-02-09 13:33 SovietPower 阅读(149) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 数列的最大值保证 include include include using namespace std; const int N=5e4+5; int n,m,k,size,A[N],times[N]; long long ans[N],now; struct Ques 阅读全文
posted @ 2018-02-09 13:32 SovietPower 阅读(158) 评论(0) 推荐(0) 编辑
摘要: "题目链接 COGS" "BZOJ2120" "洛谷P1903" cpp / Add和Subd函数中的vis不能直接设为=1或=0 比如 l=1,r=0 l=3,r=5 时,[1,5]的vis标记全都是1 所以要进行取反 / include include include include using 阅读全文
posted @ 2018-02-09 13:31 SovietPower 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "COGS" 、 "BZOJ3236" Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以$O(1)$修改$O(sqrt(n))$查询。同 "BZOJ3809" . 莫队为$O(n^{1.5})$次修改和$O(n)$次查询。 注意这两个需求并不平衡,所以在搭配数据结构时常使用分 阅读全文
posted @ 2018-02-09 13:30 SovietPower 阅读(226) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 阅读全文
posted @ 2018-02-09 13:29 SovietPower 阅读(167) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp include include include include using namespace std; const int N=1e5+5; define LL long long int n,belong[N],size; LL A[N],sum[N],tag[N]; in 阅读全文
posted @ 2018-02-09 13:28 SovietPower 阅读(251) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp include include include include using namespace std; const int N=1e5+5; int n,m,A[N],size,belong[N],sum[N]/ 某块的总和 /,tag[N]/ 某块的加标记 /; inlin 阅读全文
posted @ 2018-02-09 13:28 SovietPower 阅读(215) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 如果用线段树,每个节点要再开k的空间,显然不行。但是分块可以(虽然空间依旧爆炸) 分块。用bloans[i][j]表示 第i块 模k为j 的有多少个 对于不是整块的,查询时应判断 A[i]+tag[belong[i]] ==k || ==0 对于整块,维护两个tag,一个是 阅读全文
posted @ 2018-02-09 13:25 SovietPower 阅读(298) 评论(0) 推荐(0) 编辑
摘要: "题目链接" cpp / 25832 kb 26964 ms 莫队+树状数组:增加/删除/查询 都是O(logn)的,总时间复杂度O(m sqrt(n) logn),卡不过 莫队+分块:这样查询虽然变成了sqrt(n),但是修改是O(1)的 考虑对权值进行分块 细节... / include inc 阅读全文
posted @ 2018-02-09 13:23 SovietPower 阅读(159) 评论(0) 推荐(1) 编辑
摘要: 题目链接 [Update] 这是一个暴力,DP正解见 https://www.luogu.com.cn/blog/fusu2333/solution-p2292 ,同样是利用fail递推,并利用串长只有10,可能匹配位置只有10的性质。 /* 简单的DP,查找是否有字典中的单词时在Trie树上做 要 阅读全文
posted @ 2018-02-09 13:21 SovietPower 阅读(180) 评论(0) 推荐(0) 编辑
摘要: "题目链接" $Description$ 给出n个字符串,问重定义英文字符的顺序(即字典序),有哪些单词可能排在第一 $Solution$ 一个单词想要排在第一,首先是没有其它字符串是它的前缀。那么建一棵Trie树 其次,它字符的优先级要比和它有着相同前缀的要高。 也就是说,对于同一个父节点下,这个 阅读全文
posted @ 2018-02-09 13:20 SovietPower 阅读(228) 评论(0) 推荐(0) 编辑