自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 李超线段树

李超线段树:标记永久化、维护直线、例题

2023-04-18 15:27:39 416 1

原创 莫比乌斯反演 习题

莫比乌斯反演习题讲解及代码

2023-04-03 15:42:51 459

原创 莫比乌斯反演

莫比乌斯函数定义、性质;整除分块;狄利克雷卷积定义、性质;莫比乌斯反演结论

2023-03-30 21:34:52 542

原创 树形DP/换根DP 习题

树形DP,树形背包,换根DP的习题讲解

2023-03-23 09:31:41 314

原创 【南外夏令营】线性同余方程

线性同余方程的定义与求解,中国剩余定理及其证明

2022-08-29 16:53:30 135

翻译 【强基】SOS DP(子集 DP)

1、例题引入:给定一个含 2^N个整数的集合 A,我们需要计算:∀x⊆A,x 中所有元素 i 的 A[i] 的和,即求:F[mask]= i⊆mask∑A[i]

2022-08-23 18:46:11 612

原创 【强基】欧拉函数与积性函数

欧拉函数与积性函数的定义、性质,相关题目讲解

2022-07-23 10:41:13 635

原创 【南外夏令营】扩展欧几里得算法与乘法逆元

贝祖定理、扩展欧几里得算法求ax+by=c的解、求乘法逆元

2022-07-11 15:12:49 135

原创 【强基】容斥原理

模板题:区间整除数题意:给出一个数组a[1…n],问在区间[L,R]中有多少个数,至少能被a中的一个数整除。解题思路总体来说,我们可先求出区间[1,L][1,L][1,L]中能被a数组整除的数,再求出[1,R][1,R][1,R]中能被a数组整除的数那么对于区间[1,L][1,L][1,L],我们可先求出区间中能被a数组中一个数整除的数,那么总量就等于∑i=1nLai\sum\limits_{i=1}^n\frac{L}{a_i}i=1∑n​ai​L​但...

2022-03-26 17:31:36 975

原创 【强基】CDQ分治

