随笔分类 - 题解
各种题题解,acwing周赛题解,牛客比赛题解
摘要:Preface 太久没写最短路,写个题解记录一下 题意 天梯赛就是太吃细节了 我们重点理解下,题目要求输出什么 最短路的条数,最大的最短路上的点权和 最短路路径 求最短路就用dijkstra 如何求最短路的条数 我们用一个num来记录到某个点的最短路路径条数,如果v节点可以由u更新最短路,那么\(n
阅读全文
摘要:农夫约翰最喜欢的操作 分几步来: 要满足\(a_i-x\)整除\(x\) 转化一下为,即满足\(a_i \equiv x \pmod M\) ,所以预处理,\(a_i=a_i \mod M\) 由第一步,我们可以知道\(x\in (0,M-1)\) 根据题意我们所求值 \(val=\sum_{i=1
阅读全文
摘要:题解 赛时做题 A 入门题 等差数列,找公差,构造第三个即可 B 题意简单,考察字符串转化成数字 C 几何题,大概初中难度,用全等或者向量都可以(初做时废了半天劲,果然上了大学就废了 赛后补题 D 纯暴力,但是可以收获的有两点 将二维转化成一维处理 bitset的使用和二进制操作 __builtin
阅读全文
摘要:题目描述 小苯有 ( n ) 个水池,编号从 1 到 ( n ),每个水池中有一定的水量 ( \(a_i\) )。水池之间有隔板,初始状态下这些隔板将水池隔开。 小苯需要进行两种操作: 移除隔板:操作格式为 1 l r,表示将第 ( l ) 个水池和第 ( r ) 个水池之间的所有隔板移除。这意味着
阅读全文
摘要:三元上升子序列的题解,利用线段树和离散化,或者用dp求解答案 P1637 三元上升子序列 简要题意,在一个序列中寻找长度为三的上升子序列 思路 有两种思路 直接法 一种是对于一个树,算一个数左边比他小的数,算右边比他大的数,然后相乘即是该该点处值 算比他大的数,和比他小的数,用树状数组或线段树即皆可
阅读全文
摘要:Shichikuji and Power Grid 题意还是很简单,每个点有点权,每个点之间也有边权 求最小生成森林,每个一颗最小生成树的权值等于边权+最小点权 思路 边权我们很好处理,有模板,但如何处理这个点权,便成了主要的问题 如果我们以边权的思路思考点权,那么点权就是某个点从到该点的边权 而我
阅读全文
摘要:题目 \(\\\) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依
阅读全文
摘要:完全平方数 都知道完全平方数的性质 \(n=sqrt(n)*sqrt(n) 且 sqrt(n)为整数\) 验证一下$sqrt(n)$是不是整数即可 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i
阅读全文
摘要:题目传送门 简化题意 构造一个长度为$n$的数组$a_i$ 满足以下两个条件 \(\sum_1^{n}a_i=0\) \(\prod_1^{n}a_i=n\) 根据第一个条件 其实很容易想到,构造一对相反数 再根据第二个条件 使这对相反数乘积为n 但光凭两个数根本不可能满足上述两种情况 一对相反数,
阅读全文
摘要:##统一大小写 按题意 1.统计大小写字母个数 2.按照要求转换为小写或大写,输出 #include<cstdio> #include<cstring> #include<iostream> using namespace std; bool check(char c){//判断大小写 if(c>=
阅读全文
摘要:##青蛙跳 +a的次数=k%2+k/2 -b的次数=k/2 注意数据不要爆范围了 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int t; int k,a,b; int main(){ cin>
阅读全文
摘要:##牛客IOI周赛28-普及组 ###String Game 简单模拟,把第一个移到末尾,移动的次数x不超过n,直接从第x个字符开始输出,然后输出前面的数 类似的如果超过n个字符,每移动n个字符,相当于还是原字符串,所以每次从$x%n$开始输出,再输出$x%n$的数 #include<cstdio>
阅读全文
摘要:##区间选数 #include<cstdio> #include<cstring> #include<iostream> #include<ctime> #include<cstdlib> using namespace std; int n,k; int t; int main(){ ios::s
阅读全文
摘要:##牛客竞赛数据结构专题班树状数组、线段树练习题 笔者蒟蒻能力有限,能写几道写几道 ###[NOIP2012]借教室 显然很符合线段树的操作,但是是区间和,还是区间最小值,还是区间最大值需要甄选 简化题意:求第几个操作后区间出现小于等于0,先输出-1,再输出第几个操作,如果操作完后都大于0,那么输出
阅读全文
摘要:蒟蒻能写几道水题题解吧 A 根据题意模拟,都还活着就加上两人攻击力和,同时小于等于0,直接跳出,还有一方存活加上10*攻击力退出 #include<cstdio> #include<cstring> #include<iostream> using namespace std; int a,b,h,
阅读全文
摘要:题目传送 就离谱,再次被语文AK,顺便学了点unordered_set 移动元素后 分四种情况 假设元素原位置为$i$,移动后为$j$ $pre[]$为序列前缀和,$suf[]$为序列后缀和 1.\(j<i\) 且可能存在 $k<j$或 \(i<k\),\(pre[k]=sum[n]/2\) 2.\
阅读全文
摘要:##费解的开关 这种题较少见也较难想 按一个开关,会影响上下左右四个方向的数 先可以考虑,只有一排灯的情况 那么一排灯的情况,只有32种按法即$2^5$次,可以用$1~32$每个数的二进制数表示方案,1表示改变灯,0表示不变 如果有两排灯了?是不是感觉有点不知所措 容易发现,改变第一排灯的状态,那么
阅读全文
摘要:##[题目传送 很明显是有关二进制的的题 ###三种位运算简单介绍 and 即 & (按位与) 二进制下同一位同为1,位运算后为1 例如 \(1001 & 0111 = 0001\) \(1001\) \(&0111\) \(=0001\) \(1&1=1 1&0=1 0&1=1 0&0=0\) o
阅读全文
摘要:#大逃离 基本就是模板题 加了1个限制,能到达点的个数不小于k 注意:出度+入度≠能到达点的个数,此时n的范围又很小,可以开个二维数组标记能到达的点,且同时统计数量 #include<cstdio> #include<cstring> #include<algorithm> #include<ios
阅读全文
摘要:#排列 生成一种排列,但排列不能升序 不能是升序的原因,因为$a_i≠i$,而序列全是都是唯一值,升序存在一种可能1,2,3,...,n 此时$a_i=i$ 这里提供一种解法 第n位为1,其余为i+1 #include<cstdio> #include<cstring> #include<iostr
阅读全文

浙公网安备 33010602011771号