05 2014 档案
摘要:以下是一只蒟蒻的回忆:1.进入高一小县城不重视OI,直到进了高中才知道有OI这个东西,于是我就开始了OI…(看,够弱的吧,相信你是小学就开始学了)学了几天Pascal语法后,被老师报上了NOIP2012,(捂脸),才学几天怎么去考试啊…2.NOIP2012初赛第一次出去比赛,因为才学几天,考试当然...
阅读全文
摘要:“我这双眼就是被神题亮瞎的。”T1 2048,由于我从来都没有玩出过512以上的东西,外加SDOI提答题的影响,所以弃疗了。T2 SG,一看数据规模,最小也有10^9,这是诚心不给部分分,诚心不想要区分度了是吧?事实证明此题区分度确实低。打表找了1h规律无果后只好写了个K=1的Nim弃疗。T3 感...
阅读全文
摘要:求出前缀和对于每个结尾i,设现在取的区间是[j+1,i],则i-R#include#include#define N 500010#define M 10000000using namespace std;int n,i,j,K,L,R,sum[N],b[N],l[M],r[M],val[M],ro...
阅读全文
摘要:假设S在T左边,那么只能往右或者上下走f[i]表示S到i点的最短路f[i]=min(f[j]+dis(i,j)(i能看到j))判断i能看到j就维护一个上凸壳和一个下凸壳时间复杂度代码写的有点长…#include#include#include#define N 2010using n...
阅读全文
摘要:由于n很大,有2e8,所以不能直接用splay来维护排名把splay修改一下每个节点维护一个区间[l,r],表示编号在[l,r]之间的所有点都在这里需要支持一个takeout操作:把编号为k的玩家分离出来,成为一个独立的点先找到它所在的大点xsplay(x)然后分裂成1-3个节点关于如何查找编号为k...
阅读全文
摘要:对于既要支持子树修改又要支持链查询,需要树链剖分然后求出DFS序,DFS的时候先DFS重儿子,然后子树是1个区间,链是个区间这道题对于查询若干条链的并:由于K#include#define N 200010#define K 17using namespace std;int ...
阅读全文
摘要:关于如何判断一个集合是否出现过:给每个元素随机一个hash权值,然后xor起来即可插入删除都只需xor线段树维护区间有效人数和,以及打标记表示这个区间的集合要全部标记为出现过,并把区间内sum值都置0写hash用了map被虐了TAT#include#include#define N 100010#d...
阅读全文
摘要:题目是要求最小乘积最小权匹配,将一种方案看做一个二维点(x,y),x=a值的和,y=b值的和,所有方案中只有在下凸壳上的点才有可能成为最优解首先要求出两端的方案l,r两个点l就是a值的和最小的方案,r就是b值的和最小的方案然后递归work(l,r)即可得出所有在下凸壳上的点work(l,r){ 找到...
阅读全文
摘要:终于还有一周就是ZJOI Day2了不知不觉中半年过去了呢去年我还是一个无知的弱逼,学完语法后学了半年基础,又做了半年基础题终于在NOIP上的惨败让我发现自己是有多弱逼于是只好硬着头皮去刷BZOJ并立下Flag:高二剩下半年各种比赛能去的一定要去打一把“太弱了怎么打比赛”只能没日没夜地刷题,学习为...
阅读全文
摘要:很明显网络流。S到每个发射站连边,容量为该站限制每个接收站到T连边,容量为该站限制矩阵每个点拆成两个点i和i',i向i'连边,容量为该位置手机数每个发射站向该正方形内所有点i连边,容量为无穷大每个接收站向该正方形内所有点i'连边,容量为无穷大求最大流即可。但是这样的话,TLE+MLE(内存限制只有3...
阅读全文
摘要:终于补完NOI2012了好开心~题目大意:给定一棵树或者环套外向树,求出从中随机选一条简单路径的期望长度,环上点数不超过20。设d[x]表示x的度数,ch[x]表示x孩子个数up[x]表示x向上走的期望长度,down[x]表示x向下走的期望长度f[x]表示x的父亲树的情况:环套外向树的情况:先找出环...
阅读全文
摘要:Top Tree模板题,写起来真不是一般的蛋疼,调了两天。常数写渣了TATTop Tree就是在LCT的基础上加以改动,将虚边也用splay维护,对于A向儿子所连出去的虚边,用Splay维护↓为了保证所有虚儿子不存在父子关系,需要让它们都是叶子节点,所以需要引入白色的内部点来维持这个结构。就能支持子...
阅读全文
摘要:想法题,由于K是加密的,但是通过读入我们可以自己数出来这一行有几个数,所以可以直接反解出之前回答为连通的个数至于最后一个询问就用并查集暴力回答var n,i,m,s,k,j,q : longint; u,v,cnt,f : array[0..500000] of longint; c : ar...
阅读全文
摘要:以边编号为权值用Link-cut Tree维护最大生成树对于新加的第i条边(u,v)a[i]表示当a[i]这条边加入后连通块个数会减少若u==v则a[i]=m若u与v不连通则连上,a[i]=0若u与v连通则a[i]为u,v路径上最小值,将那条边断开,连上这条边查询[l,r]等价于查询[l,r]里有多...
阅读全文
摘要:选个根把无根树转化成有根树,设f[i]表示i不通电的概率则答案为对于枚举树根root进行DP后1-f[root]的和直接算是O(n^2)的,但是n有500000,所以不能过。对于这样一棵以1为根的树,求出它的欧拉遍历序为1->2->5->2->6->2->1->3->7->3->8->3->1->4...
阅读全文
摘要:先把所有点绕原点逆时针旋转(360-a)度,再把所有点横坐标除以放大倍数p,最后用随机增量法求最小圆覆盖即可。时间复杂度期望#include#include#includeusing namespace std;struct P{double x,y;}a[50005],o;inline...
阅读全文
摘要:设val[i]为i连出去的树突中输出值为0的个数如果val[x]#define N 500010int f[N*3],son[N][2],size[N],val[N],cnt1[N],cnt2[N],tag[N],a[N];inline void read(int&a){char c;while(!...
阅读全文
摘要:这回是真·强制在线了,首先这道题就是AHOI2013连通图的加强版,那道题k最大只有4那道题的做法是:取一个生成树,对每条非树边取一个随机权值,对每条树边设为“覆盖它的所有非树边”的权值的xor,对于每次询问,只要某个子集的所有边xor值是0,那么就不连通,否则连通。通过枚举每一个子...
阅读全文
摘要:可以发现,从头到尾有一堆点是始终连在一起的,所以把没被删掉的一开始就有的边都加上后求出每个联通块,缩完点后我们发现,边数也减少得差不多了,剩下的就直接暴力。#include#define N 5010#define M 200010#define Q 10010inline void read(in...
阅读全文
摘要:考试的时候看少了一行,导致暴力都写错额…贾教说他出的这题水,但是我觉得并不水,那个结论还是很神的。首先M(i)就是i的最小生成树的最大边,设f[i]表示i属于哪个集合我们把边按权值从小到大排序,对于一条边(u,v),权值为w,如果w#include#define N 100010using name...
阅读全文
摘要:首先强制在线的话,肯定是不能再离线排序+平衡树启发式合并了。这回要用的是线段树合并,每次把两棵线段树合并,总复杂度为预处理:把边按权值从小到大排序,依次加边,对于边(x,y),权值为z,如果x和y已经在一个联通块里就无视掉假设x块大小小于等于y块大小将x,y两块的线段树合并,...
阅读全文