Part1:前置知识归并排序,逆序对,二维偏序,树状数组Part 2:CDQ分治【模板题】三维偏序(题目传送门)题目大意有 nnn 个元素,第 iii 个元素有 aia_iai​,bib_ibi​,cic_ici​ 三个属性,设 f(i)f(i)f(i) 表示满足 aj≤aia_j \leq a_iaj​≤ai​ 且 bj≤bib_j \leq b_ibj​≤bi​ 且 cj≤cic_j \leq c_icj​≤ci​ 且 j≠ij \ne ij​=i 的 jjj 数量。对于 d∈[0,n

2022-03-19 14:28:54 178

原创 贪心算法总结

一、基本思想–>归纳、分析、选择正确合适的贪心策略在每一个局部阶段,都做一个在当前“看上去”最优的决策,并期望通过每一次所做的局部最优选择产生出一个全局最优解。做出贪心决策的依据称为“贪心策略”。贪心策略一旦做出,就不可再更改。二、3种证明方法(反证法,构造法,调整法)1、反证法用贪心的策略,依次构造出一个解 S1,假设最优解 S2 不同于S1,可以证明是矛盾的,从而得出 S1 就是最优解。(举出反例)eg:n个字符串凑成最大整数->将 A+B 与 B+A 相比较,如果前者大于后

2021-06-12 23:22:25 1391 4

原创 【游记】 GDOI2021普及组

前言众所周知,2021年是GDOI第一年有普及组,**所以本蒟蒻才敢报**

2021-06-12 17:28:04 932

原创 信息学奥赛一本通c++语言——1149:最长单词2

【题目描述】一个以‘.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式。【输入】一个以‘.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。【输出】该句子中最长的单词。如果多于一个,则输出第一个。【输入样例】I am a student of Peking University.【输出样例】University代码如下#include<bits/stdc++.h>using namespace std;int

2020-05-24 19:16:37 2641

原创 信息学奥赛一本通c++语言——1147:最高分数的学生姓名

【题目描述】输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。【输入】第一行输入一个正整数N(N ≤ 100),表示学生人数。接着输入N行,每行格式如下: 分数 姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。数据保证最高分只有一位同学。【输出】获得最高分数同学的姓名。【输入样例】587 lilei99 hanmeimei97 lily96 lucy77 jim【输出样例】hanmeimei

2020-05-24 19:13:47 2254 3

原创 信息学奥赛一本通c++语言——1146:判断字符串是否为回文

【题目描述】输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。【输入】输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。【输出】如果字符串是回文,输出yes;否则,输出no。【输入样例】abcdedcba【输出样例】yes代码如下#include<bits/stdc++.h>using namespace std;int main(){ char a[5000]; scanf("%s",a); int n=strlen(a)

2020-05-24 19:09:11 1297

原创 信息学奥赛一本通——1145:字符串p型编码

【题目描述】给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;类似的道理,编码串101可以用来描述1111111111;00000000000可描述为"11个0",因此它的p型编码串即为110;100200300可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串为112012

2020-05-15 16:19:53 1069

原创 信息学奥赛一本通c++语言——1144:单词翻转

【题目描述】输入一个句子(一行),将句子中的每一个单词翻转后输出。【输入】只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。【输出】翻转每一个单词后的字符串,单词之间的空格需与原文一致。【输入样例】hello world【输出样例】olleh dlrow代码如下#include<bits/stdc++.h>using namespace std;int main(){ char a[500]; gets(a); //输入字符串 int t=0,su

2020-05-14 14:48:16 2776 3

原创 信息学奥赛一本通c++语言——1143:最长最短单词

【题目描述】输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。【输入】一行句子。【输出】第1行,第一个最长的单词。第2行,第一个最短的单词。【输入样例】I am studying Programming language C in Peking University【输出样例】ProgrammingI【提示】提示:如果所有单词长度相同,那么第一个

2020-05-13 15:46:17 7790 4

原创 信息学奥赛一本通c++语言——1142:单词的长度

【题目描述】输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。注意:如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。【输入】一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。【输出】依次输出对应单词的长度,之间以逗号间隔。【输入样例】She was born in 1990-01-02 and from Beijing city.【输出样例】3,

2020-05-13 10:50:23 3193

原创 信息学奥赛一本通——1141:删除单词后缀

【题目描述】给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。【输入】输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。【输出】输出按照题目要求处理后的单词。【输入样例】referer【输出样例】refer#include<bits/stdc++.h>using namespace std;int main(){ char a[32]; scanf("%s",a);

2020-05-13 09:33:20 879

原创 信息学奥赛一本通c++语言——1140:验证子串

【题目描述】输入两个字符串,验证其中一个串是否为另一个串的子串。【输入】输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。【输出】若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)否则,输出 No substring。【输入样例】abcdddncabca【输出样例】abc is substring of dddncabca#incl

2020-05-12 13:31:10 1794

原创 信息学奥赛一本通c++语言——1139:整理药名

【题目描述】医生在书写药品名的时候经常不注意大小写,格式比较混乱。现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写。如将ASPIRIN、aspirin整理成Aspirin。【输入】第一行一个数字n,表示有n个药品名要整理,n不超过100。接下来n行,每行一个单词,长度不超过20,表示医生手书的药品名。药品名由字母、数字和-组成...

2020-05-08 11:25:20 1813

原创 信息学奥赛一本通c++语言——1138:将字符串中的小写字母转换成大写字母

【题目描述】给定一个字符串,将其中所有的小写字母转换成大写字母。【输入】输入一行,包含一个字符串(长度不超过100,可能包含空格)。【输出】输出转换后的字符串。【输入样例】helloworld123Ha【输出样例】HELLOWORLD123HA代码如下#include<bits/stdc++.h>using namespace std;int main(){...

2020-05-08 10:10:43 1701

原创 信息学奥赛一本通c++语言——1137:加密的病历单

【题目描述】小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz...

2020-05-07 10:15:35 1068

原创 信息学奥赛一本通c++语言——1136:密码翻译

【题目描述】在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。【输入】输入一行,包含一个字符串,长度小于80个字符。【输出】输出...

2020-05-05 11:59:50 3336

原创 信息学奥赛一本通——1135:配对碱基链

【题目描述】脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶©。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。【输入】一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、...

2020-05-05 11:40:34 1659

原创 信息学奥赛一本通——1134:合法C标识符查

