信息学竞赛
文章平均质量分 66
「已注销」
这个作者很懒,什么都没留下…
展开
-
P1040 [NOIP2003 提高组] 加分二叉树题解(动态规划)
若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。试求一棵符合中序遍历为(1,2,3,n)且加分最高的二叉树tree。要求输出原创 2022-07-03 00:00:43 · 450 阅读 · 1 评论 -
KMP算法详解与实现(C++)
引子对于用户输入的一个关键词,要在茫茫的信息中检索列举出与之匹配的信息,提高匹配效率和时间无疑是个重点。我们把问题简化。对于一个串S,判断串T是否为它的子串。若是,则返回匹配成功的首位置若不是,输出-1方案一:(纯暴力)#include<iostream>#include<cstring>char key[100];char s[100];int lens,lenk;using namespace std;int main(){ cin&g原创 2022-07-02 23:53:33 · 456 阅读 · 0 评论 -
回文数(Noip1999)题解
文数(Noip1999)时间限制: 1000 ms 内存限制: 65536 KB提交数: 13507 通过数: 5503【题目描述】若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如,对于10进制数87,STEP1: 87+78= 165 STEP2: 165+561= 726STEP3: 726+627=1353 STEP4:......原创 2022-07-02 23:49:34 · 1103 阅读 · 0 评论 -
P4943 密室(Dijkstra+堆优化)
哈利与罗恩进入了密室,他们发现密室由n个小室组成,所有小室编号分别为:1,2,...,n。所有小室之间有 m条通道,对任意两个不同小室最多只有一条通道连接,而每通过一条通道都需要 i的时间。......原创 2022-07-02 23:33:24 · 188 阅读 · 0 评论 -
讨论(NOI Online 2022)
Code:#include <algorithm>#include <cstring>#include <iostream>using namespace std;const int maxn = 2e6 + 7, maxm = 4e6 + 7;int head[maxn], nxt[maxm], to[maxm], ecnt;void add(int u, int v){ nxt[++ecnt] = head[u]; head[u]原创 2022-04-10 06:37:13 · 230 阅读 · 0 评论 -
蔬菜(NOI 2017)(贪心+优先队列+并查集)
题目大意:小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案。在蔬菜仓库中,共存放有 n种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益。在计算销售蔬菜的收益时,每销售一个单位第 i种蔬菜,就可以获得 ai 的收益。特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i种蔬菜时,还会额外得到 si 的额外收益。在经营开始时,第 i 种蔬菜的库存为ci 个单位。然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已原创 2022-04-10 06:34:57 · 393 阅读 · 0 评论 -
王国比赛(NOI Online 2022 普及组)
这题没什么好说的了,建立一个Ans数组,+1和-1分别记录答对和打错,很明显最终的Ans[i]如果大于0,则这道题对了;否则这道题为负,不用考虑相等的情况。最后和预测一起比对即可。原创 2022-04-07 14:03:23 · 1011 阅读 · 0 评论 -
数字游戏(NOI Online 2022 普及组)
仔细观察可以发现,如果我们求出了d,就可以把d代入题目中的式子,从而求出y,问题解决,现在问题转化为求d了。充分利用a,b互质的性质,可以发现,如果对于两个数,它们都分别含有a,b因子,且其余因子相同,它们的最大公约数一定是相同的这些因子的积,即...原创 2022-04-07 13:15:50 · 3653 阅读 · 0 评论 -
P7074 [CSP-J2020] 方格取数
设有 n×m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。原创 2022-03-12 14:59:10 · 1134 阅读 · 2 评论 -
P5686 [CSP-S2019 江西] 和积和
给定两个下标从1到n编号的序列 ai,bi,定义函数 S(l,r)(1≤l≤r≤n)为:i=l∑rai×i=l∑rbi请你求出下列式子的值:S(l,r)l=1∑nr=l∑nS(l,r)原创 2022-03-12 14:52:52 · 568 阅读 · 0 评论 -
P5687 [CSP-S2019 江西] 网格图
给定一个 n×m 的网格图,行从 1∼n 编号,列从 1∼m 编号,每个点可用它所在的行编号 r 与所在的列编号 c 表示为 (r,c)。点 (i,j) 与 (i,j+1) 间连有一条权值为ai 的边,其中 1≤i≤n,1≤j<m。点 (i,j) 与 (i+1,j) 间连有一条权值为 bj 的边,其中 1≤i<n,1≤j≤m。原创 2022-03-12 14:42:59 · 381 阅读 · 0 评论 -
前缀和(一维,二维)的讲解与应用
类比一维数组前缀和相减的思路,我们也尝试用我们预处理出来的二维数组前缀和来解决这个问题。其实很简单,我们只需把上述公式中的1替换一下就行:那也就是(x1,y2)围成的矩形和(x2,y1)围成的矩形减去(x1,y1),那不就是下图中的黄色区域吗,让(x2,y2)减去(x1,y1)不就是蓝色区域吗,求和完毕原创 2022-02-26 13:47:44 · 405 阅读 · 0 评论 -
C++求一元二次方程方程的根(C++的精确度问题)
利用C++求一元二次方程的根,不能单纯地依靠数学原理,否则会得出错误的结果!先看一道例题:1058:求一元二次方程时间限制: 1000 ms 内存限制: 65536 KB提交数: 102128 通过数: 18399【题目描述】利用公式x1=−b+b2−4ac√2a,x2=−b−b2−4ac,求一元二次方程ax2+bx+c=0的根,其中a不等于0。结果要求精确到小数点后5位。【输入】输入一行,包含三个浮点数a,b,c(它们之间以一个空格分开),分别...原创 2022-02-12 19:08:11 · 6583 阅读 · 1 评论 -
求回文串(洛谷P5041 HAOI2009) 题解
先上题目:题目描述所谓回文串,就是对于给定的字符串,正着读和反着读都一样,比如ABCBA就是一个回文串,ABCAB则不是。我们的目标是对于任意输入的字符串,不断将第i个字符和第i+1个字符交换,使得该串最终变为回文串。求最少交换次数。输入格式一个由大写字母字母组成的字符串。输出格式若能经过有限次操作能将原串变为回文串,则输出最少操作次数;否则输出-1。输入输出样例输入 #1复制SHLLZSHZS输出 #1复制4说明/提示样例说明交换 L 和 Z 变原创 2022-02-08 15:21:50 · 1159 阅读 · 0 评论 -
C++逆序对数目的求解
逆序对数目的求解方法,一种是基于冒泡排序,另一种是基于归并排序。原创 2022-02-07 20:05:46 · 1799 阅读 · 0 评论 -
回文(CSP-S-2021-palin)题解
老规矩,献上题目:题目描述给定正整数n和整数序列 a1,a2,…,a2n,在这2 n2n个数中, n1,2,…,n分别各出现恰好2次。现在进行 2n次操作,目标是创建一个长度同样为2n的序列 b1,b2,…,b2n,初始时b为空序列,每次可以进行以下两种操作之一:将序列a的开头元素加到b的末尾,并从a中移除。 将序列a的末尾元素加到b的末尾,并从a中移除。我们的目的是让bb成为一个回文数列,即令其满足对所有 1≤i≤n,有 bi...原创 2022-02-06 17:21:44 · 8560 阅读 · 1 评论 -
C++经典的对拍程序与方法
对拍是自我检验程序可行性一个常用途径,掌握对拍方法是每一个竞赛生的最基本的要求。我重点在Windows系统中介绍方法。原创 2022-02-06 10:41:34 · 2259 阅读 · 2 评论 -
C++区间质数筛选(2种方法)
发现我们对于同一个数的计算方式不同。那么怎样才能确定一个唯一的计算方式呢?关键是找质因子,因为每一个大于1的正整数都能分解为若干个质数的乘积原创 2022-02-05 07:00:05 · 3268 阅读 · 1 评论 -
C++高效的质数的判断(2种方法)
前提准备在开始质数的讨论之前,我们先预备一下:质数的定义:若一个正整数除了1和它自身之外不能被任何自然数整除,则该数称为质数,也叫素数。否则为合数。由定义可知,所有小于等于1的数既不是质数,也不是合数。质数的分布较为稀疏,对于一个足够大的数S,不超过S的质数大约有个,也就是说每InN个数约有一个质数,这点读者了解即可。原创 2022-02-04 22:31:26 · 30283 阅读 · 1 评论 -
C++各种排序方法讲解(进阶)
堆排序~1#include<iostream>using namespace std;int heap[32768];int heap_size=0;int tot;void put(int num){ heap[++heap_size]=num; int now=heap_size,next; while(now>1){ next=now>>1; if(heap[next]<=heap[now]){ return; } els原创 2022-02-04 13:41:39 · 428 阅读 · 0 评论 -
C++数组的高级使用用法(下标可以为负数?)
如果说定义一个变量代表向内存中申请一块地址来保存这种类型的值,那么定义一个该变量类型的数组就是在内存中申请连续的多块地址来保存这种类型的值(连续:相当于把几个变量集合起来,相互挨着),所以说数组本质上可以算一个指针,指向一个整体。原创 2022-02-04 13:19:52 · 3359 阅读 · 0 评论 -
C++各种排序方法讲解(基础)
冒泡排序#include<cstdio>int num[32768];int tot;int main(){ scanf("%d",&tot); for(int i=1;i<=tot;i++){ scanf("%d",&num[i]); } for(int i=1;i<=tot;i++){ for(int j=1;j<=tot-i;j++){ if(num[j+1]>num[j]){ int t=num[j+1];原创 2022-02-02 22:51:37 · 6994 阅读 · 1 评论 -
P7113 [NOIP2020] 排水系统 (DFS)(90Point简易算法)
题目描述对于一个城市来说,排水系统是极其重要的一个部分。有一天,小 C 拿到了某座城市排水系统的设计图。排水系统由nn个排水结点(它们从1 \sim n1∼n编号)和若干个单向排水管道构成。每一个排水结点有若干个管道用于汇集其他排水结点的污水(简称为该结点的汇集管道),也有若干个管道向其他的排水结点排出污水(简称为该结点的排出管道)。排水系统的结点中有mm个污水接收口,它们的编号分别为1, 2, \ldots , m1,2,…,m,污水只能从这些接收口流入排水系统,并且这些结点没有...原创 2021-10-20 10:04:49 · 857 阅读 · 0 评论 -
表达式(CSP-J 2021-Expr)题目详解
先把题目从洛谷搬上来题目描述小 C 热衷于学习数理逻辑。有一天,他发现了一种特别的逻辑表达式。在这种逻辑表达式中,所有操作数都是变量,且它们的取值只能为0或1,运算从左往右进行。如果表达式中有括号,则先计算括号内的子表达式的值。特别的,这种表达式有且仅有以下几种运算:与运算:a & b。当且仅当a和b的值都为1时,该表达式的值为1。其余情况该表达式的值为0。 或运算:a | b。当且仅当a和b的值都为0时,该表达式的值为0。其余情况该表达式的值为1...原创 2022-02-01 14:54:09 · 4844 阅读 · 1 评论 -
C++快速幂详解
快速幂相较于普通的幂,具有占用空间少,效率更高等优点,全面碾压普通的幂。在计算量较小时,二者相差无几,但数据规模一旦上来了,差距也就出来了。原创 2022-01-31 22:50:41 · 5258 阅读 · 3 评论 -
廊桥分配(CSP-S-2021-T1)通俗题解
目录题目描述输入输出样例题目描述当一架飞机抵达机场时,可以停靠在航站楼旁的廊桥,也可以停靠在位于机场边缘的远机位。乘客一般更期待停靠在廊桥,因为这样省去了坐摆渡车前往航站楼的周折。然而,因为廊桥的数量有限,所以这样的愿望不总是能实现。机场分为国内区和国际区,国内航班飞机只能停靠在国内区,国际航班飞机只能停靠在国际区。一部分廊桥属于国内区,其余的廊桥属于国际区。L 市新建了一座机场,一共有n个廊桥。该机场决定,廊桥的使用遵循“先到先得”的原则,即每架飞机抵达后,如果相应的区(国..原创 2022-01-29 15:17:57 · 7274 阅读 · 5 评论 -
CSP-J-2020-优秀的拆分多种解法
题目描述一般来说,一个正整数可以拆分成若干个正整数的和。例如,1=1,10=1+2+3+4 等。对于正整数 n 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,n 被分解为了若干个不同的 2 的正整数次幂。注意,一个数 x 能被表示成 2 的正整数次幂,当且仅当 x 能通过正整数个 2 相乘在一起得到。例如,是一个优秀的拆分。但是,就不是一个优秀的拆分,因为 1 不是 2 的正整数次幂。现在,给定正整数 n,你需要判断这个数的所有拆分中,是否存在优秀的拆分。若存在,请..原创 2022-01-21 21:01:10 · 2737 阅读 · 0 评论 -
P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n−1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类 数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的...原创 2021-10-23 00:17:43 · 198 阅读 · 0 评论 -
P5020 [NOIP2018 提高组] 货币系统
题目描述在网友的国度中共有nn种不同面额的货币,第ii种货币的面额为a[i]a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为nn、面额数组为a[1..n]a[1..n]的货币系统记作(n,a)(n,a)。在一个完善的货币系统中,每一个非负整数的金额xx都应该可以被表示出,即对每一个非负整数xx,都存在nn个非负整数t[i]t[i]满足a[i] \times t[i]a[i]×t[i]的和为xx。然而, 在网友的国度中,货币系统可能是不完善的...原创 2021-10-21 21:42:00 · 302 阅读 · 0 评论 -
P7243 最大公约数 (BFS的应用)
题目背景 “寻求最大公约数是人民民主的真谛。……” 初秋,从枝丫滴下的阳光,柔和,在教室的窗棱溅起,润湿晨读的少女的脸颊。 “阿绫,阿绫”,天依低俯身子,八字辫耷拉在竖起的课本沿,“我们的最大公约数是多少呢?” “一定不小吧”,左手悄悄捏捏天依的小臂,“比如呀,有一个公因子,叫做‘你喜欢我,我也喜欢你’。”题目描述相反,人际圈形形色色,公约数小得可怜,似乎很难保持自己的个性因而变成无趣的人呢。现在把人际抽象成一个 n×m的矩形,每个人初始的个性为a_{i,j。从...原创 2021-10-21 11:52:15 · 307 阅读 · 0 评论 -
KMP算法代码
KMP的算法的历史不过多讲解,直接干最难的部分先上代码1.求next数组的代码:(伪代码)int next[1000]; //nextvoid Get_next(char s[]){//s 为模串 next[0]=-1; int i=0; int j=-1; while(s[i]!='\0'){ if(j==-1 || s[i]==s[j]){ /*在这里,j==-1时,为什么也满足呢,因为当j==-1时,进入if主体,i++,j++;也就把next数组的值变原创 2021-10-19 09:55:34 · 525 阅读 · 0 评论 -
T196684 昕昕的不等式组(洛谷EVOI CSP信心赛)
题目描述昕昕上七年级了,她做到了一道解一元一次不等式组的数学题。这个一元一次不等式组共有nn个一元一次不等式。她分别求出了每个不等式的解集,而她需要把它们合并为该不等式组的解集。每个不等式解集都化简为了最简形式,都形如x<t_ix<ti(或x>t_ix>ti等),其中t_iti为常数项,xx为未知数。未知数为一个小写英文字母,会在不等号左侧;常数项为一个整数,会在不等号右侧。所有不等式使用的不等号只有<,>,\le,\ge<,...原创 2021-10-18 19:04:22 · 220 阅读 · 0 评论 -
中国剩余定理的详解与应用
引子:在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”题意为:求一个数x,使x除以3余2,除以5余3,除以7余2.这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:...原创 2021-10-18 15:08:08 · 2249 阅读 · 0 评论 -
1182:合影效果(一本通题解)(快排)
1182:合影效果时间限制: 1000 ms 内存限制: 65536 KB提交数: 14603 通过数: 8384【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。后...原创 2021-10-18 10:15:34 · 1035 阅读 · 0 评论 -
1184:明明的随机数(一本通)(归并与桶排序的比较)
1184:明明的随机数时间限制: 1000 ms 内存限制: 65536 KB提交数: 19979 通过数: 12535【题目描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。【输入】有2行,...原创 2021-10-18 09:03:10 · 158 阅读 · 0 评论 -
P7076 [CSP-S2020] 动物园(位运算的应用)
P7076 [CSP-S2020] 动物园提交46.60k 通过5.81k 时间限制1.00s 内存限制256.00MB题目描述动物园里饲养了很多动物,饲养员小 A 会根据饲养动物的情况,按照《饲养指南》购买不同种类的饲料,并将购买清单发给采购员小 B。具体而言,动物世界里存在2^k2k种不同的动物,它们被编号为0 \sim 2^k - 10∼2k−1。动物园里饲养了其中的nn种,其中第ii种动物的编号为a_iai。《饲养指南》中共有mm条要求,第jj条要求形如...原创 2021-10-17 21:55:26 · 1181 阅读 · 0 评论 -
1357:车厢调度(train)(一本通栈的使用)
1357:车厢调度(train)时间限制: 1000 ms 内存限制: 65536 KB提交数: 11461 通过数: 5787【题目描述】有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有nn节(n≤1000n≤1000),分别按照顺序编号为11,22,33,…,nn。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,...原创 2021-10-17 15:01:17 · 454 阅读 · 0 评论 -
1358:中缀表达式值(expr)(一本通)
1358:中缀表达式值(expr)时间限制: 1000 ms 内存限制: 65536 KB提交数: 5568 通过数: 1970【题目描述】输入一个中缀表达式(由0-9组成的运算数、加+减-乘*除/四种运算符、左右小括号组成。注意“-”也可作为负数的标志,表达式以“@”作为结束符),判断表达式是否合法,如果不合法,请输出“NO”;否则请把表达式转换成后缀形式,再求出后缀表达式的值并输出。注意:必须用栈操作,不能直接输出表达式的值。【输入】一行为一个以...原创 2021-10-17 12:00:46 · 1321 阅读 · 0 评论 -
1356:计算(calc)(一本通)使用栈解法
1356:计算(calc)时间限制: 1000 ms 内存限制: 65536 KB提交数: 7184 通过数: 2863【题目描述】小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”,求出的值就是密码。小明数学学得不好,还需你帮他的忙。(“/”用整数除法)【输入】共1行,为一个算式。【输出】共1行,就是密码。【输...原创 2021-10-17 11:28:06 · 1709 阅读 · 1 评论 -
裴蜀定理(Noi Color)应用
时间限制: 1.0 秒 空间限制: 256 MB题⽬描述 你有 个格⼦,它们从 开始编号,初始时所有格⼦都还未染⾊,现在你按如下规则对它们染⾊: 1. 编号是 倍数的格⼦(包括 号格⼦,下同)染成红⾊。 2. 编号是 倍数的格⼦染成蓝⾊。 3. 编号既是 倍数⼜是 倍数的格⼦,你可以选择染成红⾊或者蓝⾊。 其中 和 是给定的整数,若格⼦编号是 或 的倍数则它必须要被染⾊。在忽略掉所有未染⾊ 格⼦后,你不希望存在 个连续的格⼦颜⾊相同,因为你认为这种染⾊ ⽅案是⽆聊的。现在给定 ,你想知道是否有⼀种染⾊⽅原创 2021-10-16 21:04:34 · 296 阅读 · 0 评论