Vijos 1448校门外的树(树状数组与线段树)
线段数讲义
![线段数讲义](https://img.taocdn.com/s3/m/7310411b0740be1e650e9a2f.png)
线段树入门(一)路桥中学陈朝晖今天,我们来介绍一种非常特殊的数据结构——线段树。
首先,来看这个问题:给你n个数,仅有两种操作:(1)给第i个数的值添加x(2)询问区间[a,b]的总和是多少CODEVS 1080 线段树练习时间限制: 1s 空间限制: 128000 KB 题目等级 : 钻石 Diamond题目描述 Description一行N个方格,开始每个格子里都有一个整数。
现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和;修改的规则是指定某一个格子x,加上或者减去一个特定的值A。
现在要求你能对每个提问作出正确的回答。
1≤N<100000,,提问和修改的总数m<10000条。
输入描述 Input Description输入文件第一行为一个整数N,接下来是1行共n个整数,表示格子中原来的整数。
下面是一个正整数m,接下来有m行,表示m个询问,第一个整数表示询问代号,询问代号1表示增加,后面的两个数x和A表示给位置X上的数值增加A,询问代号2表示区间求和,后面两个整数表示a和b,表示要求[a,b]之间的区间和。
输出描述 Output Description共m行,每个整数样例输入 Sample Input645621341 3 52 1 41 1 92 2 6样例输出 Sample Output2222数据范围及提示 Data Size & Hint1≤N≤100000, m≤10000 。
从题目中所给的数据来看,数据量非常大,所需要的查询次数同样非常多。
#include <iostream>usingnamespace std;int dat[Maxn],N,M;struct Tree{int left,right;longlong sum;}tr[Maxn<<2];//tr[i]表示第i线段树,其中[left,right]表示数据区域的边界,sum表示线段树中当前这一段的总和//数组中的每一个结点都将最终设置在线段树的叶子节点位置上,//而线段树中还存在内部结点的存储。
树状数组
![树状数组](https://img.taocdn.com/s3/m/3ffb717f5acfa1c7aa00ccb0.png)
树状数组武钢三中 吴豪【引言】在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。
但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。
可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)的时间。
当n非常大时,程序会运行得非常缓慢。
因此,这里我们引入“树状数组”,它的修改与求和都是O(logn)的,效率非常高。
【理论】为了对树状数组有个形 象的认识,我们先看下面这张图。
如图所示,红色矩形表示的数组C[]就是树状数组。
这里,C[i]表示A[i-2^k+1]到A[i]的和,而k则是i在二进制时末尾0的个数,或者说是i用2的幂方和表示时的最小指数。
( 当然,利用位运算,我们可以直接计算出2^k=i&(i^(i-1)) )同时,我们也不难发现,这个k就是该节点在树中的高度,因而这个树的高度不会超过logn。
所以,当我们修改A[i]的值时,可以从C[i]往根节点一路上溯,调整这条路上的所有C[]即可,这个操作的复杂度在最坏情况下就是树的高度即O(logn)。
另外,对于求数列的前n项和,只需找到n以前的所有最大子树,把其根节点的C加起来即可。
不难发现,这些子树的数目是n在二进制时1的个数,或者说是把n展开成2的幂方和时的项数,因此,求和操作的复杂度也是O(logn)。
接着,我们考察这两种操作下标变化的规律:首先看修改操作:已知下标i,求其父节点的下标。
我们可以考虑对树从逻辑上转化:如图,我们将子树向右对称翻折,虚拟出一些空白结点(图中白色),将原树转化成完全二叉树。
有图可知,对于节点i,其父节点的下标与翻折出的空白节点下标相同。
因而父节点下标 p=i+2^k (2^k是i用2的幂方和展开式中的最小幂,即i为根节点子树的规模)即 p = i + i&(i^(i-1)) 。
接着对于求和操作:因为每棵子树覆盖的范围都是2的幂,所以我们要求子树i的前一棵树,只需让i减去2的最小幂即可。
VisualBasic之探秘栅栏密码
![VisualBasic之探秘栅栏密码](https://img.taocdn.com/s3/m/4e406c566d175f0e7cd184254b35eefdc9d31544.png)
Visual Basic之探秘栅栏密码发布时间:2022-04-02T05:36:55.470Z 来源:《教学与研究》2021年10月30期作者:潘钰婷[导读] 编程是信息技术学习中不可或缺的一部分,将学习的理论知识编写成代码,进而转换为成品。
潘钰婷苏州市吴中区石湖中学摘要:编程是信息技术学习中不可或缺的一部分,将学习的理论知识编写成代码,进而转换为成品。
Visual Basic 是一款可视化的编程软件,作为苏科版初中信息技术课程的重要学习软件,操作简单,且所编即所得,对于初中阶段刚刚接触编程的学生是最佳选择。
并且密码破解一直以来是学生非常感兴趣的知识点,将密码破译作为Visual Basic项目式学习的其中一个任务,可以达到更好的效果,本文就提出运用Visual Basic对栅栏密码进行加密解密的教学设计。
关键词:Visual Basic、栅栏密码、教学设计案例背景循环结构是程序编程中的一种基本结构,循环结构大大减少了重复语句的编写,减少了代码的冗余,降低了编程的错误率,为后面实现模块化编程及自定义函数打下了基础。
学生在小学阶段完成了scratch模块化编程关于循环结构的浅层了解,进入初中后相继完成了顺序结构和选择结构的学习,对Visual Basic的语句语法有了基本的认识,但是初中学生对多维数组的概念完全不清楚,为了节约课堂时间,提高课堂效率,可以在编写程序时可以采用填空式编程。
本节课运用栅栏密码的加密解密作为循环结构的学习,不仅对Visual Basic有了更深层次的理解,更加提升了学生项目化学习的能力。
案例描述一、游戏导入为了能够激发学生的学习兴趣,采用游戏导入的方式让每位学生都参与到课堂活动中。
将班级同学分为8小组,每小组6人,每小组的第一位同学在老师准备的白纸上写下一串文字或字母,如何将纸条向后传递的过程中,不让其他同学发现纸条的真实内容,而让最后一位同学可以很快知晓想表达的意思呢?在同学思考的同时要强调游戏过程中的课堂纪律并给出游戏规则:1、第一位同学不可以绕过中间同学直接给到最后一位同学;2、第一位同学不可以提前告诉最后一位同学纸条内容,但是可以提前告诉他解释方法。
【vijos】P1448校门外的树
![【vijos】P1448校门外的树](https://img.taocdn.com/s3/m/4ec2e7f5951ea76e58fafab069dc5022aaea4619.png)
【vijos】P1448校门外的树【题意】两种操作,[L,R]种新的树(不覆盖原来的),或查询[L,R]树的种类数。
n<=50000。
【算法】树状数组||线段树【题解】这题可以⽤主席树实现……不过因为不覆盖原来的,所以有更简单的⽅法。
括号法,对于每个K=1的操作标记左右括号的位置。
对于每个K=2的操作,答案就是right前⾯的左括号数量-(left-1)前⾯的右括号数量、⽤树状数组或线段树优化。
注意数组在传递给函数时是传递地址,即在函数中修改即相当于修改原数组。
线段树:#include<cstdio>const int maxn=50010;struct treess{int l,r,sum[3];}t[maxn*3];int n,m,a,b,c;void build(int k,int l,int r){t[k].l=l;t[k].r=r;if(l!=r){int mid=(l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);}}void insert(int k,int x,int kind){int left=t[k].l,right=t[k].r;if(left==right)t[k].sum[kind]++;else{int mid=(left+right)>>1;if(x<=mid)insert(k<<1,x,kind);else insert(k<<1|1,x,kind);t[k].sum[kind]=t[k<<1].sum[kind]+t[k<<1|1].sum[kind];}}int ask(int k,int l,int r,int kind){int left=t[k].l,right=t[k].r;if(l<=left&&right<=r)return t[k].sum[kind];int mid=(left+right)>>1,ans=0;if(l<=mid)ans=ask(k<<1,l,r,kind);if(r>mid)ans+=ask(k<<1|1,l,r,kind);return ans;}int main(){scanf("%d%d",&n,&m);build(1,1,n);for(int i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);if(a==1){insert(1,b,1);insert(1,c,2);}else printf("%d\n",ask(1,1,c,1)-ask(1,1,b-1,2));}return0;}View Code树状数组:#include<cstdio>#define lowbit(x) x&-xconst int maxn=50010;int left[maxn],right[maxn],n,m,a,b,c;void add(int a[],int x){for(int i=x;i<=n;i+=lowbit(i))a[i]++;}int search(int a[],int x){int ans=0;for(int i=x;i>0;i-=lowbit(i))ans+=a[i];return ans;}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&a,&b,&c);if(a==1){add(left,b);add(right,c);}else printf("%d\n",search(left,c)-search(right,b-1)); }return0;}View Code。
第二章 c语言简单计算问题
![第二章 c语言简单计算问题](https://img.taocdn.com/s3/m/64f9d4dad15abe23482f4d7e.png)
填词
for(i = 0; i < p; i++){ char str[200]; scanf("%s", str); for(j = 0; str[j] != '\0'; j++) characters[str[j] - 'A'] --; } for(i=0; i< 26; i++){ if(characters[i] != 0) for(j=0; j<characters[i]; j++) printf("%c", i + 'A'); } printf("\n"); }
棋盘上的距离
国际象棋的棋盘是黑白相间的8*8的方格, 国际象棋的棋盘是黑白相间的 的方格,棋 的方格 子在格子中间,走子规则如下: 子在格子中间,走子规则如下:
– – – – 王:横、直、斜都可以走,但每步限走一格 斜都可以走, 斜都可以走, 后:横、直、斜都可以走,每步格数不受限制 竖均可以走,不能斜走, 车:横、竖均可以走,不能斜走,格数不受限制 只能斜走, 戏。填词游戏包括一个N*M 大小的矩形方格盘和P个单词。然后需要把每 个方格中填上一个字母使得每个单词都能在 方格盘上被找到。每个单词都能被找到要满 足下面的条件
– 每个方格都不能同时属于超过一个的单词。一个 长为k的单词一定要占据k个方格。单词在方格盘 中出现的方向只能是竖直的或者水平的。 – 你的任务是首先在方格盘上找到所有的单词,当 然在棋盘上可能有些方格没有被单词占据。然后 所这些没有用的方格找出来,把这些方格上的字 母按照字典顺序组成一个“神秘单词”
鸡兔同笼问题
lemon tree的语法
![lemon tree的语法](https://img.taocdn.com/s3/m/7ba755673a3567ec102de2bd960590c69fc3d878.png)
Lemon Tree的语法Lemon Tree是一种功能强大且易于使用的编程语言。
它的语法简洁明了,具有丰富的功能和灵活的表达能力。
本文将详细介绍Lemon Tree的语法规则和特性。
基本概念Lemon Tree是一种面向对象的编程语言,它支持类和对象的概念。
在Lemon Tree 中,我们可以定义类来描述具有共同属性和行为的对象。
类是对象的蓝图,定义了对象的结构和行为规范。
Lemon Tree还支持变量和数据类型。
在Lemon Tree中,我们可以声明变量并为其指定数据类型。
常见的数据类型包括整数、浮点数、布尔值、字符串等。
变量和数据类型在Lemon Tree中,可以使用关键字var来声明变量。
例如:var age: Int = 18var name: String = "Tom"在上面的例子中,age是一个整数类型的变量,name是一个字符串类型的变量。
我们可以使用赋值运算符=来给变量赋值。
Lemon Tree支持的数据类型包括:•Int:整数类型•Float:浮点数类型•Bool:布尔类型•String:字符串类型除了以上基本数据类型,Lemon Tree还支持自定义的类和对象。
控制流Lemon Tree提供了多种控制流语句,用于根据条件执行不同的操作。
常用的控制流语句包括:条件语句条件语句用于判断条件是否成立,根据条件的真假执行相应的操作。
在Lemon Tree中,条件语句使用if和else关键字。
var age: Int = 18if age >= 18 {print("You are an adult.")} else {print("You are not an adult.")}在上面的例子中,如果age大于等于18,则打印”You are an adult.”,否则打印”You are not an adult.”。
HH神总结的线段树专辑_超经典的
![HH神总结的线段树专辑_超经典的](https://img.taocdn.com/s3/m/b1ed5423453610661ed9f4d8.png)
46
scanf("%d",&x[i]);
47
sum += query(x[i] , n - 1 , 0 , n - 1 , 1);
48
update(x[i] , 0 , n - 1 , 1);
49
}
50
int ret = sum;
51
for (int i = 0 ; i < n ; i ++) {
52
53 1));
54
else if (op[0] == 'S') update(a , -b , 1 , n , 1);
55
else update(a , b , 1 , n , 1);
56
}
57
}
58
return 0;
}
o hdu1754 I Hate It 题意:O(-1) 思路:O(-1) 线段树功能:update:单点替换 query:区间最值 ?View Code CPP
37
if (R > m) ret += query(L , R , rson);
38
return ret;
39 }
40 int main() {
41
int T , n;
42
scanf("%d",&T);
43
for (int cas = 1 ; cas <= T ; cas ++) {
44
printf("Case %d:\n",cas);
在代码前先介绍一些我的线段树风格:
maxn 是题目给的最大区间,而节点数要开 4 倍,确切的来说节点数要开大于 maxn 的最小 2x 的两倍
bfs【bzoj1632】Usa...
![bfs【bzoj1632】Usa...](https://img.taocdn.com/s3/m/ceb9efff541810a6f524ccbff121dd36a32dc49c.png)
OI学习记录(从新到旧)by hzwer12月20日2-SAT【poj3207】Ikki’s Story IV –Panda’s Trick【bzoj1823】[JSOI2010]满汉全席【poj3683】Priest John’s Busiest Day【bzoj2199】[Usaco2011 Jan]奶牛议会kmp:【bzoj1355】[Baltic2009]Radio Transmissiondijkstra+heap+点分治:[FJOI2014]最短路径树问题二分:【bzoj2348】[Baltic 2011]Plagiarism最小表示法:【bzoj2882】工艺二分+计算几何+最大流:【bzoj1822】[JSOI2010]Frozen Nova 冷冻波最小割:【bzoj3158】千钧一发dp:【bzoj3791】作业【bzoj2431】[HAOI2009]逆序对数列trie+贪心:【bzoj1954】Pku3764 The xor-longest Path可持久化trie+贪心:【bzoj3261】最大异或和高斯消元:【bzoj1923】[Sdoi2010]外星千足虫背包dp:【bzoj1334】[Baltic2008]Electtarjan+费用流:【bzoj2893】征服王dikstra+最小割:NOI2010海拔裴蜀定理:【bzoj2299】[HAOI2011]向量拓扑排序+最小割:NOI2009植物大战僵尸dp:NOI2009管道取珠中位数+可并堆:【bzoj1367】[Baltic2004]sequence可并堆:【bzoj2809】[Apio2012]dispatching贪心:【cf497A】Removing Columns暴力:【cf497B】Tennis Game(TLE)【bzoj3750】[POI2015]Pieczęć二分:【cf497B】Tennis Gameset+贪心:【cf497C】Distributing Partsset+可持久化trie+贪心:【bzoj3166】[Heoi2013]A lo分块+树状数组:【codechefFNCS】Chef and Churu线段树:【bzoj3747】[POI2015]Kinomantarjan:【图论练习】easy 【图论练习】medium 【bzoj2438】[中山市选2011]杀人游戏map+tarjan+dp:【bzoj1924】[Sdoi2010]所驼门王的宝藏斯坦纳树:【bzoj2595】[Wc2008]游览计划heap+贪心:【bzoj2802】[Poi2012]Warehouse Storeheap+st表+点分治+贪心:【bzoj3784】树上的路径dp:【bzoj3770】疯狂的限制dfs序+线段树:【bzoj3653】谈笑风生模拟:【codechefCAPPLE】Chef and Apple Treesdfs+博弈论+树状数组:【bzoj2819】Nim高精度:【bzoj2656】[Zjoi2012]数列(sequence)快速幂:【bzoj2751】[HAOI2012]容易题(easy)dp:【bzoj3174】[Tjoi2013]拯救小矮人计算几何+最小环:【bzoj1027】[JSOI2007]合金最大流:【bzoj2929】[Poi1999]洞穴攀行fail树:【bzoj3172】[Tjoi2013]单词矩阵乘法+二进制:【bzoj2165】大楼kdtree:【BZOJ2716/2648】SJY摆棋子splay:【wikioi1743】反转卡片rope:【wikioi1743】反转卡片树形dp:NOI2011道路修建dfs序+树上倍增+线段树:【bzoj3306】树manacher+树状数组:【bzoj3791】神奇项链二进制+高斯消元【hdu3949】XORlink cut tree:【hdu4010】Query on The Trees 【hdu5002】Tree dfs+高斯消元:【bzoj2115】[Wc2011] Xor仙人掌+dp:【bzoj1487】[HNOI2009]无归岛数位dp:【hdu3555】Bomb 【数位动规练习】准考证状压dp:【bzoj1226】[SDOI2009]学校食堂Diningtarjan+树形dp:【bzoj2427】[HAOI2010]软件安装贪心:【cf494A】Treasurekmp+dp:【cf494B】Obsessive Stringdp+容斥原理:【bzoj1042】[HAOI2008]硬币购物计算几何+贪心:【bzoj1043】[HAOI2008]下落的圆盘树形dp:【bzoj1060】[ZJOI2007]时态同步dp:【bzoj1049】[HAOI2006]数字序列【bzoj2298】[HAOI2011]problem a【bzoj3769】spoj 8549 BST again记忆化搜索:【bzoj1048】[HAOI2007]分割矩阵贪心:【bzoj1052】[HAOI2007]覆盖问题区间dp+记忆化搜索:【bzoj1055】[HAOI2008]玩具取名离线+动态凸包:【bzoj2300】[HAOI2011]防线修建模拟:【cf492A】Vanya and Cubes 【cf492B】Vanya and Lanterns 【cf493A】Vasya and Football 【cf493B】Vasya and Wrestling【cf493C】Vasya and Basketball贪心:【cf492C】Vanya and Exams二分:【cf492D】Vanya and Computer Game数学:【cf492E】Vanya and Field 【cf493E】Vasya and Polynomial模拟退火:【bzoj2428】[HAOI2006]均分数据暴力:【bzoj1145】[CTSC2008]图腾totem(20分)树状数组:【bzoj1145】[CTSC2008]图腾totem其它:【bzoj3100】排列二分+点分治+单调队列:WC2010重建计划三分套三分:[FJOI2014]病毒防护带莫队算法+树状数组:【bzoj3289】Mato的文件管理最小表示法:【vijos1382】寻找主人set+manacher:【bzoj2342】[Shoi2011]双倍回文博弈论:【cf493D】Vasya and Chess二分+半平面交:【bzoj2732】[HNOI2012]射箭ac自动机+dfs:【bzoj2938】[Poi2000]病毒heap:【bzoj1216】[HNOI2003]操作系统贪心+heap:【bzoj1528】[POI2005]sam-Toy Cars树状数组:【数据结构练习】图腾fail树+dfs序+树状数组:NOI2011阿狸的打字机dp:【bzoj3427】Poi2013 Bytecomputer【bzoj3437】小P的牧场(30分) NOI2009诗人小G(30分)树形dp:【bzoj1017】[JSOI2008]魔兽地图DotR贪心:【bzoj3043】IncDec Sequence贪心+heap:【bzoj3252】攻略线段树:【bzoj3226】[Sdoi2008]校门外的区间dijkstra:【bzoj2259】[Oibh]新型计算机结论:【bzoj2405】数字单调队列:【bzoj2096】[Poi2010]Pilots【bzoj2276】[Poi2011]Temperatureheap:【bzoj2096】[Poi2010]Pilots调和级数:【bzoj2793】[Poi2012]Vouchers莫队算法:【bzoj3781】小B的询问贪心+dp:NOI2009诗人小G(50分)决策单调性:【bzoj1010】[HNOI2008]玩具装箱toyNOI2009诗人小G 【bzoj2216】[Poi2011]Lightning Conductor 括号序列+线段树:【bzoj1095】[ZJOI2007]Hide 捉迷藏暴力:WC2013糖果公园(50分)lca+树上莫队:【bzoj3757】苹果树 WC2013糖果公园斜率优化:【bzoj3437】小P的牧场贪心:【bzoj3721】PA2014 Final Bazarek【cf486C】Palindrome Transformation树状数组+逆序对:【bzoj2789】lettershash:【bzoj3555】[Ctsc2014]企鹅QQ数学其它:【cf486A】Calculating Function打表找规律:【bzoj2659】[Beijing wc2012]算不出的算式【bzoj1978】[BeiJing2010]取数游戏game二进制:【cf486B】OR in Matrix树形dp:【cf486D】Valid Sets高精度+更相减损术:【考后欢乐赛】最小公倍数贪心+bfs:【bzoj1193】[HNOI2006]马步距离贪心+dfs:【bzoj1086】[SCOI2005]王室联邦状压dp:【bzoj2734】[HNOI2012]集合选数割点:【bzoj2730】[HNOI2012]矿场搭建二分+hash:【bzoj1567】[JSOI2008]Blue Mary的战役地图dp+高精度:【bzoj1089】[SCOI2003]严格n元树heap+贪心:【bzoj1555】KD之死spfa+状压dp:【bzoj1556】墓地秘密树形dp:【noip模拟赛】LazyChild黑OJ欧拉图:【noip模拟赛】世界人民大团结字符串:【noip模拟赛】擒贼先擒王dp:【noip模拟赛】机房人民大团结【noip模拟赛】序列问题【noip模拟赛】改造二叉树【noip模拟赛】篮球比赛1贪心:【noip模拟赛】盘子序列【codechefFATCHEF】Remy paints the fence【noip模拟赛】numberheap:【noip模拟赛】点名【codechefPRPOTION】Magical Girl and Colored Liquid Potions spfa:【noip模拟赛】长途旅行st表+二分:【noip模拟赛】数字对链表:【noip模拟赛】字符串并查集:【noip模拟赛】感冒病毒树状数组:【noip模拟赛】弱点单调队列:【noip模拟赛】滑动的窗户dfs:【noip模拟赛】序列问题(30分)dfs+bfs:【noip模拟赛】密室逃脱dijkstra:【bzoj2407】探险dfs+背包dp:【noip模拟赛】篮球比赛2(20分)状压dp:【noip模拟赛】篮球比赛2数学:【noip模拟赛】刷漆【noip模拟赛】数列【noip模拟赛】median 【codechefCHEFSEG】Chef and Segment Game差分约束:【noip模拟赛】排队贪心+bfs:NOIP2010引水入城二分:NOIP2011聪明的质检员二分图染色:NOIP2008双栈排序乘法逆元+快速幂+exgcd:【noip模拟赛】calctreap+hash:【bzoj2761】[JLOI2011]不重复数字模拟:【codechefCHEFGR】Chef and Ground 【codechefCHEFLR】Chef and Left-Right 【codechefPRPALN】Let us construct palindromemap:【codechefDISCHAR】Distinct Characters Subsequence二分+贪心:【vijos1894】セチの祈りdp+贪心:【bzoj2708】[Violet 1]木偶二分+dijkstra:【bzoj】[Violet 1]迷宫花园快速选择:【bzoj1753】[Usaco2005 qua]Who’s in the Middle 数学:NOIP2009Hankson的趣味题(90分)调和级数:【noip模拟赛】最大公约数乘法原理+数学:NOIP2009Hankson的趣味题二分+spfa:【noip模拟赛】时间与空间之旅二分+迭代深搜:【noip模拟赛】狐狸的谜语dijkstra+最小割:【noip模拟赛】花园的守护之神dfs+set:【noip模拟赛】买汽水规律+dfs:【noip模拟赛】奶牛编号树形dp:【noip模拟赛】宠物之战【hdu2196】Computer 【noip模拟赛】Kthmap+bfs:【vijos1876】小岛的标号(80分)斐波那契数列:【bzoj3251】树上三角形结论+二分+计算几何:【想法题系列】逗比三角形dijkstra:【bzoj1665】[Usaco2006 Open]The Climbing Wall 攀岩计算几何:【bzoj1914】[Usaco2010 OPen]Triangle Counting 数三角形离线+bfs:【bzoj3417】Poi2013 Tales of seafaringbfs:【noip模拟赛】Graph 【noip模拟赛】天神下凡dp:【noip模拟赛】Incr 【noip模拟赛】小象涂色【noip模拟赛】迎接仪式模拟:【noip模拟赛】挖掘机prim+bfs:【noip模拟赛】藏宝图带权并查集:【noip模拟赛】Hzwer的陨石暴力:【noip模拟赛】“与”(20分)二进制:【noip模拟赛】“与” sequence记忆化搜索+博弈论:【noip模拟赛】日历游戏贪心+线段树+二分:【noip模拟赛】密码密码学:【cfgym100514R】6227020800 【cfgym100514I】Peace of AmericanPie状压dp+dijikstra:【bzoj1097】[POI2007]旅游景点atr贪心:【cf480A】Exams 【bzoj2079】[Poi2010]Guilds拼数问题【bzoj1110】[POI2007]砝码Odw【bzoj2014】[Usaco2010 Feb]Chocolate Buyingmap:【cf480B】Long Jumpsdp:【cf480C】Riding in a Lift 【bzoj2091】The Minima Game【tyvj1097】MM不哭【noip模拟赛】土豪聪要请客zkw费用流:【bzoj1520】[POI2006]Szk-Schools二分+贪心:【bzoj2016】[Usaco2010]Chocolate Eating置换:NOIP2005篝火晚会dfs:NOIP2004虫食算map+bfs:NOIP2002子串变换二分+lca:【bzoj2144】跳跳棋dfs/规律:【noip模拟赛】传教士【noip模拟赛】分火腿exgcd:【noip模拟赛】jams倒酒dijkstra:【bzoj2143】飞飞侠恺撒密码解密:【bzoj2145】悄悄话数学:【noip模拟赛】分火腿构造:【cf482A】Diverse Permutation状压:【noip模拟赛】班服莫比乌斯反演:【vijos1889】天真的因数分解【bzoj2440】[中山市选2011]完全平方数线性规划+zkw费用流:【vijos1891】学姐的逛街计划树形dp:【bzoj1131】[POI2008]Sta【noip模拟赛】警察叔叔就是这个人!置换:【bzoj1119】[POI2009]SLO数学:【cf477A】Dreamoon and Sums D.disiti构造:【cf477B】Dreamoon and Setsdp:【cf477C】Dreamoon and Strings【cf478D】Red-Green Towers 【cf100506】Pachinkodijkstra:【codecomb2090】最小乘积路最大流:【codecomb2091】路径数量【codecomb2092】课程选择二分+单调栈:【codecomb2093】牛宫dfs+位运算:【codecomb2094】还是N皇后半平面交:【bzoj1038】[ZJOI2008]瞭望塔bfs:【bzoj1102】[POI2007]山峰和山谷Grz【bzoj2618】[Cqoi2006]凸多边形树状数组:【codecomb2097】rect线段树:【codecomb2096】lyz【codecomb2098】stone贪心:【cf478C】Table Decorationsset+贪心:【cfgym100506J】Stock贪心+heap:【noip模拟赛】肥得更高倍增:【noip模拟赛】滑板鞋循环节:【noip模拟赛】滑板鞋(70分)单调栈:【noip模拟赛】chenzeyu97要请客前缀和:【bzoj3540】[Usaco2014 Open]Fair Photographyprim:【bzoj3714】[PA2014]KuglarzST表+heap+贪心:NOI2010 超级钢琴贪心:【bzoj3410】[Usaco2009 Dec]Selfish Grazing 自私的食草者二分:【bzoj3412】[Usaco2009 Dec]Music Notes乐谱【noip模拟赛】比赛替罪羊树套可持久化线段树:【bzoj3065】带插入区间K小值排列组合+乘法逆元:【bzoj3398】[Usaco2009 Feb]Bullcow 牡牛和牝牛dijkstra:【bzoj3389】[Usaco2004 Dec]Cleaning Shifts安排值班dp:【bzoj3297】[USACO2011 Open]forgot【bzoj2023/1630】[Usaco2005 Nov]Ant Counting 数蚂蚁【noip模拟赛】数字dfs+map/高斯消元:【bzoj1770】[Usaco2009 Nov]lights 燈bfs:【bzoj1632】[Usaco2007 Feb]Lilypad Pondbfs+链表:【bzoj1098】[POI2007]办公楼biudfs+map:【noip模拟赛】某种密码二分+dp:【noip模拟赛】球的序列二分+bfs:【noip模拟赛】大逃亡半平面交:【poj2451】Uyuw’s Concert模拟:【cf475A】Bayan Bus 【noip模拟赛】锻炼计划bfs:【cf475B】Strongly Connected City二分+ST表/线段树:【cf475D】CGCDSSQ迭代深搜:【noip模拟赛】小猫爬山treap:【noip模拟赛】魔兽争霸lca:【noip模拟赛】祖孙询问tarjan+拓扑+dp:【bzoj1093】[ZJOI2007]最大半连通子图权值线段树套线段树:【bzoj3110】[Zjoi2013]K大数查询数位dp:【bzoj1833】[ZJOI2010]count 数字计数floyd+zkw费用流:【bzoj2324】[ZJOI2011]营救皮卡丘状压dp:【bzoj1072】[SCOI2007]排列perm仙人掌+dp+单调队列:【bzoj1023】[SHOI2008]cactus仙人掌图曼哈顿距离:【bzoj1108】[POI2007]天然气管道Gaz树状数组:【bzoj1106】[POI2007]立方体大作战tet计算几何:【bzoj1132】[POI2008]Tro后缀数组:【wikioi3160】最长公共子串dp:NOIP2001统计单词个数后缀自动机:【spoj1812】Longest Common Substring II 【wikioi3160】最长公共子串【spoj7258】Lexicographical Substring Search扫描线+set:【poj2932】Coneology扫描线+set+树上删边游戏:【FJOI2013】圆形游戏结论:【bzoj3706】【FJ2014集训】反色刷最小环:【poj1734】Sightseeing tripgcd:【codechefSUBGCD】Subarray GCD模拟:【codechefGRID】Sherlock and the Grid 【cf471A】MUH and Sticks 素数筛法:【codechefSUBLCM】Subarray LCM后缀自动机+link cut tree:【bzoj2555】SubString贪心:【bzoj3433】[Usaco2014 Jan]Recording the Moolympics【cf471B】MUH and Important Thingsdfs+树形dp:【bzoj3631】[JLOI2014]松鼠的新家dijkstra:【bzoj3402】[Usaco2009 Open]Hide and Seek 捉迷藏点分治:【bzoj3697】【FJ2014集训】采药人的路径规律:【cf471C】MUH and House of Cardskmp:【cf471D】MUH and Cube Wallsbfs:【noip模拟赛】栅栏迷宫dfs:【noip模拟赛】人偶师(60分)dfs+map:【noip模拟赛】人偶师tarjan+树形dp:【noip模拟赛】交通(70分)dp+素数筛法:【bzoj1025】[SCOI2009]游戏凸包:【bzoj1670】[Usaco2006 Oct]Building the Moat护城河的挖掘贪心:【bzoj3709】[PA2014]Bohater模拟:【bzoj3715】[PA2014]Lustra 【cf467A】George and Accommodation 快速幂+exgcd+lucas+模线性方程组:【bzoj1951】[Sdoi2010]古代猪文bitset:【bzoj3687】【FJ2014集训】简单题二分:【bzoj1271】[BeiJingWc2008]秦腾与教学评估后缀数组:【poj2774】Long Long Message后缀自动机:【spoj8222】Substringslink cut tree:【bzoj3282】Tree二进制:【cf467B】Fedor and New Gamedp:【cf467】George and Job 【cfgym100486J】Saving the Universe tarjan+树形dp:【cf467D】Fedor and Essay模拟:【bzoj2102】[Usaco2010 Dec]The Trough Game字符串:【cfgym100486C】Text Encryption悬线法:【bzoj1057】[ZJOI2007]棋盘制作费用流:【bzoj1927】[Sdoi2010]星际竞速构造:【cf468A】24 Gamemap+dfs:【cf468B】Two Sets点分治:【bzoj2152】聪聪可可【bzoj2599】[IOI2011]Raceheap+prim:【bzoj3479】[Usaco2014 Mar]Watering the Fields贪心:【cf464A】No to Palindromes!dfs:【cf464B】Restore离线+快速幂+费马小定理:【cf464C】Substitutes in Number线段树:【bzoj3685】普通van Emde Boas树统计:【bzoj1318】[Spoj744] Longest Permutation 【bzoj1307】玩具高精度除法:【noip模拟赛】西行寺幽幽子dp+heap:【noip模拟赛】琪露诺tarjan:【bzoj1123】[POI2008]BLO 【noip模拟赛】上白泽慧音【bzoj3391】[Usaco2004 Dec]Tree Cutting网络破坏splay:【bzoj1552/3506】[Cerc2007]robotic sort单调栈:【bzoj3401】[Usaco2009 Mar]Look Up 仰望模拟:【bzoj3403】[Usaco2009 Open]Cow Line 直线上的牛link cut tree+主席树:【bzoj3514】Codechef MARCH14 GERALD07加强版曼哈顿距离+treap:【bzoj1604】[Usaco2008 Open]Cow Neighborhoods 奶牛的邻居模拟:【noip模拟赛】轰炸【noip模拟赛】染色问题dp+单调栈:【bzoj2364】城市美化博弈论:【noip模拟赛】环上的游戏heap+链表:【noip模拟赛】舞蹈课背包dp+高精度:【noip模拟赛】数位和乘积bfs:【bzoj3299】[USACO2011 Open]Corn Maze玉米迷宫计算几何:【bzoj3707】【FJ2014集训】圈地map+set+树上倍增:NOIP2012开车旅行莫比乌斯反演:【bzoj2301】[HAOI2011]Problem b【bzoj1101】[POI2007]Zap dfs:【bzoj1024】生日快乐数论:【bzoj1257】[CQOI2007]余数之和sum单调队列:【bzoj1047】[HAOI2007]理想的正方形贪心:【bzoj1034】[ZJOI2008]泡泡堂BNBdp:【bzoj1044】[HAOI2008]木棍分割凸包+旋转卡壳:【poj2187】Beauty Contest 【bzoj1069】[SCOI2007]最大土地面积K短路:【bzoj1598】[Usaco2008 Mar]牛跑步set+dfs:【bzoj2783】[JLOI2012]树二分+光程原理:【bzoj3695】【FJ2014集训】滑行后缀数组:【tyvj1860】后缀数组【bzoj2251】[2010Beijing Wc]外星联络二分+后缀数组【poj1743】Musical Theme三分套三分:【bzoj1857】[Scoi2010]传送带背包dp+高精度:【bzoj1655】[Usaco2006 Jan] Dollar Dayz 奶牛商店贪心:【noip模拟赛】工资曼哈顿距离:【noip模拟赛】藏妹子之处dfs:【bzoj2719】[Violet 4]银河之星方差线段树:【ch52】还教室暴力:【FJ2014集训】圈地(50分)随机旋转坐标系+计算几何:【FJ2014集训】圈地dp:【cf459E】Pashmak and Graph随机旋转坐标系:平面上的最接近点对模拟:【cf460A】Vasya and Socks暴力:【cf460B】Little Dima and Equation 【bzoj3031】理科男二分+贪心:【cf460C】Present环形均分纸牌:【bzoj3032】七夕祭dfs+欧拉图:【bzoj3033】太鼓达人爬山:【bzoj3680】吊打XXX 【FJ互测】油滴扩展·改vector+(set)【bzoj3224】Tyvj 1728 普通平衡树线段树:【bzoj2212】[Poi2011]Tree Rotationslucas定理:【bzoj2982】combination最小割:【bzoj1324】Exca王者之剑离线+线段树合并:【bzoj3545】[ONTAK2010]Peaks贪心:【cf461A】Appleman and Toastman树形dp:【cf461B】Appleman and Treedfs:【bzoj1751】[Usaco2005 qua]Lake Countingdp+概率:【tyvj1864】[Poetize I]守卫者的挑战骗分:【bzoj1865】[Poetize I]终极武器(50分)dijkstra:【bzoj1752】[Usaco2005 qua]Til the Cows Come Homedfs序+主席树+kruskal:【bzoj3551】[ONTAK2010]Peaks加强版map+线段树:【泉七培训-刘定峰】花园线段树+set+dijkstra:【bzoj2304】[APIO2011]寻路pathdijkstra:【bzoj2346】[Baltic 2011]Lamp模拟:【bzoj2548】[Ctsc2002]灭鼠行动【cf459A】Pashmak and Garden 【cf459B】Pashmak and Flowers离线+树状数组:【bzoj1935】[Shoi2007]Tree 园丁的烦恼dijkstra+树链剖分+线段树:【bzoj1576】[Usaco2009 Jan]安全路经Travellink cut tree:【bzoj2631】tree NOI2014魔法森林splay+hash+二分:【bzoj1014】[JSOI2008]火星人prefix斯特林公式:【bzoj3000】Big Number离线+kruskal+link cut tree:【bzoj2594】[Wc2006]水管局长数据加强版贪心+heap:【bzoj1029】[JSOI2007]建筑抢修dijkstra:【bzoj3040】最短路(road) 【bzoj2662】[BeiJing wc2012]冻结rope:【bzoj3678】wangxz与OJ贪心:【bzoj1907】树的路径覆盖树状数组:【bzoj3192】[JLOI2013]删除物品dp:【cf455A】Boredommap+heap+set:【bzoj1058】[ZJOI2007]报表统计dfs+筛法:【bzoj3629】[JLOI2014]聪明的燕姿dp+贪心:【bzoj1046】[HAOI2007]上升序列【noip模拟赛by wulala】公主的工作构造:【cf459C】Pashmak and Buses树状数组:【cf459D】Pashmak and Parmida’s problem线段树:【noip模拟赛by wulala】公主的朋友bfs+树上倍增:【tyvj1577】泥泞的道路dp:【bzoj1576】楼梯树链剖分+线段树:【bzoj2325】[ZJOI2011]道馆之战bfs:【bzoj1644】[Usaco2007 Oct]Obstacle Course 障碍训练课二进制:NOI2014起床困难综合症kruskal:NOI2014魔法森林(70分)模拟:【cf452A】Eevee 【cf454A】Little Pony and Crystal Mine【cf454B】Little Pony and Sort by Shift【bzoj1349】[Baltic2006]Squint 【bzoj1684】[Usaco2005 Oct]Close Encounter构造:【cf452B】4-point polyline贪心:NOI2014随机数生成器dp+递推:【cf452D】Washer, Dryer, Folder单调栈:【bzoj1683】[Usaco2005 Nov]City skyline 城市地平线dp:【bzoj1664】[Usaco2006 Open]County Fair Events 参加节日庆祝【bzoj1710】[Usaco2007 Open]Cheappal 廉价回文【bzoj2101】[Usaco2010 Dec]Treasure Chest 藏宝箱【bzoj1584】[Usaco2009 Mar]Cleaning Up 打扫卫生【bzoj1638】[Usaco2007 Mar]Cow Traffic 奶牛交通dp+线段树:【bzoj1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚线段树:【bzoj1645】[Usaco2007 Open]City Horizon 城市地平线【cf452D】Washer, Dryer, FolderNOI2007项链工厂线段树合并:【bzoj2733】[HNOI2012]永无乡暴力:【bzoj1647】[Usaco2007 Open]Fliptile 翻格子游戏字符串:【bzoj1622】[Usaco2008 Open]Word Power 名字的能量贪心:【bzoj2020】[Usaco2010 Jan]Buying Feed, II【bzoj1623】[Usaco2008 Open]Cow Cars 奶牛飞车spfa:【bzoj2015】[Usaco2010 Feb]Chocolate Giving【bzoj2100】[Usaco2010 Dec]Apple Deliverydfs:【bzoj1673】[Usaco2005 Dec]Scales 天平置换:【bzoj1697】[Usaco2007 Feb]Cow Sorting牛排序link cut tree:【bzoj2049】[Sdoi2008]Cave 洞穴勘测【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊可持久化线段树:【bzoj3673】可持久化并查集by zky树形dp:【bzoj1864】[Zjoi2006]三色二叉树splay:【bzoj1861】[Zjoi2006]Book 书架NOI2005维修数列dijkstra:【bzoj1674】[Usaco2005]Part Acquisitionprim:公路修建ext/rope:NOI2003Editor概率与期望:【cf453A】Little Pony and Expected Maximumdp/状压dp:【cf453B】Little Pony and Harmony Chest快速幂:【noip模拟赛】果实计数贪心+heap:【noip模拟赛】打地鼠游戏dp:【FJ2014集训】折线统计(30分)【czy系列赛】czy的后宫4 【bzoj1643】[Usaco2007 Oct]Bessie’s Secret Pasture 贝茜的秘密草坪【bzoj1633】[Usaco2007 Feb]The Cow Lexicon 牛的词典【cf451D】Count Good Substrings 【bzoj1649】[Usaco2006 Dec]Cow Roller Coaster 【bzoj2201】彩色圆环dp+树状数组:【FJ2014集训】折线统计二分+dp:【czy系列赛】czy的后宫6二进制:【FJ2014集训】异或之暴力:【FJ2014集训】异或之(10分)【fj互测】二叉树(30分)随机化:【FJ2014集训】直线斯坦纳树分块:【bzoj2821】作诗(Poetize)最小割:【bzoj2561】最小生成树fft:【bzoj2179】FFT快速傅立叶莫队算法:【czy系列赛】czy的后宫3spfa:【cf449B】Jzzhu and Cities数论+快速幂:【fj夏令营】求和模拟+二分:【fj夏令营】解释器(70分)dp+期望:【fj夏令营】营销策略背包dp:【FJ2014集训】简单题(60分)dfs:【FJ2014集训】简单题(10分)【FJ2014集训】愚蠢的算法(30分)线段树+计算几何:【FJ2014集训】信心题上下界网络流:【FJ2014集训】XWW的难题lca:【FJ2014集训】化合物(70分)树链剖分+线段树:【FJ2014集训】最短路splay:【bzoj1251】序列终结者*3 【bzoj3223】Tyvj 1729 文艺平衡树 NOI2005维修数列*2kruskal:【bzoj1682】Out of Hay 干草危机状压dp:【bzoj1688】[Usaco2005 Open]Disease Manangement 疾病管理模拟:【bzoj1637】[Usaco2007 Mar]Balanced Lineupbfs:【bzoj1615】[Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机单调栈:【bzoj1628】[Usaco2007 Demo]City skyline二分+贪心:【bzoj1650】[Usaco2006 Dec]River Hopscotch 跳石子hall定理+线段树:【FJ2014集训】圆桌会议博弈论:【cf451A】Game With Sticks模拟:【cf451B】Sort the Array【cf451C】Predict Outcome of the Game乘法逆元+容斥原理+lucas定理:【cf451E】Devu and Flowers分块:【bzoj2141】排队dp:【FJ互测】昊昊的机油之GRST(80分)贪心:【FJ互测】昊昊的机油之GRST并查集:【泉七培训-郑予凡】雷神领域最大流:【bzoj3504】[Cqoi2014]危桥其它:【cfgym100460B】Time of Trial计算几何:【noip模拟赛】超电磁炮二分+最大流:【noip模拟赛】魔术球问题弱化版kruskal:【noip模拟赛】征兵【noip模拟赛】无线通讯网最短路:【noip模拟赛】坑爹的GPSbfs:【bzoj1656】[Usaco2006 Jan]The Grove 树木【noip模拟赛】聪明的打字员dfs:【bzoj1619】[Usaco2008 Nov]Guarding the Farm 保卫牧场【bzoj1574】[Usaco2009 Jan]地震损坏Damage贪心:【bzoj3399】[Usaco2009 Mar]Sand Castle城堡【cf444A】DZY Loves Physics 分块:【bzoj2724】[Violet 6]蒲公英拓扑排序:【noip模拟赛】混合图差分约束:【noip模拟赛】小K的农场后缀数组:【bzoj1692】[Usaco2007 Dec]队列变换贪心+树形dp:【bzoj1596】[Usaco2008 Jan]电话网络模拟:【noip模拟赛】词编码背包dp+dp【noip模拟赛】笨笨当粉刷匠二分+spfa:【noip模拟赛】笨笨的电话网络数论:【noip模拟赛】hash函数区间dp:【noip模拟赛】秘密文件线性同余方程:【noip模拟赛】合唱队形高精度:【bzoj1754】[Usaco2005 qua]Bull Math模拟:【bzoj1753】[Usaco2005 qua]Who’s in the Middle【noip模拟赛】欢乐斗牛最大流:【bzoj3396】[Usaco2009 Jan]Total flow 水流dp:【bzoj1806】[Ioi2007]Miners 矿工配餐线段树:【bzoj1012】[JSOI2008]最大数maxnumber点分治:【poj1741】Tree树状数组:【bzoj1103】[POI2007]大都市meg欧拉函数+筛法:【bzoj2818】Gcd二分+最小割:【bzoj1532】[POI2005]Kos-Dicing欧拉函数:【bzoj2705】[SDOI2012]Longge的问题斜率优化:【bzoj3156】防御准备强连通分量+spfa:【bzoj1179】[Apio2009]抢掠计划atm随机化:【bzoj3632】外太空旅行数论:【bzoj2005】[Noi2010]能量采集map:【hdu1004】Let the Balloon Rise主席树:【bzoj2588】Spoj 10628. Count on a tree树状数组套线段树:【bzoj3295】[Cqoi2011]动态逆序对上下界网络流:【bzoj2055】80人环游世界【bzoj2502】清理雪道弦图与区间图:【bzoj1006】[HNOI2008]神奇的国度数位dp:【bzoj1026】[SCOI2009]windy数分块:【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊dp:【bzoj1492】[NOI2007]货币兑换Cash(60分)cdq分治:【bzoj1492】[NOI2007]货币兑换Cash 【bzoj3262】陌上花开线段树:【wikioi3044】矩形面积求并模拟:【cf252A】Valera and Antique Items树状数组套treap:【bzoj3262】陌上花开暴力:【cf442A】Borya and Hanabi概率与期望:【cf442B】Andrey and Problem贪心:【cf442C】Artem and Array 【bzoj2430】[Poi2003]Chocolate爬山算法:【luogu1337】[jsoi]平衡点费用流:NOI2008志愿者招募扩展gcd:NOI2002荒岛野人Savage 【poj2891】Strange Way to Express Integers中国剩余定理:【poj1006】生理周期bfs:【noip模拟赛】水灾dp:【noip模拟赛】某种数列问题【cf439D】Devu and his Brother【bzoj1801】[Ahoi2009]chess 中国象棋【泉七培训-郑予凡】子集(40分)bfs+状压dp+记忆化搜索:【noip模拟赛】密码锁bfs+费用流:【noip模拟赛】密码锁(90分)欧拉函数筛法:【poj2478】Farey Sequence快速幂+欧拉函数:NOI2002Robot欧拉函数:【poj2407】Relatives贪心:【cf437C】The Child and Toy 【cf437B】The Child and Set构造:【cf439C】Devu and Partitioning of the Array并查集:【cf437D】The Child and Zoo 【codechefCHSEQ22】Chef and Favourite Sequence 模拟:【cf437A】The Child and Homework 【cf440A】Forgotten Episode【cf440B】Balancer 【cf439A】Devu, the Singer and Churu, the Joker上下界网络流:【zoj2314】Reactor Cooling 【zoj3229】Shoot the Bullet【poj2396】Budget 【泉七培训-郑予凡】天罚(20分)记忆化搜索:【cf440C】One-Based Arithmetic强连通分量+记忆化搜索:【bzoj1589】[Usaco2008 Dec]Trick or Treat on the Farm 采集糖果费用流:【bzoj2661】[BeiJing wc2012]连连看【bzoj1930】[Shoi2003]pacman吃豆豆(70分)矩阵乘法:【bzoj2510】弱题三角剖分:【bzoj2391】Cirno的忧郁树链剖分+线段树:【bzoj3531】[Sdoi2014]旅行二分+树链剖分+线段树套平衡树【bzoj1146】[CTSC2008]网络管理Network树链剖分+线段树套平衡树:【泉七培训-刘定峰】花园(70分)矩阵乘法+高精度:【泉七培训-郑予凡】致命漏洞dfs:【泉七培训-刘定峰】链型网络(30分)bfs+dp+dfs:【泉七培训-刘定峰】物流(30分)交互题+其它:【泉七培训-黄施霖】最近公共祖先(90分)迭代深搜:【泉七培训-黄施霖】分球(20分)中位数+链表:【cf433C】Ryouko’s Memory Note模拟:【cf433B】Kuriyama Mirai’s Stones【cf433A】Kitahara Haruki’s Gift【cf435A】Queue on Bus Stop 【cf435C】Cardiogramspfa:【bzoj1715】[Usaco2006 Dec]Wormholes 虫洞dp+单调队列:【bzoj2442】[Usaco2011 Open]修剪草坪贪心:【bzoj1634】[Usaco2007 Jan]Protecting the Flowers 护花【cf435B】Pasha Maximizes矩阵乘法:【NOI2014全国互测Round2】Fibonacci矩阵(20分)spfa+状压dp:【NOI2014全国互测Round2】逃跑计划(20分)三角剖分:【tyvj1360】Imperishable Shooting状压dp:【tyvj1617/2062】偷葡萄(grape)bfs+最小割:【bzoj1797】[Ahoi2009]Mincut 最小割置换群+背包dp+exgcd+乘法逆元:【bzoj1004】[HNOI2008]Cards暴力:【bzoj1028】[JSOI2007]麻将二分:【bzoj1196】[HNOI2006]公路修建问题中位数+treap【bzoj1112】[POI2008]砖块Klo线段树+贪心:【bzoj1828】[Usaco2010 Mar]balloc 农场分配贪心:【bzoj1707】[Usaco2007 Nov]tanning分配防晒霜线段树:【bzoj1651】[Usaco2006 Feb]Stall Reservations 专用牛棚离线+分类与平衡:【bzoj2506】calc树状数组+dp:【bzoj1537】[POI2005]Aut- The Bus树状数组:【bzoj1452】[JSOI2009]Count 【bzoj3155】Preprefix sum二分+凸壳+分块:【bzoj2388】旅行规划dp:【bzoj1592】[Usaco2008 Feb]Making the Grade 路面修整树状数组+逆序对:NOIP2013火柴排队prufer编码+排列组合:【bzoj1211】[HNOI2004]树的计数prufer编码+排列组合+高精度:【bzoj1005】[HNOI2008]明明的烦恼斜率优化:[Usaco2008 Mar]土地购买【bzoj1911】[Apio2010]特别行动队【bzoj1096】[ZJOI2007]仓库建设kruskal:【bzoj2429】[HAOI2006]聪明的猴子【bzoj1626】[Usaco2007 Dec]Building Roads 修建道路离线+线段树:【bzoj3585】mex树状数组:【bzoj1782】[Usaco2010 Feb]slowdown慢慢游状压dp:【bzoj1231】[Usaco2008 Nov]mixup2 混乱的奶牛树形dp+dfs:【bzoj1827】[Usaco2010 Mar]gather 奶牛大集会分数规划:【bzoj1690】[Usaco2007 Dec]奶牛的旅行二分+后缀数组:【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式dp:【bzoj1668】[Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富【cf431C】k-Tree 【bzoj1600】[Usaco2008 Oct]建造栅栏【bzoj1617】River Crossing渡河问题【bzoj1260】[CQOI2007]涂色paint 【bzoj1679】[Usaco2005 Jan]Moo Volume 牛的呼声【bzoj1642】[Usaco2007 Nov]Milking Time 挤奶时间最大流:【bzoj1711】[Usaco2007 Open]Dingin吃饭高精度:【tyvj1040】表达式计算dp+单调队列:【bzoj1233】[Usaco2009Open]干草堆towerdp+背包dp:【bzoj1296】[SCOI2009]粉刷匠爬山算法:【poj2420】A Star not a Tree? 【tyvj1551】平衡的爱【poj2069】Super Star 模拟退火:【poj2420】A Star not a Tree?贪心+筛法:【432C】Prime Swaps模拟:【cf431A】Black Square暴力+dfs:【cf431B】Shower Line随机增量法:【bzoj1336】[Balkan2002]Alien最小圆覆盖【bzoj1337】最小圆覆盖反素数+dfs:【bzoj1053】[HAOI2007]反素数antfloyd:【1612】[Usaco2008 Jan]Cow Contest奶牛的比赛筛法:【bzoj1607】[Usaco2008 Dec]Patting Heads 轻拍牛头并查集:【tyvj1863】[Poetize I]黑魔法师之门spfa:【bzoj1631】[Usaco2007 Feb]Cow Partyrmq:【bzoj1636】[Usaco2007 Jan]Balanced Lineupbfs:【bzoj1627】[Usaco2007 Dec]穿越泥地贪心:【bzoj1629】[Usaco2007 Demo]Cow AcrobatsAC自动机+dp【tyvj1519】博彩游戏构造:【cf430A】Points and Segments (easy)模拟:【cf430B】Balls Game 【bzoj1755】[Usaco2005 qua]Bank Interest【cf432A】Choosing Teams单调队列:【bzoj1293】[SCOI2009]生日礼物树形dp:【tyvj1520】树的直径spfa:【tyvj1733】[APIO2011]寻路dfs+kruskal:【bzoj1016】[JSOI2008]最小生成树计数离线+树状数组:【bzoj1878】[SDOI2009]HH的项链【bzoj2743】[HEOI2012]采花离线+线段树:【bzoj3339】Rmq Problem并查集:【bzoj1116】[POI2008]CLO博弈论:【bzoj1115】[POI2009]石子游戏Kam线段树套平衡树:【poj2104】K-th Numbertarjan:【bzoj2208】[Jsoi2010]连通数排列组合:【bzoj3505】[Cqoi2014]数三角形高精度gcd:【bzoj1876】[SDOI2009]SuperGCDbfs:【tyvj1234】bench与奔驰并查集/tarjan:【bzoj1529】[POI2005]ska Piggy banksdp+矩阵乘法:【bzoj1898】Swamp 沼泽鳄鱼异或:【bzoj1603】[Usaco2008 Oct]打谷机背包dp:【tyvj1608】小熊分糖概率与期望:【bzoj2318】Spoj4060 game with probability Problem网络流:【tyvj1517】飘飘乎居士的乌龟【bzoj1458】士兵占领后缀数组:【bzoj1031】[JSOI2007]字符加密Cipher线段树【bzoj1593】[Usaco2008 Feb]Hotel 旅馆dp:【bzoj1037】[ZJOI2008]生日聚会Partyheap+贪心+链表:【bzoj2288】【POJ Challenge】生日礼物【bzoj1150】[CTSC2007]数据备份Backup抽屉原理:【poj2356】Find a multiplelca:【bzoj1787】[Ahoi2008]Meet 紧急集合贪心:【bzoj2697】特技飞行中位数:【bzoj3293】[Cqoi2011]分金币费用流:【bzoj3280】小R的烦恼暴力:【bzoj1800】[Ahoi2009]fly 飞行棋并查集:【bzoj1854】[Scoi2010]游戏二分+后缀数组:【poj1743】Musical Themekmp+dp+矩阵乘法:【bzoj1009】[HNOI2008]GT考试模拟:【noip模拟赛】机器人spfa:【noip模拟赛】虫洞dp+矩阵乘法:【noip模拟赛】数列二分+分块:【bzoj2453】维护队列【bzoj2120】数颜色容斥原理:【bzoj2393】Cirno的完美算数教室【bzoj1853】[Scoi2010]幸运数字费用流/zkw费用流:【bzoj2245】[SDOI2011]工作安排【bzoj1070】[SCOI2007]修车费用流:【bzoj2879】[Noi2012]美食节裴蜀定理:【bzoj2257】[Jsoi2009]瓶子和燃料bfs+期望:NOI2005聪聪和可可贪心:【cf425A】Sereja and Swaps二分+暴力:【cf425D】Sereja and Squaresdp+矩阵乘法:【bzoj2326】[HNOI2011]数学作业kruskal+树上倍增:【bzoj1977】[BeiJing2010组队]次小生成树Tree树状数组+主席树:【bzoj1901】Zju2112 Dynamic Rankings期望:【bzoj3450】Tyvj1952 Easy 【bzoj1426】收集邮票splay:NOI2005维修数列树链剖分:【bzoj1984】月下“毛景树”随机化:【bzoj2396】神奇的矩阵线段树:【bzoj1858】[Scoi2010]序列操作【bzoj3212】Pku3468 A Simple Problem with Integers最小割:【bzoj2768】[JLOI2010]冠军调查【bzoj3275】Number背包dp:【bzoj2748】[HAOI2012]音量调节链表启发式合并:【bzoj1483】[HNOI2009]梦幻布丁二分:【bzoj1863】[Zjoi2006]trouble 皇帝的烦恼欧拉图:一笔画成dp:[HNOI2004]打鼹鼠规律:【bzoj1432】[ZJOI2009]Function模拟:【cf427A】Police Recruits 【cf427B】Prison Transfer强连通分量:【cf427C】Checkposts二进制:【cf424C】Magic Formulas线段树:【poweroj1689】Mayor’s posters主席树:【bzoj3524】[Poi2014]Couriers 【poj2104】K-th Number模拟:【cf413A】Data Recovery 【cf413B】Spyke Chatting【cf420A】Start Up 【cf420B】Online Meeting 【cf421A】Pasha and Hamsters 【bzoj1033】[ZJOI2008]杀蚂蚁antbuster 【bzoj1972】[Sdoi2010]猪国杀贪心:【cf413C】Jeopardy! 任务调度线段树套平衡树:【bzoj3196】Tyvj 1730 二逼平衡树伸展树:【bzoj3223】Tyvj 1729 文艺平衡树博弈论:【bzoj1874】[BeiJing2009 WinterCamp]取石子游戏乘法逆元:NOIP2011多项式系数线段树:【cf413E】Maze 2D状压dp:【cf417D】Cunning Gena莫队算法:【bzoj2038】[2009国家集训队]小Z的袜子(hose)分块+二分:【bzoj3304】教主的魔法计算几何:【poj1410】Intersection 【poj2826】An Easy Problem?! 【poj1039】Pipe 【poj1654】Area 【poj2954】Triangle 【poj1265】Area最小割:【bzoj1391】[Ceoi2008]orderbfs:【bzoj1687】[Usaco2005 Open]Navigating the City 城市交通中位数:【bzoj3170】[Tjoi 2013]松鼠聚会kruskal:【bzoj3390】[Usaco2004 Dec]Bad Cowtractors牛的报复博弈论:【bzoj2463】[中山市选2009]谁能赢呢?模拟:【bzoj1621】[Usaco2008 Open]Roads Around The Farm分岔路口【cf417B】Crash 【cf417C】Football 【cf412A】Poster 【cf412B】Network Configuration 【cf412C】Pattern 【cf412E】E-mail Addresses裴蜀定理:【bzoj1441】Min二分:【bzoj1816】[Cqoi2010]扑克牌【bzoj1639】[Usaco2007 Mar]Monthly Expense 月度开支floyd:【bzoj1641】[Usaco2007 Nov]Cow Hurdles 奶牛跨栏贪心:【bzoj1689】[Usaco2005 Open] Muddy roads 泥泞的路bfs:【bzoj1671】[Usaco2005 Dec]Knights of Ni 骑士背包dp:【cf417A】Eliminationdfs:【cf412D】Giving Awardsdp+二分:【bzoj1669】[Usaco2006 Oct]Hungry Cows饥饿的奶牛dp60分/dp+矩阵乘法100分:【ch30】摆花bfs:【bzoj1611】[Usaco2008 Feb]Meteor Shower流星雨【bzoj1646】[Usaco2007 Open]Catch That Cow 抓住那只牛lca:【bzoj1602】[Usaco2008 Oct]牧场行走树链剖分+线段树:【bzoj1036】[ZJOI2008]树的统计Count 【bzoj2243】[SDOI2011]染色模拟:【cf415A】Mashmokh and Lights数学:【cf415B】Mashmokh and Tokens素数筛法+构造:【cf415C】Mashmokh and Numbersdp+筛法:【cf415D】Mashmokh and ACM可并堆:【bzoj1455】罗马游戏dp:【bzoj1677】[Usaco2005 Jan]Sumsets 求和kruskal+树上倍增:NOIP2013货车运输伸展树:【bzoj1251】序列终结者floyd:【tyvj1510】专家复仇计算几何:【poj2318】TOYS 【poj2398】Toy Storage 【poj3304】Segments【poj1269】Intersecting Lines 【poj2653】Pick-up sticks【bzoj1610】[Usaco2008 Feb]Line连线游戏【poj1066】Treasure Huntspfa+计算几何:【poj1556】The Doors单调栈:【bzoj1657】[Usaco2006 Mar]Mooo 奶牛的歌声dijkstra+heap:【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级贪心+heap:最大最小差【bzoj1572】[Usaco2009 Open]工作安排Jobrmq:【bzoj1699】[Usaco2007 Jan]Balanced Lineup排队模拟:【bzoj1666】[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏【cf404A】Valera and X 【bzoj1635】[Usaco2007 Jan]Tallest Cow 最高的牛【bzoj1620】[Usaco2008 Nov]Time Management 时间管理dp:【cogs754】[USACO Open09]滑雪训练【fjoi2014】石子合并问题【bzoj1616】[Usaco2008 Mar]Cow Travelling游荡的奶牛【noip模拟赛】DNA序列期望:【poj2096】Collecting Bugs最小割:【bzoj2132】圈地计划【fjoi2014】棋盘残局问题【bzoj2127】happiness 树的重心:【poj1655】Balancing Act 【poj3107】Godfather点分治:【bzoj1468】Treebfs:【bzoj2292】[POJ Challenge]永远挑战【bzoj2252】[2010Beijing wc]矩阵距离背包dp:【bzoj2287】[POJ Challenge]消失之物字典树:【bzoj1174】[Balkan2007]Toponyms费用流:【网络流24题】航空计划prufer编码:【bzoj1430】小猴打架treap:【bzoj1691】[Usaco2007 Dec]挑剔的美食家二分:NOIP2012借教室floyd:【bzoj1624】[Usaco2008 Open] Clear And Present Danger 寻宝之路dfs:【bzoj1648】[Usaco2006 Dec]Cow Picnic 奶牛野餐kruskal:【bzoj1232】[Usaco2008Nov]安慰奶牛cheer单调栈:【bzoj1660】[Usaco2006 Nov]Bad Hair Day 乱发节二进制:【noip模拟赛】求和式思考题:【bzoj1121】[POI2008]激光发射器SZK约数:【bzoj1968】[Ahoi2005]COMMON 约数研究逆序对:【noip模拟赛】翻转排序。
CodeforcesJ.ASimpleTask(多棵线段树)
![CodeforcesJ.ASimpleTask(多棵线段树)](https://img.taocdn.com/s3/m/056ca09da1116c175f0e7cd184254b35eefd1a97.png)
CodeforcesJ.ASimpleTask(多棵线段树)题⽬描述:DescriptionThis task is very simple. Given a string S of length n and q queries each query is on the format i j k which means sort the substring consisting of the characters from i to j in non-decreasing order if k = 1 or in non-increasing order if k = 0.Output the final string after applying the queries.InputThe first line will contain two integers n, q (1 ≤ n ≤ 105, 0 ≤ q ≤ 50 000), the length of the string and the number of queries respectively.Next line contains a string S itself. It contains only lowercase English letters.Next q lines will contain three integers each i, j, k (1 ≤ i ≤ j ≤ n, ).OutputOutput one line, the string S after applying the queries.Sample Input10 5abacdabcda7 10 05 8 11 4 03 6 07 10 110 1agjucbvdfk1 10 1Sample Outputcbcaaaabddabcdfgjkuv思路:题⽬的意思是,给定⼀个字符串,有q个询问,要把区间[l,r]的字符根据k的值升序(k=1),或降序(k=0)改变。
NOI2004 郁闷的出纳员 线段树解法解题报告
![NOI2004 郁闷的出纳员 线段树解法解题报告](https://img.taocdn.com/s3/m/7d6d161d10a6f524ccbf8589.png)
【问题描述】OIER 公司是一家大型专业化软件公司,有着数以万计的员工。
作为一名出纳员,我的任务之一便是统计每位员工的工资。
这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资。
如果他心情好,就可能把每位员工的工资加上一个相同的量。
反之,如果心情不好,就可能把他们的工资扣除一个相同的量。
我真不知道除了调工资他还做什么其它事情。
工资的频繁调整很让员工反感,尤其是集体扣除工资的时候,一旦某位员工发现自己的工资已经低于了合同规定的工资下界,他就会立刻气愤地离开公司,并且再也不会回来了。
每位员工的工资下界都是统一规定的。
每当一个人离开公司,我就要从电脑中把他的工资档案删去,同样,每当公司招聘了一位新员工,我就得为他新建一个工资档案。
老板经常到我这边来询问工资情况,他并不问具体某位员工的工资情况,而是问现在工资第k 多的员工拿多少工资。
每当这时,我就不得不对数万个员工进行一次漫长的排序,然后告诉他答案。
好了,现在你已经对我的工作了解不少了。
正如你猜的那样,我想请你编一个工资统计程序。
怎么样,不是很困难吧?【输入文件】第一行有两个非负整数n 和min。
n 表示下面有多少条命令,min 表示工资下界。
接下来的n 行,每行表示一条命令。
命令可以是以下四种之一:_(下划线)表示一个空格,I 命令、A 命令、S 命令中的k 是一个非负整数,F 命令中的k 是一个正整数。
在初始时,可以认为公司里一个员工也没有。
【输出文件】输出文件的行数为F 命令的条数加一。
对于每条F 命令,你的程序要输出一行,仅包含一个整数,为当前工资第k 多的员工所拿的工资数,如果k 大于目前员工的数目,则输出-1。
输出文件的最后一行包含一个整数,为离开公司的员工的总数。
【样例输入】9 10I 60I 70S 50F 2I 30S 15A 5F 1F 2【样例输出】1020-12【约定】I 命令的条数不超过100000A 命令和S 命令的总条数不超过100F 命令的条数不超过100000每次工资调整的调整量不超过1000新员工的工资不超过100000【题解】把线段树作为一个桶,记录-200000~200000的工资中每个工资有多少人。
关于删边最短路问题的若干见解
![关于删边最短路问题的若干见解](https://img.taocdn.com/s3/m/1d5e691f6d85ec3a87c24028915f804d2b1687d3.png)
关于删边最短路问题的若⼲见解关于最短哥问题的若⼲见解马鑫宇1.不缩点的做法⾸先,对于⼀个图,我们从S点和T点进⾏两次搜索其到所有顶点的最短路,这些最短路定向后将构成两个定向树(不唯⼀时,任取其⼀),根分别为S(出发根)和T(到着根),我们称之为S树和T树。
对于两个树,我们分别维护其顶点u的深度为dS[u]和dT[u]。
最⼀开始没有任何删边之前就可以在最短路中⽤到的边称之为原边,其他边称之为备择边,视实际需要这两个词可能会有不同含义。
现在我们只考虑S树⽽⽆视T树。
那么显然每当删去S-T路之外的边时我们直接输出最短路即可,⽽删除S-T路上的边(i,j)(割边)时,T将被隔离在S树的某⼀个⼦树中。
将(i,j)之外的S树上的边视为原边,不在S树上⽽能连接被割断的S树和T所在⼦树的边视为备择边。
那么显然,删边后的最短路(备择最短路)⼀定过⾄少⼀条备择边。
现在我们证明备择最短路⼀定只过⼀个备择边。
定理1:对任意的割边(i,j),⼀定存在⼀条备择最短路(可能不唯⼀),使存在被割S树上的点u和T⼦树上的点v,使得备择最短路表⽰为如下结构:S出发经被割S树上的边到u,备择边(u,v),v出发经T树上的点到T;因⽽其长度为dS[u]+dT[v]+w[u,v](⽂中所有定理均假定备择最短路存在)证明:假设备择最短路为L,且长度⼩于所有满⾜上⾯性质的路。
显见L中必定存在⾄少⼀条备择边(u,v),否则割边(i,j)将⽆法构成S-T割,因为只有T存在于被割S树中才有这种情况,⽽此时S树上S-T路未被(i,j)割断。
我们取(u,v)为最后经过的备择边。
现在取新路L2如下:S出发经原边到达u,(u,v),v出发经T树边到达T。
显见L2路径长度不超过L,因为将L拆成3部分:S-u,u-v,v-T后,由最⼩树性质,其对应部分长度⼀定不⼩于L2对应部分的长度。
注意因为v和T在被割后相同的S树的⼦树中,因此T树中v到T的路不会被(i,j)割断,如若不然则有下图:⽐较i,j,v三点间的最短路即可得出。
浙江大学 acm程序设计竞赛 培训 线段树
![浙江大学 acm程序设计竞赛 培训 线段树](https://img.taocdn.com/s3/m/aa601208763231126edb11ab.png)
[2,3][3,4]
[6,7] [7,8]
完全二叉树
• type • TreeNode = record • b, e: Integer; • cover: Integer; • end;
对应区间
插入算法
• • • • • • • • • • • • • • • • • procedure Insert(p, a, b: Integer); var 未被完全覆盖 m: Integer; begin if Tree[p].cover = 0 then 取中值 begin m := (Tree[p].b + Tree[p].e) div 2; 完全覆盖 if (a = Tree[p].b) and (b = Tree[p].e) then Tree[p].cover := 1 在左边 else if b <= m then Insert(p * 2, a, b) 在右边 else if a >= m then Insert(p * 2 + 1, a, b) else begin Insert(p * 2, a, m); Insert(p * 2 + 1, m, b); end; 二分 end; end;
分析
• 原先构造线段树的方法不再适用,但是我 们可以通过修改线段树的cover域的定义, 使得这道题也能用线段树来解。 • 定义cover如下:cover=-1表示该区间由多 种颜色组成。cover>=0表示该区间只有一 种单一的颜色cover。
插入算法
未被完全覆盖或者染色不同
• procedure Insert(p, l, r, a, b, c: Integer); • var 为什么? • m: Integer; 有可能越界吗? • begin • if Tree[p].cover <> c then • begin • m := (l + r) div 2; • if (a = l) and (b = r) then Tree[p].cover := c • else begin • if Tree[p].cover >= 0 then • begin • Tree[p * 2].cover := Tree[p].cover;
vijos
![vijos](https://img.taocdn.com/s3/m/b46bfb0b6c85ec3a87c2c564.png)
p1000:直接读入,输出p1001:noip原题p1002:noip原题p1003:noip原题p1004:从后面往前面推。
如果win[a,b,c]=true;可以推出:win[a,b-1,c]=true;和win[a,b,c-1]=true;注意b=1和c=1还有b=1 and c=1的情况。
p1005:from: /book-lrjhl/ex.htm枚举S1的―分段方式‖。
例如231241,如果分段方式为23|124|1,则124为完整的一段,前面必为123,后面必为125,经检验这是可行的。
因此如果有一个完整段的情况可以用O(n^2)次枚举来判定。
剩下只需要解决没有完整段的情况,即被分成两段。
如2312,如果被分为2|312,则需要枚举位数。
如果是3位,有方程??2 + 1 = 312,无解;如果是4位,有方程???2 + 1 = 312?,有解3122 + 1 = 3123。
基本思想如此,但是需要注意有进位的情况。
p1006:最左边和最右边的点有点特殊。
最好是从下面向上面处理。
那么每个点都有两条路出去。
p1007:如果圆柱的半径是0,很容易求出答案,再加上2*pi*r。
p1008:noip原题p1009:很容易转化成另一个的问题一个人在原点,他的速度为v,另一个人在位置b,速度为0,总长为n求最小的x使得 vx mod n= b mod n就是要求vx+ny=b可以求出vx+n*y=gcd(x,n)中的x,y用下面的方法求两边乘以 b/gcd(x,n)得到记c=b/gcd(x,n);v*(c*x)+n*(c*y)=b;那么c*x和c*y就是答案可以用下面的算法求出这个算法是用来算出ax+by=gcd(a,b)中的整数x,y;p1010:计算a^b,直接算,不会tle,注意输出格式p1011:先把所有的点从大到小排序记录g[i,j]为从以(i,j)结束的最长路的长度for 每个点(从大到小) doif g[i,j]<g[i+1,j]+1 then g[i,j]=g[i+1,j]+1if g[i,j]<g[i,j+1]+1 then g[i,j]=g[i,j+1]+1if g[i,j]<g[i-1,j]+1 then g[i,j]=g[i-1,j]+1if g[i,j]<g[i,j-1]+1 then g[i,j]=g[i,j-1]+1 输出最大的g[i,j]p1012:原来是一道很烦的题目,用分治,可以按横坐标排序,然后枚举加一个很强但很简单的剪枝。
CodeForces-1263E(线段树维护前缀和最值)
![CodeForces-1263E(线段树维护前缀和最值)](https://img.taocdn.com/s3/m/1250bb5bc950ad02de80d4d8d15abe23492f0353.png)
CodeForces-1263E(线段树维护前缀和最值)题意您要设计⼀个只有⼀⾏的打字机,这⼀⾏的长度是⽆限⼤,⼀开始可以认为每个字符都是空。
您的打字机有⼀个光标只指向⼀个字符,⼀开始指向最左侧的字符。
使⽤者有三种操作:L 将光标向左移⼀格(当光标已经在最左侧时,忽略这次操作)R 将光标向右移⼀格⼀个⼩写字符或者'(',')' 将当前字符替换为给定字符您需要在每次操作后,判断这⼀⾏是否是合法括号序列(例如(ahakioi)就是合法的,(ige))(tscore就是⾮法的),不是输出-1,否则输出最多嵌套数(例如()(())()()的最多嵌套数是 2,(()(()())())(())的最多嵌套数是 3)。
思路看上去是个⼤模拟,实则是个线段树的技巧题。
⽤⼀个pos记录光标的位置。
记'('为1,')'为-1,其他字符为0,这样如果有某个前缀和<0(只⽤判断前缀和最⼩值<0即可),那么就不合法,或者所有加起来不等于0,也不合法。
单点更新,维护区间和sum,前缀和最⼩值mn,前缀和最⼤值mx。
区间前缀和最⼩值和左右⼦树有关,⽐较左⼦树的前缀和最⼩值、右⼦树的前缀和最⼩值+左⼦树的区间和,⽤⼩的那个更新mn[rt],前缀和最⼤值同理。
那么在合法的情况下,前缀和的最⼤值即为最多嵌套数。
代码#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int N=1e6+5;const double eps=1e-8;const double PI = acos(-1.0);#define lowbit(x) (x&(-x))int sum[N<<2],mn[N<<2],mx[N<<2],n;void pushUp(int rt){sum[rt]=sum[rt<<1]+sum[rt<<1|1];mn[rt]=min(mn[rt<<1],mn[rt<<1|1]+sum[rt<<1]);mx[rt]=max(mx[rt<<1],mx[rt<<1|1]+sum[rt<<1]);}void update(int L,int C,int l,int r,int rt){if(l==r){sum[rt]=mn[rt]=mx[rt]=C;return;}int m=(l+r)>>1;if(L <= m) update(L,C,l,m,rt<<1);else update(L,C,m+1,r,rt<<1|1);pushUp(rt);}int main(){std::ios::sync_with_stdio(false);cin>>n;string s;cin>>s;int pos=1,r=1,ans=0;for(int i=0; i<n; i++){char c=s[i];if(c=='R') pos++;else if(c=='L'){if(pos>1) pos--;}else{if(c=='(')update(pos,1,1,n,1); else if(c==')')update(pos,-1,1,n,1); elseupdate(pos,0,1,n,1); }if(sum[1]!=0||mn[1]<0){cout<<-1<<" ";}elsecout<<mx[1]<<" ";}cout<<endl;return 0;}。
Segment tree Beats!Fver
![Segment tree Beats!Fver](https://img.taocdn.com/s3/m/beee5a2731126edb6f1a10fe.png)
为什么要做这个PPT•今年清华集训, 出了一道线段树题。
•在讲题的时候pls表示他不会做区间版本。
•于是本着科学打脸观,我们回去研究了一下这一类问题,于是就有了这个PPT辣。
•如今的OI界:•仙人掌当道•玄学题横行•物理题为[和谐]一方•相信很多同学在学习了线段树之后,便把它打上了noip的标签,之后便少有研究。
•的确,在OI中大部分有关线段树的难题,难点都不在线段树本身。
•那么接下来,让我们回归线段树,来见识一下一些不再trivial的线段树问题。
•让我们进入正题→_→•在意左下角的都是baka!•给定一个长度为n的数列A,接下来有m次操作:•区间[l,r]中的所有数变成min(A i,x)•询问区间[l,r]中所有数的和•n,m≤50000•我会分块!•n,m ≤ 500000•线段树?•最基本的线段树没有办法维护,可以尝试一波乱搞•类比某道区间取模的题,我们每一次找出这个区间的最大值mx,如果mx>x,那么暴力修改这个位置的值,否则已经修改完毕,退出。
•这样我们就得到了一个O(n2logn)的优秀解法辣。
•我们来试着打一打补丁。
•对线段树上的每一个区间维护区间最大值mx,这个区间中最大值出现的次数t,区间次大值se,当然还要维护区间和sum•现在考虑打上区间取min标记x:•如果mx<=x,那么对sum就没有修改。
•如果se<x<mx,那么sum=sum-(mx-x)×t。
•如果x<=se<mx,那么…•妈呀我不会做•如果遇到这种情况,我们分别DFS这个节点的两个孩子,如果当前DFS的过程中遇到了前两种情况,就直接修改打上标记然后退出,否则就继续DFS。
4|32|14|31|~2|~4|~3|~•区间[1,n]对2取min 2|12|~2|~2|~2|1•我们来试着写一写这玩意的程序,发现跑的飞快。
•实际上这个做法的复杂度是O(nlogn)的。
空间索引-四叉树
![空间索引-四叉树](https://img.taocdn.com/s3/m/8d357a71dcccda38376baf1ffc4ffe473368fd79.png)
空间索引-四叉树前⾔作为程序员,应该都对⼆叉树都不陌⽣,我们都知道⼆叉树的变体⼆叉查找树,⾮常适合⽤来进⾏对⼀维数列的存储和查找,可以达到 O(logn) 的效率;我们在⽤⼆叉查找树进⾏插⼊数据时,根据⼀个数据的值和树结点值的对⽐,选择⼆叉树的两个叉之⼀向下,直到叶⼦结点,查找时使⽤⼆分法也可以迅速找到需要的数据。
但⼆叉树只⽀持⼀维数据,如⼀个标量数值,对地图上的位置点这种有xy两个⽅向上的信息却⽆能为⼒,那么是否有⼀种树能够⽀持⼆维数据的快速查询呢?四叉树介绍四元树⼜称四叉树是⼀种树状数据结构,在每⼀个节点上会有四个⼦区块。
四元树常应⽤于⼆维空间数据的分析与分类。
它将数据区分成为四个象限。
今天要介绍的四叉树可以认为是⼆叉查找树的⾼维变体,它适合对有⼆维属性的数据进⾏存储和查询,当然四叉树存储的也不⼀定是⼆维数据,⽽是有着⼆维属性的数据,如有着 x,y 信息的点,⽤它还可以⽤来存储线和⾯数据。
它有四个叉,在数据插⼊时,我们通过其⼆维属性(⼀般是 x,y)选择四个叉之⼀继续向下,直⾄叶⼦结点,同样使⽤“四分法”来迅速查找数据。
四叉树的⼀般图形结构如下:聪明的⼩伙伴⼀定想到了适合存储和查询三维数据的⼋叉树,它们原理是⼀致的,不过我们暂不讨论。
分类四叉树常见的应⽤有图像处理、空间数据索引、2D中的快速碰撞检测、稀疏数据等,今天我们很纯粹地只介绍它在空间索引⽅⾯的应⽤。
根据其存储内容,四叉树可以分为点四叉树、边四叉树和块四叉树,今天我们实现的是点四叉树。
根据其结构,四叉树分为满四叉树和⾮满四叉树。
对于满四叉树,每个节点都有四个⼦结点,它有着固定的深度,数据全都存在最底层的⼦结点中,进⾏数据插⼊时不需要分裂。
满四叉树在确定好深度后,进⾏插⼊操作很快,可是如果⽤它来存储下图所⽰数据,我们会发现,四叉树的好多叉都是空的,当然它们会造成内存空间的⼤量浪费。
⾮满四叉树解决了此问题,它为每个结点添加⼀个“容量”的属性,在四叉树初始化时只有⼀个根结点,在插⼊数据时,如果⼀个结点内的数据量⼤于了结点“容量”,再将结点进⾏分裂。
el-tree方法
![el-tree方法](https://img.taocdn.com/s3/m/e4e2282c54270722192e453610661ed9ac515573.png)
el-tree方法在现代的前端开发中,树状结构是常见的一种数据形式。
el-tree是Element UI框架提供的一个组件,用于展示和操作树状数据。
本文将详细介绍el-tree的方法,包括其初始化、设置数据、展开和折叠节点、选择节点等功能。
二、初始化el-tree在使用el-tree之前,我们需要先进行初始化。
首先,在HTML文件中引入Element UI 的样式库和脚本,以及所需的依赖文件。
然后,在Vue的实例中使用el-tree组件,并设置相关属性,如代码所示:<template><el-tree:data="treeData":props="props"></el-tree></template><script>export default {data() {return {treeData: [], // 树状数据props: { // 配置组件属性label: 'name', // 设置节点显示文本的属性名children: 'children', // 设置子节点的属性名mounted() {// 在此处进行数据获取和赋值操作</script>通过以上代码,我们可以看到el-tree组件需要两个关键属性:data和props。
data用于存储树状数据,props用于配置组件属性。
三、设置数据一般来说,我们需要从后端获取数据,然后将其赋值给el-tree的data属性。
在Vue的mounted钩子函数中,我们可以调用后端接口获取数据,并将其赋值给treeData,如代码所示:mounted() {// 假设后端接口返回一个根节点为tree的树状数据getTreeData().then((res) => {this.treeData = res.tree;.catch((error) => {console.error(error);在以上代码中,我们假设getTreeData函数是一个异步函数,用于获取后端返回的树状数据。
最小生成树题目
![最小生成树题目](https://img.taocdn.com/s3/m/59ecfe0ff6ec4afe04a1b0717fd5360cba1a8d3d.png)
最小生成树文档========1. 图的表示和基本操作-----------在图论中,图是由顶点(vertices)和边(edges)组成的一种结构。
顶点通常用V表示,边用E表示。
一个边连接两个顶点,可以用一个有序对(u, v)表示一条从顶点u到顶点v的边。
无向图中的边没有方向,而有向图中的边有方向。
在图的操作中,常见的有添加/删除顶点,添加/删除边,查找顶点等。
在最小生成树算法中,主要涉及到的操作有添加/删除边,查找顶点等。
2. 最小生成树的定义和性质----------------最小生成树(Minimum Spanning Tree, MST)是指一个连通无向图中,一个连接所有顶点的子图,使得所有边的权值和最小。
最小生成树具有如下性质:* 最小生成树是连通的,即任意两个顶点之间都有路径相连。
* 最小生成树的边数等于V-1,其中V是顶点的数量。
* 最小生成树的权值和等于所有边的权值和。
4. Kruskal算法---------Kruskal算法是一种基于贪心策略的最小生成树算法。
算法步骤如下:1. 将所有的边按照权值从小到大排序。
2. 初始化一个空的森林F。
3. 从第一条边开始,遍历所有的边,如果这条边的两个顶点在森林F中不连通,则将这条边加入森林F中,否则忽略这条边。
4. 如果森林F中的顶点数不等于V,则返回步骤3。
否则,森林F就是最小生成树。
Kruskal算法的时间复杂度为O(ElogE),其中E是边的数量。
该算法具有稳定性和可并行性。
但是由于需要维护森林的数据结构,实际实现起来比较复杂。
5. Prim算法-------Prim算法是一种基于贪婪策略的最小生成树算法。
算法步骤如下:1. 初始化一个空的集合C,用于存储已经访问过的顶点。
2. 从任意一个顶点开始,将其加入集合C中。
3. 对于每一个顶点v,计算它到集合C中所有已经访问过的顶点的最小距离。
将距离最小的边对应的顶点加入集合C中。
4. 如果集合C中的顶点数不等于V,则返回步骤3。
el-table外键 树形结构
![el-table外键 树形结构](https://img.taocdn.com/s3/m/51c20d36a517866fb84ae45c3b3567ec112ddc62.png)
标题:深度剖析el-table外键树形结构在前端开发中,我们经常会遇到需要展示树形结构数据的情况,而element-ui中的el-table组件提供了非常方便的方法来展示树形数据。
本文将深入探讨el-table外键树形结构,并帮助读者更好地理解和应用这一功能。
1. 外键树形结构的定义在数据库中,我们经常会使用外键来表示表与表之间的关联关系。
而在前端的展示中,很多情况下我们需要以树形结构来展示这些关联关系。
el-table提供了tree-props属性来支持外键树形结构的展示,通过指定父子关系字段,我们可以轻松地在el-table中展示树形结构。
2. 如何使用tree-props在el-table中使用tree-props属性,我们首先需要指定父子关系字段,例如:```html<el-table :data="treeData" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"><!-- 表头和内容 --></el-table>```在上面的例子中,我们将tree-props绑定到treeData这个树形结构的数据上,并指定了children字段和hasChildren字段作为父子关系和是否有子节点的判断条件。
3. 数据的格式要求在使用tree-props时,我们需要确保数据的格式符合要求。
通常情况下,我们的数据格式如下:```javascript[{id: 1,label: '一级 1',children: [{id: 4,label: '二级 1-1',children: [{id: 9,label: '三级 1-1-1'}]}]]```在这个例子中,每个节点都包含了id和label字段,并且子节点用children字段来表示,这样就符合了el-table对于树形结构的要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vijos 1448校门外的树
校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……
如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:
K=1,读入l,r表示在l~r之间种上的一种树
K=2,读入l,r表示询问l~r之间能见到多少种树
(l,r>0)
输入第一行n,m表示道路总长为n,共有m个操作
接下来m行为m个操作
输出对于每个k=2输出一个答案
样例输入
5 4
1 1 3
2 2 5
1 2 4
2 3 5
样例输出
1
2
括号序列+树状数组
什么是括号序列下面简单介绍一下(感谢tiger教会我)
假设有一个长度是20的数轴,现在我们要在2 15之间种上一种树,那么我们可以在2处添加一个‘(’,在15的地方添加一个‘)’,这就是简单的括号序列。
如果要统计某个区间树的种类,例如3 10,我们只需要统计10之前(包括10)有多少个‘(’,统计3之前有多少个‘)’,(不包括3)。
这样光说可能很难理解,下面给一个实例。
左括号和右括号表示的是在这些区间内种上了树。
(日,感觉有点像在画大便)
假设这时候需要统计的是 5 10之间有多少种树,那么,只要在10之前种的树都是有效的(这时候先不管5的限制),也就是统计左括号的个数,一共是6个,下面加上5个限制,也就是说,在5之前,我们统计一下有多少右括号,也就是能与左括号匹配掉的括号有多少个?换句话说,就是有多少种树被限制了(自己意会下把,实在是用文字说不出来);
把程序也拿出来晒晒把(脑残的vijos,用writeln6个点超时,用write过了,还9ms)
program vijos;
var c1,c2:array[0..50000]of longint;
n,m:longint;
function lowbit(x:longint):longint;
begin
lowbit:=x and (x xor (x-1));
end;
procedure addl(i:longint);
begin
while i<=n do
begin
inc(c1[i]);
inc(i,lowbit(i));
end;
end;
procedure addr(i:longint);
begin
while i<=n do
begin
inc(c2[i]);
inc(i,lowbit(i));
end;
end;
function findl(i:longint):longint;
begin
findl:=0;
while i>0 do
inc(findl,c1[i]);
dec(i,lowbit(i));
end;
end;
function findr(i:longint):longint; begin
findr:=0;
while i>0 do
begin
inc(findr,c2[i]);
dec(i,lowbit(i));
end;
end;
procedure main;
var i,j,d,k,r,l:longint;
begin
readln(n,m);
for i:=1 to m do
begin
readln(k,l,r);
if k=1 then
begin
addl(l);
addr(r);
end
else
begin
write(findl(r)-findr(l-1));
writeln;
end;
end;
begin
main;
end.
暑假还写了个线段树的可以比较一下(下面的程序我看都不想看了)program vijos1448;
type rec=record
lcount,rcount,be,en:longint;
end;
var tree:array[1..200000]of rec;
a:array[1..5000]of longint;
n,m:longint;
procedure build(i,l,r:longint);
begin
tree[i].be:=l; tree[i].en:=r;
if l=r then exit;
build(i*2,l,(l+r)div 2);
build(i*2+1,((l+r)div 2)+1,r);
end;
procedure fix(i,s:longint; ff:boolean);
var mid:longint;
begin
if ff then inc(tree[i].lcount)
else inc(tree[i].rcount);
if tree[i].be=tree[i].en then exit;
mid:=(tree[i].be+tree[i].en)div 2;
if s<=mid then fix(2*i,s,ff)
else fix(2*i+1,s,ff);
end;
procedure find(i,u,v:longint;ff:boolean; var ans:longint); var mid,k1,k2:longint;
begin
if (u=tree[i].be)and(tree[i].en=v) then
begin
if ff then ans:=tree[i].lcount
else ans:=tree[i].rcount;
exit;
end;
mid:=(tree[i].be+tree[i].en) div 2;
if (v<=mid) then find(i*2,u,v,ff,ans)
else if u>mid then find(i*2+1,u,v,ff,ans)
else
begin
find(i*2,u,mid,ff,k1);
find(i*2+1,mid+1,v,ff,k2);
ans:=k1+k2;
end;
end;
procedure dushu;
var i,what,u,v,ans,k1,k2:longint;
begin
readln(n,m);
build(1,1,n);
for i:=1 to m do
begin
readln(what,u,v);
if what=1 then
begin
fix(1,u,true);
fix(1,v,false);
end
else
begin
find(1,1,v,true,k1);
if u>1 then find(1,1,u-1,false,k2)
else k2:=0;
writeln(k1-k2);
end;
end;
end;
begin
dushu;
end.。