bryce1010专题训练——LCA】的更多相关文章

1.Targan算法(离线) http://poj.org/problem?id=1470 /*伪代码 Tarjan(u)//marge和find为并查集合并函数和查找函数 { for each(u,v) //访问所有u子节点v { Tarjan(v); //继续往下遍历 marge(u,v); //合并v到u上 标记v被访问过; } for each(u,e) //访问所有和u有询问关系的e { 如果e被访问过; u,e的最近公共祖先为find(e); } } */ //思想 /* 1.任选一…
LCT&&树链剖分专题 参考: https://blog.csdn.net/forever_wjs/article/details/52116682…
Bryce1010模板 CDQ分治 1.与普通分治的区别 普通分治中,每一个子问题只解决它本身(可以说是封闭的) 分治中,对于划分出来的两个子问题,前一个子问题用来解决后一个子问题而不是它本身 2.试用的情况 在很多问题中(比如大多数数据结构中),经常需要添加一些动态问题,然而对动态问题的处理总是不如静态问题来得方便,于是就有了分治 但使用分治的前提是必须有一下两个性质: 修改操作对区间询问的贡献独立,修改操作互相不影响 题目允许使用离线算法 2.1 一般步骤 将整个操作序列分为两个长度相等的部…
Bryce1010模板 1.一维树状数组 https://vjudge.net/contest/239647#problem/A[HDU1556] #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=1e5+10; int n,c[MAXN<<1]; //表示二进制x的最末尾的一个1 int lowbit(int x) { return x&(-x); } //区间…
Prob Hint BZOJ 3323 文艺平衡树 区间翻转 BZOJ 1251 序列终结者 区间翻转,询问最值 BZOJ 1895 supermemo 区间加,翻转,剪切,询问最值.点插入,删除. BZOJ 1056 排名系统 专治操作完不伸展 BZOJ 1552 robotic sort 区间反转,清除标记,splay 的灵活运用 BZOJ 3224 普通平衡树 像普通平衡树一样使用 Splay 1.查找区间第K大+排序 http://acm.hdu.edu.cn/showproblem.p…
1.求区间第K大 HDU2665 Kth number /*划分树 查询区间第K大 */ #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; #define ll long long const int MAXN=100009; int tree[21][MAXN];//表…
一.区间查询,无单点更新 hdu2795 Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25062    Accepted Submission(s): 10274 Problem Description At the entrance to the university, there is a huge rec…
打算专题训练下DP,做一道帖一道吧~~现在的代码风格完全变了~~大概是懒了.所以.将就着看吧~哈哈 Description The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work in t…
****************************************************************************************** 动态规划 专题训练 ******************************************************************************************** 一.简单基础dp 这类dp主要是一些状态比较容易表示,转移方程比较好想,问题比较基本常见的. 1.递推: 递推一…
推荐几个博客:https://www.cnblogs.com/JVxie/p/4854719.html Tarjan离线算法的基本思路及其算法实现 https://blog.csdn.net/shahdza/article/details/7779356 LCA题集 http://www.cnblogs.com/zhouzhendong/p/7256007.html LCA的三种算法介绍 模板(题): 1.(POJ1470)http://poj.org/problem?id=1470 Tarja…
Description Nowadays, a kind of chess game called "Super Jumping! Jumping! Jumping!" is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now. The game can be played by two or more than two…
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on the left shows the histogram that consists of rectang…
Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20. 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子序列的第一个和最后一个元素.  …
做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编写程序,在给出的一堆发票中找出可以报销的.不超过给定额度的最大报销额.   Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(<=30)是发票张数.随后是 N 行输入,每行的…
//http://blog.csdn.net/PoPoQQQ/article/category/2542243…
搞了半天八数码弄不出来就只好来打题解  这道题是在搜索a碰到的(链接: http://pan.baidu.com/s/1jG9rQsQ ) 感觉题目最大亮点就是这英文简写"ni", 真是令人感慨出题老师的才华啊  好了,废话不多说  题目内容如下(闲烦请无视之,下下方有简单的介绍): [问题描述] 贝 西(Bessie)在卡摩洛遇到了棘手的情况:她必须穿越由Ni骑士把守的森林. 骑士答应Bessie只要 Bessie 能给他们带来一丛灌木就能安全穿越森林.时间宝贵,Bessie 必须尽…
题目链接 /* *题目大意: *求出从i到j,刚好经过k条边的最短路; * *矩阵乘法的应用之一(国家队论文): *矩阵乘法不满足交换律,矩阵乘法满足结合律; *给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值; *把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j; *令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点); *类似地,C*A的第i行第j列就表示从i到j经…
from django.db import models # Create your models here. # 书 class Book(models.Model): title = models.CharField(max_length=32) publish_date = models.DateField(auto_now_add=True) price = models.DecimalField(max_digits=5, decimal_places=2) memo = models…
A 回文串的最小划分 题意:给出长度不超过1000的字符串,把它分割成若干个回文字串,求能分成的最少字串数. #include <iostream> #include <cstdio> #include <string.h> #include <string> using namespace std; ; + ; const int INF = 0x3f3f3f3f; typedef long long LL; int dp[maxn]; //根据回文串的特…
1.统计颜色,或运算的运用2.区间第k大数3.一个很经典的题5.求区间相等数字的个数6.RMQ模板题,区间最大值和最小值的差 1.很好的思路,用或运算来避免左右儿子树总相同颜色的情况.由于T颜色种类最多30种,__int64 足够用了.注意初始化就行. 5.关键是写对make_up()这个函数,向上更新需要考虑的问题.经典题型. 1001 /* 求区间[l,r]中,颜色的总类. 如何避免重复?----或运算. */ #include<iostream> #include<cstdio&g…
1.内存控制2.敌兵布阵4.广告牌5.区间第k大数(模板题)6.just a Hook7.I Hate It8.动态的最长递增子序列(区间更新题)9.图灵树10.覆盖的面积14.买票问题16.村庄问题17.Hotel19.矩形周长问题23.区间第k大数问题26.海报问题 1001 /* 内存控制 4种操作: 1.Reset 初始化 2.New x 开辟长度为x的连续的空间,输出起始位置 3.Free x 释放包含第x字节的块,整块都释放掉 4.Get x 输出当前状态下,内存里第x块的起始位置…
题意与分析 题意大致是这样的:给定一个\(n\times s\)的矩阵,每次可以随机的在这个矩阵内给一个格子染色(染过色的仍然可能被选中),问每一行和每一列都有格子被染色的次数的期望. 这题如果从概率(从正方向推)就会白给,不信你自己试试:而定义反方向的推导(\(e_{i,j}\)意为从i行j列已有染色格子到最后全被染色的次数的期望)就会非常简单:分四种情况讨论即可. 代码 #include <bits/stdc++.h> using namespace std; double e[1005]…
题意与分析 定义走到每条边的期望为\(e_i\),一开始的想法是给定一个\(\large\sum_{i=1}^n e_i a_i\),求一个a的排列使得这个和最小.问题在于这样等于没对题目作分析,而且题目的难度没有被转化降低.于是(在高人指点下)我们想到,如果先求出\(e_i\),然后按照从小到大的顺序贪心的编号,问题就直接转化成求走到每个边的期望. 边的期望是一个新操作,但是其实不难:定义走到点的期望是\(f_i\),考虑一条边\((u, v)\),对于这条边而言,只有从u和从v才能走到这条边…
POJ2449 Remmarguts' Date UDF's capital consists of N stations. The hall is numbered S, while the station numbered T denotes prince' current place. M muddy directed sideways connect some of the stations. Remmarguts' path to welcome the princess might…
推荐以下一篇博客:https://blog.csdn.net/wust_zzwh/article/details/52100392 1.(HDOJ2089)http://acm.hdu.edu.cn/showproblem.php?pid=2089 分析:裸模板题 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ]; ][]…
例题:以下例题部分的内容来自https://blog.csdn.net/my_sunshine26/article/details/77141398 一.石子合并问题 1.(NYOJ737)http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=737 分析:我们dp[i][j]来表示合并第i堆到第j堆石子的最小代价.那么状态转移方程为dp[i][j]=min(dp[i][k]+dp[k+1][j]+w[i][j])  (s[i][j-1]<=k<…
题意与分析 题意:给出\(n\)个字符串,可以反转任意串,反转每个串都有其对应的花费\(c_i\).经过操作后是否能满足字符串\(\forall i \in [1,n] \text{且} i \in R_+, str[i]\ge str[i-1]\),若能输出最小花费,否则输出-1. 分析:经过各种字符串dp血虐,应该会有个直觉:\(dp[i]\)表示前\(i\)个串的最小花费.但是好像不太够:没有保存反转.因此,在dp中,如果状态不够,那就加维度保存状态.这里就是:我们定义\(dp[i][0]…
题意与分析(Codeforces-431C) 题意是这样的:给出K-Tree--一个无限增长的树,它的每个结点都恰有\(K\)个孩子,每个节点到它\(K\)个孩子的\(K\)条边的权重各为\(1,2,...,K\),问现有多少条路径,使从根节点出发到某个结点所经过的边权重之和恰为n,且经过的边至少有一条权重不小于\(d\). 我们来考虑一下阶段:一层一层的走下去--这个是显然的.而状态是什么?影响我们答案(路径条数)的只有一个,权重的和,它是由我们底下的若干个孩子所走的权重和的情况的和构成的.从…
题意(Codeforces-455A) 给你\(n\)个数,你每次可以选择删除去一个数\(x\)获得\(x\)分,但是所有为\(x+1\)和\(x-1\)的数都得删去.问最大获得分数. 分析 这是一条经典dp.阶段是很自然的:我从左往右依次选择到每种数(先预处理在桶内),然后两个决策:拿,还是不拿(拿一定拿光).拿,那么下一步就不能选择\(x+1\)了,直接选择\(x+2\):不拿,我可以选择\(x+1\).两种情况取最大. 于是有状态转移方程:\(dp[x]=max(dp[x-1], dp[x…
题目 在一个城市里有\(n\)个地点和\(k\)条道路,道路是无环的(也就是说一定可以二分染色--回路长度为偶数0),现在伞兵需要去n个地点视察,只能沿着路的方向走,问最少需要多少伞兵. 分析 这是什么问题?找出最少的边,访问所有的点--二分图的的最小路径覆盖. 那么对于一个最大匹配,它能覆盖(2*最大匹配)个点,剩下的点都需要单独一条边覆盖,从而设匹配数为\(k\),覆盖数为\(p\),有\[n-2*k+k=p\],也就是\(n-k=p\). 代码 #include <cstring> #i…