【题目描述】给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。C语言标识符要求:1.非保留字;2.只包含字母、数字及下划线(“_”)。3.不以数字开头。【输入】一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。【输出】一行,如果它是C语言的合法标识符,则输出yes,否则输出no。【输入样例】RKP...

2020-05-04 20:50:13 1085 1

原创 信息学奥赛一本通——1133:输出亲朋字符串

【题目描述】编写程序,求给定字符串s的亲朋字符串s1。亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。【...

2020-05-04 20:34:15 2668

原创 信息学奥赛一本通c++语言——1132:石头剪子布

【题目描述】石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。游戏规则:石头打剪刀,布包石头,剪刀剪布。现在,需要你写一个程序来判断石头剪子布游...

2020-05-03 17:09:44 1689

原创 信息学奥赛一本通c++语言——1131:基因相关性

【题目描述】为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。现比对两条长度相同的DNA序列。定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。【输入】有三行,第一...

2020-05-03 16:47:17 1397

原创 信息学奥赛一本通——1130:找第一个只出现一次的字符

【题目描述】给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。【输入】一个字符串,长度小于100000。【输出】输出第一个仅出现一次的字符,若没有则输出no。【输入样例】abcabd【输出样例】c代码如下#include<bits/stdc++.h>using namespace std;char a[100000];boo...

2020-04-30 11:31:37 3189 1

原创 信息学奥赛一本通c++语言——1129:统计数字字符个数

【题目描述】输入一行字符,统计出其中数字字符的个数。【输入】一行字符串,总长度不超过255。【输出】输出为1行,输出字符串里面数字字符的个数。【输入样例】Peking University is set up at 1898.【输出样例】4这道题难就难在怎么判断数字上但我们只要用到ASCII码就可以了在ASCII码中数字1~9分别对应48 ~57知道了这个我们就好办了...

2020-04-29 11:16:52 4225

原创 信息学奥赛一本通c++语言——1128:图像模糊处理

【题目描述】给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:1.四周最外侧的像素点灰度值不变;2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。【输入】第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空...

2020-04-27 10:19:11 756

原创 信息学奥赛一本通c++语言——1127:图像旋转

【题目描述】输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。【输入】第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。【输出】m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。【输入样例】3 3...

2020-04-26 15:41:03 2333

原创 信息学奥赛一本通c++语言——1124:矩阵加法

【题目描述】输入两个n行m列的矩阵A和B,输出它们的和A+B。【输入】第一行包含两个整数n和m,表示矩阵的行数和列数(1≤n≤100,1≤m≤100)。接下来n行,每行m个整数,表示矩阵A的元素。接下来n行,每行m个整数,表示矩阵B的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。【输出】n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。...

2020-04-24 10:08:04 683

原创 信息学奥赛一本通c++语言1123:图像相似度

【题目描述】给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。【输入】第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1≤m≤100, 1≤n≤100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻...

2020-04-23 10:16:41 1553

原创 信息学奥赛一本通c++语言——1122:计算鞍点

【题目描述】给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。11 3 5 6 912 4 7 8 1010 5 6 9 118 6 4 7 215 10 11 20 25【输入】输入包含一个5行5列的矩阵。【输出】...

2020-04-22 19:35:13 3999

原创 信息学奥赛一本通c++语言——1121:计算矩阵边缘元素之和

【题目描述】输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。【输入】第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。【输出】输出对应矩阵的边缘元素和。【输入样例】3 33 4 13 7 12 ...

2020-04-22 10:17:21 1418

原创 信息学奥赛一本通c++语言——1120:同行列对角线的格

【题目描述】输入三个自然数N,i,j(1≤i≤n,1≤j≤n),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,当n=4,i=2,j=3时,输出的结果是:(2,1) (2,2) (2,3) (2,4) 同一行上格子的位置(1,3) (2,3) (...

2020-04-21 17:49:34 1786

原创 信息学奥赛一本通c++语言——1119:矩阵交换行

【题目描述】给定一个5×5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。【输入】输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。第6行包含两个整数m、n,以一个空格分开(1≤m,n≤5)。【输出】输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。【输入样例】1 2 2 1 25...

2020-04-21 11:18:54 2652

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除