题面 一道模拟题,模拟CPU的处理过程?!省选模拟题 思路: 模拟退火大法+优先队列乱搞 要注意的点 1.空闲时,CPU要处理进程 2.当队列中没有进程时,要先进行判断,然后访问 3.当优先级高的进程替换掉原进程时,原进程已经处理过的时间要减去 4.结束进程时要更新后面进程的时间 既然是模拟题,那就不讲具体了h^ovny:我懒 Code: #include<bits/stdc++.h> using namespace std; struct node{ int i,S,l,p; node(in…
数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我…
身为一个蒟蒻,由于刷不过[NOI2001]食物链 于是出门左转写了道另一道假的食物链 戳这里 这里的食物链个条数其实就是有向图的路径数(应该是这么说吧,我弱) 思路: 拓扑(Topulogy)(一本正经的话说八道)+宽搜+乱搞+(由于本人很弱,所以想不出来了)-- 不用先求拓扑序 一边遍历一边用 f数组 统计路径数 存个图,然后队列遍历,要注意的是单独的一个点不算一条链 所以就第一遍把单独的点处理出去(不进队列) 最后的问题就是累加了 如果这个点出度为0时,就 ans+= f[to] 否则更新f…
「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵,随便搞搞就成了,卡常 Code: #include <cstdio> #include <cstring> namespace io { const int SIZE=(1<<21)+1; char ibuf[SIZE],*iS,*iT,obuf[SIZE],*oS=ob…
「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\(p\),那么我们需要把\(x=x_0\),\(y=y_0\)与\(z=z_0\)的三个平面的交中填上比\(p\)小的数字,这样,剩下的正方体就成了一个长宽高分别为\((n-1)(m-1)(l-1)\)的子问题了. 考虑到我们使用的是数字的相对大小关系,而不是数字的值,也就是说,任意的\(k\)个数字…
无线电联系 Radio Contact 题目描述 Farmer John has lost his favorite cow bell, and Bessie the cow has agreed to help him find it! They both fan out and search the farm along different paths, but stay in contact via radio so they can keep in touch with each-oth…
题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 "阻止","最小",看到这样的字眼,肯定就要想到最小割啊 在互相能到达的点之间建边,容量为INF,因为--它不能炸-- 然后把每个点拆成入点和出点,每个兵所在的出点和源点S直接相连,在最外面的点的出点和汇点T直接相连 最后套模板,OK了 最重要的还是建边,能够理解题目的…
题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 2 output:21 \ / 1 3 1 3 4 1 4 10 \ / 2 3 20 1 3 5 20 能理解了吧! 思路: 树形打屁DP 很基础的一道树形DP 对于每个点,用f[k][i]记录在以k为根的子树中,取i条枝的最大值 注意: 1.要注意叶子节点的判断 2.有可能只取一侧的子树 Code: #i…
题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge \to\) 思路: 高斯素数的原理,将整数分解质因数后,再把每个质因数分解成高斯素数,对于质数4n+1,它可以有效的分解成高斯素数,而质数4n+3不能,因为3无法分解为高斯素数,所以当一个数有奇数个3因子时,这个圆上没有整点,而3的个数为偶数时,由于能分成两组配对,所以有整点,但3对Ans的影响为0…
题面 这是一道诡异的黄题 居然让你求一串吧啦吧啦的东西中 字母(大小写)最长的回文串的长度,还要输出完整的串 吐血 思路: 保持淡定,我们啥都不会,就会Manacher,那就用Manacher大法! 1.把字符串处理成只有字母(去皮) 2.把字符串中插入#号(掺假) 3.Manacher跑一跑最长回文串长度(市场检查) 4.求出最长长度后再重新代入原来的字符串(打回原形!妖孽!) 然后,就完了~ 就是去皮的时候,顺便记录一下字符的位置,这样重新代入时就比较方便 并且由于字符串有很多行,读入时就要…
题面 求环中的长度为k(k为奇数)且回文中心不同的回文串个数 思路: 刚学manacher算法,就送上一道模板题,此题注重对manacher算法的理解 Manacher,但是不用插入其他符号,因为k是奇数,中心一定在字符上 不知道Manacher? 洛谷日报上有讲,但是比较难懂,建议上B站更深入了解下\(\to\) 可以先把代码抄下来,然后一边看讲解一边理解代码含义,这样更能理解 反正我第一遍已经看蒙了 补充和纠正: 关于前几篇题解,一些小细节纠正一下 文末的代码更加简洁易懂 1.这是一个环,要…
题面 主要大衣大意: 给定一个字符串,求至少加入多少个字符才能使字符串变成回文字符串 下面就是我一本正经的胡说八道题解 思路: 很显然,这应该是一道典型的最长公共子序列的题目 因此,主要思想就是DP 方程式也挺好推的 于是我们就来讲一下为什么这题能用最长公共子序列(LCS)求解 证明: 求的是什么? 想要使这个字符串加入最少的字符变成一个回文串,那么肯定就是要是字符串中不能回文的部分回文 说起来比较难理解,比如:Ab3bd最少添的字符就是A对应的一个A,最后d对应的一个d 我们可以发现,最少要添…
圆原题面 我环顾四周,发现大佬们的写法都好高端! 比较差劲的我,只能交上一份DFS的题解 思路: DFS(当然了,其他算法也行) 要想切断叶子节点到根节点的连接 就是在叶子节点和根节点之间砍掉一条边 这明显就很符合DFS的性质,一条路一直走下去,遇到分枝就分开走 于是我们DFS每一条路径,然后求答案 复杂度为O(n) 但是--还没完! 我们可以发现DFS有三种情况 1.该节点为叶子节点,此时只能删去连接它和父节点的边 2.该节点为枝节点,有父节点和子节点,需要选择性的删除 3.该节点为根节点,只…
点开有惊喜 其实是题面 这D1T1给的很有面子! 我居然做的来! 从左上角走到右上角 然后n<=1000 所以果断放弃DFS,选择BFS 思路还是一样的BFS 证明: 走到一个点的时间越早越好(因为时间越晚能走到的点越少,路障多了) 所以用BFS,走过的点不用再次走,用 vis数组记录已经是否遍历过 然后为了防止跑出棋盘去(B君看到了棋盘外美铝?!) 我们就给棋盘加一个 '1'的边框,这样就不会出去 然后还要记录一个时间t.x.y,可以用一个结构体 构造用 struct node{ ​ int…
「FJOI2016」神秘数 这题不sb,我挺sb的... 我连不带区间的都不会哇 考虑给你一个整数集,如何求这个神秘数 这有点像一个01背包,复杂度和值域有关.但是你发现01背包可以求出更多的东西,就是每个值是否可以被表示,而这个问题有点像问你一个单点的是否可以被表示,这是它的特殊性. 我们把这个整数集排序后,假设当前表示的区间是\([1,x]\),这时候在线加入\(a\) 如果\(a\le x\),显然值域变成\([1,x+a]\),否则答案假设\(x+1\) 考虑如何优化这个过程,我们可不可…
「ZJOI2016」大森林 神仙题... 很显然线段树搞不了 考虑离线操作 我们只搞一颗树,从位置1一直往后移动,然后维护它的形态试试 显然操作0,1都可以拆成差分的形式,就是加入和删除 因为保证了操作2的合法性,我们不妨先不计合法性把所有点加到树中 显然每个点要连到在这个点之前的离这个点时间上最近那个1操作的点上 然后可以发现移动时1操作相当于很多个点换根 我们可以对每个1操作建一个虚点,然后就可以很方便换根了 那么如何保证查询操作呢? 可以把每个1操作的虚点大小设成0(代表它父亲边的直接长度…
「SCOI2016」背单词 出题人sb 题意有毒 大概是告诉你,你给一堆n个单词安排顺序 如果当前位置为x 当前单词的后缀没在这堆单词出现过,代价x 这里的后缀是原意,但不算自己,举个例子比如abc的后缀是bc和c 否则 如果它的后缀(指在n个单词中的)在1~x-1全部出现了,代价为x-最后一个后缀的位置y 如果没有全部出现,代价n^2 看我气的连latex都懒得用了 然后你发现按后缀建字典树就可以了 然后你发现直接按子树大小贪心就可以了 但是我一开始偷懒就直接在trie上贪心走子树,这样是不行…
「NOI2015」寿司晚宴 这个题思路其实挺自然的,但是我太傻了...最开始想着钦定一些,结果发现假了.. 首先一个比较套路的事情是状压前8个质数,后面的只会在一个数出现一次的再想办法就好. 然后发现有个重要的事情是后面每个质因子\(x\)做统计的时候都是独立的,那么单独做就好了 显然要压两个人的前面质因子集合\(f_{i,j}\)代表两个人分别是\(i,j\)集合的答案,然后一块一块的加后面的质因子就好 加每一块时,我们显然需要处理谁选择了这一块或者都没选,再搞个\(dp_{0/1,i,j}\…
「SCOI2015」国旗计划 蛮有趣的一个题 注意到区间互不交错,那么如果我们已经钦定了一个区间,它选择的下一个区间是唯一的,就是和它有交且右端点在最右边的,这个可以单调队列预处理一下 然后往后面跳拿倍增优化一下 Code: #include <cstdio> #include <cctype> #include <algorithm> #define int unsigned int const int N=4e5+10; template <class T&g…
「JLOI2015」骗我呢 这什么神仙题 \[\color{purple}{Link}\] 可以学到的东西 对越过直线的东西翻折进行容斥 之类的..吧? Code: #include <cstdio> const int mod=1e9+7; const int N=3e6+10; inline int add(int a,int b){return a+b>=mod?a+b-mod:a+b;} #define mul(a,b) (1ll*(a)*(b)%mod) int qp(int…
「JLOI2015」城池攻占 注意到任意两个人的战斗力相对大小的不变的 可以离线的把所有人赛到初始点的堆里 然后做启发式合并就可以了 Code: #include <cstdio> #include <cctype> #include <algorithm> #define ll long long const int N=3e5+10; template <class T> void read(T &x) { int f=0;x=0;char c=…
「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cctype> #include <cstring> #include <algorithm> using std::min; const int N=1<<10; template <class T> void read(T &x) { x=0;cha…
「JLOI2015」战争调度 感觉一到晚上大脑就宕机了... 题目本身不难,就算没接触过想想也是可以想到的 这个满二叉树的深度很浅啊,每个点只会和它的\(n-1\)个祖先匹配啊 于是可以暴力枚举祖先链的选择 然后处理某个点\(i\)时,已经枚举了\(i\)到根的祖先的选择 这时候我们发现枚举\(i\)后,左右儿子的贡献的独立的,然后左右儿子的选择对上面是没有影响的 可以直接设\(dp_{i,j}\)表示\(i\)子树\(j\)黑点的最大值 然后直接子树合并两个儿子就可以了 复杂度? \(T(n)…
「SHOI2014」三叉神经树 膜拜神仙思路 我们想做一个类似于动态dp的东西,首先得确保我们的运算有一个交换律,这样我们可以把一长串的运算转换成一块一块的放到矩阵上之类的东西,然后拿数据结构维护. 但是考虑这个题,它最下面的那个运算的输入端只有两种可能,于是我们只需要讨论一下初始输入就完事了. 具体的,\(LCT\)每条实链维护一个\(yuu[i][0/1]\)表示实链底端的点输入为\(0/1\)后链头输出什么. 注意,这个链头指的是\(splay\)中那个点\(i\)的子树代表的那条链,也就…
「SDOI2014」数数 题目描述 我们称一个正整数 \(N\) 是幸运数,当且仅当它的十进制表示中不包含数字串集合 \(S\) 中任意一个元素作为其子串. 例如当 \(S=(\)22, 333, 0233\()\) 时,233 是幸运数,2333.20233.3223 不是幸运数. 给定 \(N\) 和 \(S\),计算不大于 \(N\) 的幸运数个数. 输入格式 输入的第一行包含整数 \(N\). 接下来一行一个整数 \(M\),表示 \(S\) 中元素的数量. 接下来 \(M\) 行,每行…
「SDOI2014」向量集 维护一个向量集合,在线支持以下操作: A x y :加入向量 \((x, y)\): Q x y l r:询问第 \(L\) 个到第 \(R\) 个加入的向量与向量 \((x, y)\) 的点积的最大值.集合初始时为空. 对于所有的数据,\(1 \leq N \leq 4 \times 10^5\),操作中的向量坐标满足 \(|x|,|y| \leq 10^8\),询问满足 \(1 \leq L \leq R \leq T\),其中 \(T\) 为已经加入的向量个数.…
#2664. 「NOI2013」向量内积 两个 \(d\) 维向量 \(A=[a_1, a_2 ,...,a_d]\) 与 \(B=[b_1 ,b_2 ,...,b_d]\) 的内积为其相对应维度的权值的乘积和,即: \[ (A,B) = \displaystyle \sum_{i=1}^d{a_ib_i} = a_1b_1 + a_2b_2 + \ldots + a_db_d \] 现有 \(n\) 个 \(d\) 维向量 \(x_1, \ldots, x_n\),小喵喵想知道是否存在两个向量…
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainb…
「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似双hash的方法,一个表进行拉表,另一个表存这个串的权值 然后就是暴力搞了 犯了个很sb的错误,我把每个蚯蚓长度都-1了,这样很容易爆Hash 不过我最开始是对每个长度的串开一个Hash数组搞,这样空间大,时间常数大,卡不过去,但不会因为长度为0的情况爆hash 最后回来的时候,一直爆Hash到自闭…
「ZJOI2019」线段树 听说有人喷这个题简单,然后我就跑去做,然后自闭感++,rp++(雾) 理性分析一波,可以发现最后形成的\(2^k\)个线段树,对应的操作的一个子集,按时间顺序作用到这颗线段树上. 首先考虑研究一下tag的性质,比如两个操作时间先后是否没有影响,操作是否可以以某种形式进行合并,然后啥也没发现. 然后考虑一下一颗树是否可以被压成某个状态,比如实际上只有\(\log\)个状态然后去dp,发现也不行 再次冷静分析一波,发现好像每个节点可以独立考虑,结合上面\(2^n\),不妨…