题面 传送门 思路 懒得解释了......也是比较简单的结论 但是自己看到几何就退缩了...... 下周之内写一个计算几何的学习笔记! Code #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cassert> #include<cmath> #define eps 1e-14 using namespace std;…
题面 传送门 思路 其实就是很明显的平面图模型. 不咕咕咕的平面图学习笔记 用最左转线求出对偶图的点,以及原图中每个边两侧的点是谁 建立网络流图: 源点连接至每一个对偶图点,权值为这个区域的光明能量 每一个对偶图点连接至汇点,权值为这个区域的黑暗能量 对于每一条原图中的边,在它两侧的对偶图点之间连一条双向边,权值为这个边的代价 用所有点的光明能量和黑暗能量之和,减去最小割,得到的就是答案 Code #include<iostream> #include<cstdio> #inclu…
link 很容易对于每个点列出式子 \(f_{x,y}=(f_{x,y-1}+f_{x,y}+f_{x,y+1}+f_{x+1,y})/4\)(边角转移类似,略) 这个转移是相互依赖的就gg了 不过你可以把这个转移移项,改成右侧没有\(f_{x,y}\)的式子 不过他还是相互依赖的 但是上下两行之间转移不是依赖的 所以你可以每一行跑一遍高斯消元 由于一行的转移是一条链 树上高斯消元可以做到 \(O(n)\) 或 \(O(n \log p)\)(模意义下逆元) 而链上的情况更简单,直接xjb搞一下…
题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i]$ $xor$ $pre[j])$ 考虑对于每个$pre[i]$,一个$pre[j]$在经过上述运算后增加的值 发现可以每一位拆开来考虑 那么有四种情况:$(p_i,p_j)=(0,0),(0,1),(1,0),(1,1)$ 只有当$pre[i]$本位为0,$pre[j]$本位为1的时候,这一位会…
题面 传送门 重要思想 真的是没想到,我很久以来一直以为总会有应用的$BFS$序,最终居然是以这种方式出现在题目中 笔记:$BFS$序可以用来处理限制点对距离的题目(综合点分树使用) 思路 本题中首先询问可以拆成两个:所有同色点对距离大于$L-1$的种数减去所有同色点对距离大于$R$的种数 考虑如何解决点对距离大于$k-1$: 我们考虑树的$bfs$序,假设当前按照$bfs$序加入了点$u$,深度为$d$ 考虑树里另外两个已经加入了的点$x,y$,显然它们的深度都小于等于$d$ 那么有结论:如果…
题面 传送门 一句话题意: 给定$n\leq 1e9,k\leq 1e7,T\leq 1e9$ 设全集$U=\lbrace 1,2,3,...n\rbrace $,求$(min_{x\in S}\lbrace S\rbrace (S\subseteq U, \lvert S \rvert =k))^T$的期望 重要思想 注意,在遇到包含 思路 首先,通过枚举$S$集合最小值选取哪个数,可以得到: $Ans(k)=\sum_{i=1}^n \binom{n-i}{k-1} T^i$ 然后,通过枚举…
题目 比赛界面. T1 数据范围明示直接\(O(n^2)\)计算,问题就在如何快速计算. 树上路径统计通常会用到差分方法.这里有两棵树,因此我们可以做"差分套差分",在 A 树上对 B 的差分信息进行差分.在修改的时候,我们就会在 A 上 4 个位置进行修改,每次修改会涉及 B 上 4 个位置的差分修改,因此总共会涉及 16 个差分信息的修改. 回收标记的时候,我们可以先在 A 树上进行 DFS ,回收好子树内的差分信息后,再进行一次 B 的回收,得到当前节点上 B 的真实信息. 时间…
题目 比赛界面. T1 不难想到,对于一个与\(k\)根棍子连接的轨道,我们可以将它拆分成\(k+1\)个点,表示这条轨道不同的\(k+1\)段. 那么,棍子就成为了点与点之间的边.可以发现,按照棍子连边之后,我们一定可以得到一些链.假设每条轨道的最后一段作为链头,查询实际上就是查询所在链的链头. 使用 LCT 或 Splay 维护这些链即可,时间\(O(n\log_2n)\). #include <cstdio> #include <vector> using namespace…
题目   比赛界面. T1   比较简单.容易想到是求鱼竿的最大独立集.由于题目的鱼竿可以被分割为二分图,就可以想到最大匹配.   尝试建边之后会发现边的数量不小,但联系题目性质会发现对于一条鱼竿,它会影响的垂直方向上的鱼竿一定是一个区间,因此再套一发线段树优化即可.   这里不建议写倍增优化,因为倍增的点是\(O(n\log_2n)\),而网络流的时间是\(O(n^2m)\),因此可能会慢一些.   当然,你知道,这细网咯流咩......时间复杂度还是比较emmmm......的   代码:…
题目   点这里看题目. 分析   先特判掉\(K=2\)的情况.   首先可以考虑到一个简单 DP :   \(f(i)\):前\(i\)张牌的最大贡献.   转移可以\(O(n^2)\)地枚举区间众数,但它不存在决策单调性,众数查询也很难优化.   考虑另一种转移.我们对于\(f(i)\),只取它结尾的点数的后缀 \[f(i)=\max_{1\le j\le i,a_j=a_i}\{f(j-1)+s(i)-s(j)+1\} \]   其中的\(s_i\)为前\(i\)张牌里与第\(i\)张点…
闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n,W,表示每个商店都有n个糖果且两个商店的每个糖果的价格都是W 求出最大的min(Sa,Sb)-D*W 其中Sa表示在A商店买的糖果的愉悦度之和,Sb表示在B商店中买的糖果的愉悦度之和,D表示总共在两家商店买的糖果数 题解: 直接乱搞,贪心想一想,每次取糖果肯定先从愉悦度大的取为优 那么我们只要在取…
题面 一根长为 n 的无色纸条,每个位置依次编号为 1,2,3,-,n ,m 次操作,第 i 次操作把纸条的一段区间 [l,r] (l <= r , l,r ∈ {1,2,3,-,n})涂成颜色 i ,最后一定要把纸条涂满颜色,问最终的纸条有多少种可能的模样. 输入为两个数 n,m ,输出为你的答案 m <= n <= 1e6 题解 不考虑先前染的颜色被覆盖这件事情.如果某种颜色在最终的序列中出现了 x 次,那么我们就直接认为在染这种颜色的时候,我们只染了 x 个格子. 但这样一来每次染…
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手软,没有告诉具体多项式到底有多少项,只好一个一个暴力枚举,但是这也不现实,于是小编就开始骗分,还一分也没骗着.赛后小编看到的题解,才明白这是一道转进制的题,将十进制转换成m进制,m^0,m^1,m^2这不刚好对应上m进制的单位吗?所得结果刚好就是问题的解.那么用短除法模拟算出m进制下f(m)的每一位…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取一棵深度为 k 的满二叉树,对每个节点向它的所有祖先连边(如果这条边不存在的话). 例如,下面是一个 4-超级树: 请统计一棵 k-超级树 中有多少条不同的简单有向路径,对 mod 取模. input 一行两整数 k, mod. output 一行一整数表示答案. example input1: 2…
发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. 但是对于这道题来说 暴力还是有价值的. 考虑20分 每次暴力dfs. 考虑对于树是随机生成的 那么期望高度为logn 我们发现每次修改只用修改到1 也就是说每次暴力修改颜色的话只需要logn的时间复杂度. 考虑如何动态维护子树内的值 考虑修改一个点的颜色 子树内之前和它颜色一样的点 显然子树内部整体…
传送门 又炸了-- \(A\) 唐时月夜 不知道改了什么东西之后就\(A\)掉了\(.jpg\) 首先,题目保证"如果一片子水域曾经被操作过,那么在之后的施法中,这片子水域也一定会被操作" 这个意思就是说,如果一个点\((x,y)\)被操作过,那么它被进行的操作一定是所有操作的一个后缀和 这样的话我们只要对于每个点维护一下它有几个操作,并把操作的后缀和维护起来,就能知道它到底被怎么操作了 维护有几个操作的话二维前缀和就行了 然后关键是后缀和我们应该怎么处理 因为这是一个矩阵,那么我们考…
传送门 Solution A. 一共有\(T\)组数据 每次询问你\([l,r]\)中有多少个数能被他的所有数位整除(如果数位中含有\(0\)忽略掉) 数位dp,咕咕咕 B. 题面略 考虑一个个只有两个元素组成的小区间 可以发现若选择\([l,l+1]\),则必定要选择一个最大的区间包含\([a[l],a[l+1]]\)的区间 每个小区间看成一个点,向它所要求必须要选择的点连边,线段树优化建图 对图进行tarjan缩点,然后拓扑排序即可 全是区间询问,大概要有5棵线段树的样子 其实有简单得多的解…
考场上随手构造了一组数据把自己卡掉了 然后一直都是掉线状态了. 最后发现这个东西不是subtask -1的情况不多 所以就没管无解直接莽 写题有点晚 故没调出来.. 考虑怎么做 容易想到建立AC自动机 然后不能跑到结尾节点 fail是结尾节点的也不能跑. 把那些节点抽出来就可以随便跑了 题目描述非常丧心病狂 两个字符串相等描述的莫名其妙. 不过这道题的本意让我们求出两端在环内的字符串个数. 发现如果存在不是简单环的话是无解的 如果出现两个环的路径上还是环的话也同时无解. 对于前者 一个非常妙的t…
  这道题就叫 T2 我有什么办法www 题目 题意简述   给定一个字符串 \(s\),其长度为 \(n\),求无序子串对 \((u,v)\) 的个数,其中 \((u,v)\) 满足 \(u,v\) 均为回文串且出现位置相交. 数据规模   \(n\le2\times10^6\),字符集为小写字母(于是测试数据里有神奇的'{'字符. 题解   难得的水题呐!   正难则反,首先求出总的回文子串对数,再减去出现位置不交的对数.   对于前者,用 Manacher 或者 PAM 都可以轻松求出,这…
[问题描述] 给出 n 个数 a1,a2,...,an, 询问有多少个三元组(i, j, k)满足以下两个条件:1. i < j < k: 2. ai*aj*ak 是 p 的倍数. [输入格式] 第一行两个数 n, p.接下来一行 n 个数. [输出格式] 一行一个数表示答案. [输入样例 1] 4 100 4 5 2 25 [输出样例 1] 2 [输入样例 2] 12 1 1 1 1 1 1 1 1 1 1 1 1 1 [输出样例 2] 220 [输入样例 3] 27 36 269 154…
题目 题意简述   维护一个长度为 \(n\) 的序列 \(\{a_n\}\),并给出 \(q\) 个操作: 将下标为 \(x\) 的数修改为 \(y\). 给定 \(l,r,k\),求最大的 \(m\) 使得 \(\{k,k+1,\dots,k+m\}\) 是区间 \([l,r]\) 内元素的子序列. 数据规模   \(n,q\le10^6;~a_i,y,k\le n\). 题解   首先不考虑修改操作,如何处理询问呢?   不难想到维护一列指针.令 \(suf_i\) 为 \(i\) 之后第…
题目 题意简述   给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原凸包的一块染色(包含边界).再给出 \(q\) 个询问,询问一个点 \(p\) 所在位置是否被染色. 数据规模   强制在线,\(n,q\le10^5\). 题解 题意转化   首先,考虑某个点"被染色"的条件:存在一对相对边,若两边不平行,则该点在这对边延长所构成的劣角内部:若两边平行,…
题目 题意简述   给定两颗树 \(A,B\),\(A\) 中的任一结点 \(u\) 与 \(B\) 中的任一结点 \(v\) 都有一个关系值 \(f(u,v)\),初始为 \(0\).再给出 \(q\) 个形如 \(a1,b1,a2,b2,c\) 的操作,表示对于 \(A\) 中路径 \(a1\leftrightarrow b1\) 上的任一结点 \(u\) 和 \(B\) 中路径 \(a2\leftrightarrow b2\) 上的任一结点 \(v\),\(f(u,v)\leftarrow…
爆炸了QAQ 传送门 \(A\) \(Mas\)的童年 这题我怎么感觉好像做过--我记得那个时候还因为没有取\(min\)结果\(100\to 0\)-- 因为是个异或我们肯定得按位考虑贡献了 把\(a\)做个前缀异或和,记为\(s_i\),那么就是要找到 \[\max_{j<i}\{s_j+(s_j\oplus s_i)\}\] 我们假设\(s_i\)第\(k\)位为\(a\),\(s_j\)第\(k\)位为\(b\),\(s_j+(s_j\oplus s_i)\)第\(k\)位为\(c\)…
t1-快速多项式变换(FPT) 题解 看到这个\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+ \cdots + a_nx^n\)式子,我们会想到我们学习进制转换中学到的,那么我们就只需要\(m\)转换成\(n\)进制就可以了. ac代码 #include <bits/stdc++.h> using namespace std; long long n, m, a[1005]; int cnt; int main() { cin >> n >> m; whi…
一 稍微转化一下,就是找所有和原树差距不超过k的不同构树的个数 一个挺trick的想法是: 由于矩阵树定理的行列式的值是把邻接矩阵数值看做边权的图的所有生成树的边权乘积之和 那么如果把不存在于原树中的边的边权设为x,做矩阵树定理得到n-1次的多项式第i次项系数就是选择新选择i个边的方案数! 带着x不好做,x=1~n带入,然后插值即可 O(n^4) 二 开始碾标算了: 还是可以树形DP,经典的树形DP套路难办的原因是不知道干掉的子树接在哪里 所以我们干脆先不管接在哪里,先都砍断 一个公式: htt…
题目描述 LYK喜欢字符串,它认为一个长度为n的字符串一定会有n*(n+1)/2个子串,但是这些子串是不一定全部都不同的,也就是说,不相同的子串可能没有那么多个.LYK认为,两个字符串不同当且仅当它们的长度不同或者某一位上的字符不同.LYK想知道,在字符集大小为k的情况下,有多少种长度为n的字符串,且该字符串共有m个不相同的子串. 由于答案可能很大,你只需输出答案对1e9+7取模后的结果即可. 输入格式(string.in) 一行3个数n,m,k. 输出格式(string.out) 一行,表示方…
1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS.1.2 Input Format第一行两个整数 n,m.接下来一行 m 个整数, 表示 A.1.3 Output Format一行一个整数表示答案.1.4 Sample1.4.1 Input5 31 3 41.4.2 Output111.5 Constraints对于前 30% 的数据, n ≤ 9…
https://www.luogu.com.cn/problem/P4168 题目 给$n$个数字,有$m$次询问,问$a_l, a_{l+1} , \dots , a_r$的众数是什么, $1\leqslant n \leqslant 40000, 1\leqslant m \leqslant 50000, 1\leqslant a_i\leqslant10^9$ 题解 第一次做分块 方法一 因为n不是很大,所以可以对数据进行离散化后统计出现次数 所以就可以直接统计最大的了.这样复杂度是$\m…
Discription DarrellDarrellDarrell 在思考一道计算题. 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数. 在这种限制下其实只有 N−1N − 1N−1 个位置可以切. 对于一种切的方案,假如切完后每块的宽度分别是:w1,w2,w3,...,wk(∑wi=N)w_1, w_2, w_3, ..., w_k(\sum w_i = N)w1​,w2​,w3​,...,wk​(∑wi​=N),那么该种方案对应…