传送门 题意简述:咕咕咕 思路:考虑预处理出bbb数组,然后每次改动aaa都只会对第iii和i+1i+1i+1这两个位置产生影响,于是可以用线段树来维护bbb数组. 现在求答案的方法是断环为链,倍增整个数组,然后就可用线段树维护000段的一些信息. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); wh…
4447: [Scoi2015]小凸解密码 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 150  Solved: 58[Submit][Status][Discuss] Description 小凸得到了一个密码盘,密码盘被等分成N个扇形,每个扇形上有一个数字(0-9),和一个符号(“+”或"*") 密码盘解密的方法如下: 首先,选择一个位置开始,顺时针地将数字和符号分别记在数组A和数组C巾 解密的方法如下 B0=A0 当x>0…
传送门 题意简述: 给一棵完全二叉树,有点权aia_iai​和边权,每个点有一盏灯,现在要按一定要求点亮: 任意时刻点亮的灯泡必须连通 点亮一个灯泡后必须先点亮其子树 费用计算如下:点第一盏灯不要花费,之后如果点一盏灯uuu,且上一盏点的是vvv,花费是au∗distu,va_u*dist_{u,v}au​∗distu,v​ 问把所有点都点亮的最小花费. 思路:树形dpdpdp好题. 考虑到把一棵子树点亮之后要么点亮它的某个祖先,要么点亮它的某个祖先的兄弟. 记f0/1,i,jf_{0/1,i,…
传送门:bzoj4447 题解: 调试简直恶心,不过调完发现其实还是挺好写的. 用\(\mathrm{set}\)维护一段\(0\)区间的左右端点,每次最多修改两个点,所以很好维护. 查询的时候在\(y = x + \frac{n}{2} \mod n\)的位置找这个点最近的区间,一定是离\(x\)最远的区间,注意如果某段区间包含了\(y\)那么还要考虑它附近的两个区间. code…
Description 小凸得到了一个密码盘,密码盘被等分成 \(N\) 个扇形,每个扇形上有一个数字(0-9),和一个符号("+"或"*") 密码盘解密的方法如下: 首先,选择一个位置开始,顺时针地将数字和符号分别记在数组 \(A\) 和数组 \(C\) 内 解密的方法如下 \(B0=A0\) 当 \(x>0\) 时: 若 \(Cx\) 为"+",\(Bx=(Ax+Ax-1) \%10\) ,注意:\(x-1\) 是下标值 若 \(Cx\…
「SCOI2015」小凸解密码 题意:给一个环,定义一段连续的极长\(0\)串为\(0\)区间,定义一个位置的离一个\(0\)区间的距离为这个位置离这个区间中\(0\)的距离的最小值,每次询问一个位置,求离它最远的\(0\)区间与它的距离,带修改 于是我是多sb才会想到在点分裂平衡树上做类似三分的sb操作? 而且我现在的代码还是错的,只有srand的fhq才能过,不过根据对拍,错误概率很小. 思路,在平衡树上维护\(0\)区间的相对位置 然后每个点维护子树最左区间和子树最右区间 我们把每个询问的…
bzoj 4447 小凸解密码 先将原始状态的 \(B\) 处理出来,可以发现,若不修改,则每次指定的起始位置不同,对这个环 \(B\) 带来的影响只有 \(B_0\) 不同,即每次 \(B_0=A_0\) ,其他位置不变.可以询问时修改这个值,询问结束时改回去. 如果要修改,可以发现修改 \(A_i\) 其实只会影响 \(B_i,B_{i+1}\) 的值,也可以较快完成. 只需要用一个 \(set\) 维护环上的零区间,修改,查询时都分情况维护,回答就好了.断环成链(复制一份接在后面)可以减小…
传送门 题意简述: 给一棵nnn个点的树,树上每个点表示一个情报员,一共有mmm天,每天会派发以下两种任务中的一个任务: 1.搜集情报:指派T号情报员搜集情报 2.传递情报:将一条情报从X号情报员传递给Y号情报员 一个情报员在搜集情报之前危险度为000,从开始搜集的第二天起每天危险度加一. 每条情报都有一个风险控制值C,现在要求对于每个任务,参与传递的情报员有多少个,其中对危险度大于这条情报的CCC值的情报员有多少个. 思路: 对于第一个问题显然求lcalcalca就完了,对于第二个问题我们可以…
传送门 题意简述:现在给你一个长度为mmm的环,有nnn条互不包含的线段,问如果强制选第iii条线段至少需要用几条线段覆盖这个环,注意用来的覆盖的线段应该相交,即[1,3],[4,5][1,3],[4,5][1,3],[4,5]不合法[1,4],[4,5][1,4],[4,5][1,4],[4,5]合法. 思路:把坐标先离散化,然后破环为链,接着用线段树维护每个点向左走一步最多走到哪个点,然后就可以用ststst表维护每个点向左走2k2^k2k步最多走到哪个点,最后对于每条线段倍增求答案即可.…
题解 断环为链,把链复制两份 用set维护一下全是0的区间,然后查找x + n / 2附近的区间,附近各一个过不去,最后弃疗了改为查附近的两个,然后过掉了= = 熟练掌握stl的应用,你值得拥有(雾 代码 #include <bits/stdc++.h> //#define ivorysi #define enter putchar('\n') #define space putchar(' ') #define fi first #define se second #define pb pu…