- 博客(52)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注
原创 P1040 [NOIP2003 提高组] 加分二叉树题解(动态规划)
若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。试求一棵符合中序遍历为(1,2,3,n)且加分最高的二叉树tree。要求输出
2022-07-03 00:00:43 444 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 450
原创 回文数(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 1090
原创 P4943 密室(Dijkstra+堆优化)
哈利与罗恩进入了密室,他们发现密室由n个小室组成,所有小室编号分别为:1,2,...,n。所有小室之间有 m条通道,对任意两个不同小室最多只有一条通道连接,而每通过一条通道都需要 i的时间。......
2022-07-02 23:33:24 184
原创 讨论(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 228
原创 蔬菜(NOI 2017)(贪心+优先队列+并查集)
题目大意:小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案。在蔬菜仓库中,共存放有 n种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方案,以获得最多的收益。在计算销售蔬菜的收益时,每销售一个单位第 i种蔬菜,就可以获得 ai 的收益。特别地,由于政策鼓励商家进行多样化销售,第一次销售第 i种蔬菜时,还会额外得到 si 的额外收益。在经营开始时,第 i 种蔬菜的库存为ci 个单位。然而,蔬菜的保鲜时间非常有限,一旦变质就不能进行销售,不过聪明的小 N 已
2022-04-10 06:34:57 389
原创 王国比赛(NOI Online 2022 普及组)
这题没什么好说的了,建立一个Ans数组,+1和-1分别记录答对和打错,很明显最终的Ans[i]如果大于0,则这道题对了;否则这道题为负,不用考虑相等的情况。最后和预测一起比对即可。
2022-04-07 14:03:23 1009
原创 数字游戏(NOI Online 2022 普及组)
仔细观察可以发现,如果我们求出了d,就可以把d代入题目中的式子,从而求出y,问题解决,现在问题转化为求d了。充分利用a,b互质的性质,可以发现,如果对于两个数,它们都分别含有a,b因子,且其余因子相同,它们的最大公约数一定是相同的这些因子的积,即...
2022-04-07 13:15:50 3651
原创 P7074 [CSP-J2020] 方格取数
设有 n×m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。
2022-03-12 14:59:10 1133 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 562
原创 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 379
原创 前缀和(一维,二维)的讲解与应用
类比一维数组前缀和相减的思路,我们也尝试用我们预处理出来的二维数组前缀和来解决这个问题。其实很简单,我们只需把上述公式中的1替换一下就行:那也就是(x1,y2)围成的矩形和(x2,y1)围成的矩形减去(x1,y1),那不就是下图中的黄色区域吗,让(x2,y2)减去(x1,y1)不就是蓝色区域吗,求和完毕
2022-02-26 13:47:44 401
原创 任务管理器鲜为人知的技巧
当然如果你把鼠标先聚焦到Edge 浏览器上,你再按一下【Shift + Esc 】(不用按Ctrl),你会发现微软还为Edge专门设计了一个任务管理器,把浏览器内的每一个网站的占用摆得一清二楚,非常简洁!
2022-02-12 22:37:43 238 1
原创 有关控制台窗口的一个误解
它的功能是记录当前程序主进程的键盘输入,但如果你运行的是控制台(不是窗口),你向黑框里输入东西,但没有任何回应。很明显了,黑框仅仅是一个交互,并不是窗口主进程。
2022-02-12 22:09:05 2365
原创 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 6577 1
原创 求回文串(洛谷P5041 HAOI2009) 题解
先上题目:题目描述所谓回文串,就是对于给定的字符串,正着读和反着读都一样,比如ABCBA就是一个回文串,ABCAB则不是。我们的目标是对于任意输入的字符串,不断将第i个字符和第i+1个字符交换,使得该串最终变为回文串。求最少交换次数。输入格式一个由大写字母字母组成的字符串。输出格式若能经过有限次操作能将原串变为回文串,则输出最少操作次数;否则输出-1。输入输出样例输入 #1复制SHLLZSHZS输出 #1复制4说明/提示样例说明交换 L 和 Z 变
2022-02-08 15:21:50 1154
原创 回文(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 8554 1
原创 C++经典的对拍程序与方法
对拍是自我检验程序可行性一个常用途径,掌握对拍方法是每一个竞赛生的最基本的要求。我重点在Windows系统中介绍方法。
2022-02-06 10:41:34 2252 2
原创 C++区间质数筛选(2种方法)
发现我们对于同一个数的计算方式不同。那么怎样才能确定一个唯一的计算方式呢?关键是找质因子,因为每一个大于1的正整数都能分解为若干个质数的乘积
2022-02-05 07:00:05 3257 1
原创 C++高效的质数的判断(2种方法)
前提准备在开始质数的讨论之前,我们先预备一下:质数的定义:若一个正整数除了1和它自身之外不能被任何自然数整除,则该数称为质数,也叫素数。否则为合数。由定义可知,所有小于等于1的数既不是质数,也不是合数。质数的分布较为稀疏,对于一个足够大的数S,不超过S的质数大约有个,也就是说每InN个数约有一个质数,这点读者了解即可。
2022-02-04 22:31:26 30243 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
原创 C++数组的高级使用用法(下标可以为负数?)
如果说定义一个变量代表向内存中申请一块地址来保存这种类型的值,那么定义一个该变量类型的数组就是在内存中申请连续的多块地址来保存这种类型的值(连续:相当于把几个变量集合起来,相互挨着),所以说数组本质上可以算一个指针,指向一个整体。
2022-02-04 13:19:52 3355
原创 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 6989 1
原创 表达式(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 4840 1
原创 C++快速幂详解
快速幂相较于普通的幂,具有占用空间少,效率更高等优点,全面碾压普通的幂。在计算量较小时,二者相差无几,但数据规模一旦上来了,差距也就出来了。
2022-01-31 22:50:41 5254 3
原创 C++ 监视用户输入的数据(键盘钩子)代码及详解
#include<Windows.h>#include<cstdio>SYSTEMTIME systime;LRESULT CALLBACK Proc(int code,WPARAM w,LPARAM l){ KBDLLHOOKSTRUCT *T=(KBDLLHOOKSTRUCT*)l; DWORD x=T->vkCode; if(w==WM_KEYDOWN){ GetLocalTime(&systime); printf("Tip->...
2022-01-31 09:42:39 3003 1
原创 廊桥分配(CSP-S-2021-T1)通俗题解
目录题目描述输入输出样例题目描述当一架飞机抵达机场时,可以停靠在航站楼旁的廊桥,也可以停靠在位于机场边缘的远机位。乘客一般更期待停靠在廊桥,因为这样省去了坐摆渡车前往航站楼的周折。然而,因为廊桥的数量有限,所以这样的愿望不总是能实现。机场分为国内区和国际区,国内航班飞机只能停靠在国内区,国际航班飞机只能停靠在国际区。一部分廊桥属于国内区,其余的廊桥属于国际区。L 市新建了一座机场,一共有n个廊桥。该机场决定,廊桥的使用遵循“先到先得”的原则,即每架飞机抵达后,如果相应的区(国..
2022-01-29 15:17:57 7260 5
原创 Windows下system()函数详解
Start~~在C++/C的Windows环境中,对于控制台窗口的处理,有一个函数必须知道:system(" ");是的,没错。它可以调动Cmd控制台中的命令,来方便程序员的操作。原理:system()函数的原型为int system(const char * string);从定义中可知,放在引号里的东东应该是一个char类型的常量,而非变量。毕竟string的类型是const char*嘛!system()函数包含在头文件:<stdlib.h&g.
2022-01-26 22:03:34 1909 2
原创 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 2732
原创 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n−1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类 数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的...
2021-10-23 00:17:43 196
原创 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 301
原创 P7243 最大公约数 (BFS的应用)
题目背景 “寻求最大公约数是人民民主的真谛。……” 初秋,从枝丫滴下的阳光,柔和,在教室的窗棱溅起,润湿晨读的少女的脸颊。 “阿绫,阿绫”,天依低俯身子,八字辫耷拉在竖起的课本沿,“我们的最大公约数是多少呢?” “一定不小吧”,左手悄悄捏捏天依的小臂,“比如呀,有一个公因子,叫做‘你喜欢我,我也喜欢你’。”题目描述相反,人际圈形形色色,公约数小得可怜,似乎很难保持自己的个性因而变成无趣的人呢。现在把人际抽象成一个 n×m的矩形,每个人初始的个性为a_{i,j。从...
2021-10-21 11:52:15 306
原创 P7113 [NOIP2020] 排水系统 (DFS)(90Point简易算法)
题目描述对于一个城市来说,排水系统是极其重要的一个部分。有一天,小 C 拿到了某座城市排水系统的设计图。排水系统由nn个排水结点(它们从1 \sim n1∼n编号)和若干个单向排水管道构成。每一个排水结点有若干个管道用于汇集其他排水结点的污水(简称为该结点的汇集管道),也有若干个管道向其他的排水结点排出污水(简称为该结点的排出管道)。排水系统的结点中有mm个污水接收口,它们的编号分别为1, 2, \ldots , m1,2,…,m,污水只能从这些接收口流入排水系统,并且这些结点没有...
2021-10-20 10:04:49 855
原创 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 522
原创 T196684 昕昕的不等式组(洛谷EVOI CSP信心赛)
题目描述昕昕上七年级了,她做到了一道解一元一次不等式组的数学题。这个一元一次不等式组共有nn个一元一次不等式。她分别求出了每个不等式的解集,而她需要把它们合并为该不等式组的解集。每个不等式解集都化简为了最简形式,都形如x<t_ix<ti(或x>t_ix>ti等),其中t_iti为常数项,xx为未知数。未知数为一个小写英文字母,会在不等号左侧;常数项为一个整数,会在不等号右侧。所有不等式使用的不等号只有<,>,\le,\ge<,...
2021-10-18 19:04:22 220
原创 中国剩余定理的详解与应用
引子:在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”题意为:求一个数x,使x除以3余2,除以5余3,除以7余2.这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:...
2021-10-18 15:08:08 2240
原创 1182:合影效果(一本通题解)(快排)
1182:合影效果时间限制: 1000 ms 内存限制: 65536 KB提交数: 14603 通过数: 8384【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。后...
2021-10-18 10:15:34 1034
飞机大战(Python小游戏)
2022-02-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人