耐力OIer,一天7篇博客 题目描述 “特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示,该病毒来自于C 市的A 学校的一次非法的……” “哎.”你关上电视,叹了口气.作为A 学校的校长,你一天前为了保命,独自 逃离了A 学校,抛弃了全校师生,包括那个曾经帮你计算并拆除道路的工程师. 你良心受到了巨大的谴责,因此决定做出一些补救,回答一些逃难的人提出的询 问. 已知该国一共有n 个城市,…
对于30%的数据:暴力枚举判断 对于60%的数据:还是暴力枚举,把两条路径都走一遍计一下数就行,出现一个点被访问两次即可判定重合 对于100%的数据:找出每条路径中距离根最近的点(lca),判断这个点是否在另一条路径上即可 注意数组大小 代码: 烟火再美,总抵不过你的一往情深 #include<iostream> #include<algorithm> #include<cstdlib> #include<cstdio> #include<cstrin…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取一棵深度为 k 的满二叉树,对每个节点向它的所有祖先连边(如果这条边不存在的话). 例如,下面是一个 4-超级树: 请统计一棵 k-超级树 中有多少条不同的简单有向路径,对 mod 取模. input 一行两整数 k, mod. output 一行一整数表示答案. example input1: 2…
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时全在摸索这些. 等大概会用了就只剩下70min了.感觉要爆零. 我当时很着急T1:我用了个数学O(1)方法做了,但样例太水了,怕错(我当时哪有时间对拍)就写了一个70分O(nlogn)暴力兜底,果然那数学方法错了. 一看表,woc,只有40min了,赶紧看T2:算式还要用字符串读入在分拆,先把正好复…
LINK:因懒无名 20分显然有\(n\cdot q\)的暴力. 还有20分 每次只询问一种颜色的直径不过带修改. 容易想到利用线段树维护直径就可以解决了. 当然也可以进行线段树分治 每种颜色存一下直径的端点即可. 考虑100分. 考虑到直径两个端点有区间可加性 所以直接外面套一个线段树维护区间端点即可. 修改采用上述做法两种均可.然后就做完了. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio…
传送门 题意 有n个小镇,Bobo想要建造n-1条边,并且如果在u到v建边,那么花费是u到v的最短路长度(原图),问你最大的花费. 分析 比赛的时候没做出来,QAQ 我们首先要找到树的直径起点和终点,方法是 1.任意选一个点,dfs找到最长路的终点 2.从终点反向dfs,找到起点 然后枚举每个点,用倍增lca求出该点到起点与终点距离,取距离大的,注意直径本身会被访问两次,故一开始ans要减去最长路,时间复杂度O(nlogn) 代码 #include<cstdio> #include<cs…
题面描述 红莉栖想要弄清楚楼下天王寺大叔的显像管电视对“电话微波炉(暂定)”的影响.选取显像管的任意一个平面,一开始平面内有个n电子,初始速度分别为vi,定义飘升系数为 $$\sum_{1\leqslant i < j\leqslant n}|v_{i}\times v_{j}|^{2}$$ 由于电视会遭到大叔不同程度的暴击,电子的速度常常会发生变化.也就是说,有两种类型的操作: •1 p x y将vp改为(x;y) •2 l r询问[l,r]这段区间内的电子的飘升系数 这么简单的问题红莉栖当然…
题目描述 nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上.另一天nodgd更无聊,就又画了一张.  这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点u0在第一幅图中编号为u1,在第二副图中编号为u2.  于是,nodgd决定检查一下他画出的两棵树到底是不是一样的.nodgd已经给每棵树的节点都从1到n进行了编号,即每棵树有n个节点.  如果存在一个1到n的排列p1,p2…pn,对于第一幅图中的任意一条边(i,j),在第二幅图中都能找到一条边(p…
题目描述 nodgd的粉丝太多了,每天都会有很多人排队要签名.  今天有n个人排队,每个人的身高都是一个整数,且互不相同.很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来.同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序.  但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向.神魂颠倒,已经分不清楚哪一边是“前面”了,于是她们可能是记住了前面比自己高的人的个数,也可能是记住了后面比自己高的人的个数,而且他们不知道自己记住的…
题面 CODE 稍微分析一下,发现把(i,pi)(i,p_i)(i,pi​)看做二维数点,就是求极长上升子序列的权值最小值. 直接李超线段树 #include <bits/stdc++.h> using namespace std; const int MAXN = 200005; const int INF = 0x3f3f3f3f; int n, v, mxr, p[MAXN]; int mx[MAXN<<2], vl[MAXN<<2], val[MAXN<&…