08 2020 档案

摘要:*题意:2个操作,1:[l,r]升序排序,2:[l,r]降序排序,最后输出序列 *线段树维护:[l,r]区间的字母是什么(必须完全覆盖),这样我们求字母个数的时候就等于(r-l+1) *和普通线段树的区别: 1.建树的pushup:当左区间和右区间都是同一个字母,当前区间也是同一个字母 il int 阅读全文
posted @ 2020-08-31 19:43 小又又 阅读(128) 评论(0) 推荐(0)
摘要:*洛谷传送 学校集训的第二天不知不觉写了道紫题(〃'▽'〃)(〃'▽'〃)(〃'▽'〃) 对于操作1和3,赤裸裸的线段树板子。单点修改和区间求和复杂度都没有什么问题,关键就在取模。对一个数取模,假如一段区间最大值都比这个模数小,那无论怎么改,其值都不会变,有了这个性质,我们可以去掉许多不必要的操作, 阅读全文
posted @ 2020-08-26 17:58 小又又 阅读(178) 评论(4) 推荐(1)
摘要:因为汽油的价格各有不同但是走的路程相同,所以我们尽可能选价格少的汽油,实际情况我们需要维护一个类单调队列,尽可能用小的代替大的,分为几种情况 1、如果在这个加油站即使加满油,都不能到达一个比它油价低的加油站,就把油箱加满,前往能够到达的加油站中油价最低的那个; 2、如果只在这个加油站就可以到达一个比 阅读全文
posted @ 2020-08-23 20:47 小又又 阅读(133) 评论(0) 推荐(0)
摘要:1.方格取数:找到两条路线使得获得的总价值最大 定义状态:f[i][j][l][k]表示第一个路线走到(i,j),第二个路线走到(l,k)的最大价值 状态转移:和数字三角形一样f[i][j][l][k]=max(max(f[i][j-1][l][k-1],f[i-1][j][l][k-1]),max 阅读全文
posted @ 2020-08-22 16:55 小又又 阅读(163) 评论(0) 推荐(0)
摘要:*传送 *题意:给出一系列相似的单词,问最少到第几位,才能完全区分他们并输出 即使看到题的时候还没有写过trie树,但是第一反应就是,trie树记录每一位有多少单词经过,到等于1恰好截止 trie树流程:trie树分为建树和查找,建树一般没什么区别,从0开始为根节点,如果当前节点的子节点没有想要的字 阅读全文
posted @ 2020-08-21 17:18 小又又 阅读(106) 评论(0) 推荐(0)
摘要:黑白染色判断是否是二分图*封锁阳光大学 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 const int maxn=5100 阅读全文
posted @ 2020-08-06 22:25 小又又 阅读(162) 评论(0) 推荐(0)
摘要:记录一下代码,回头忘了可以再看 1 void dfs(int u, int fa) { 2 int d = G[u].size(); 3 for(int i = 0; i < d; ++i) { 4 int v = G[u][i]; 5 if(fa != v){ num[u].push_back(v 阅读全文
posted @ 2020-08-06 21:53 小又又 阅读(196) 评论(0) 推荐(0)