自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

熬夜的Alan Walker

这个人准备获得了诺贝尔奖了,因为他发现了番茄是西红柿味的

  • 博客(92)
  • 资源 (2)
  • 收藏
  • 关注

原创 一本通提高篇之数位DP

(j+a)2=j2+2ja+a2(j+a)2=j2+2ja+a2,共有c个,所以需要加上c∗j2+2js+vc∗j2+2js+v。如果记忆化不含p,那么多组数据不需要每次memset数组,因为后面都可以随便填,不同组数据方案数是一样的。其中,p=0可以不记忆化,因为此时只有一种情况,就是每一位都跟n的对应位相等,不记忆化也不超时。记忆化f[k][x][p]表示填到第k为,上一位是x,当前是否可以随便填,后面的方案数。高1位平方和位V,数量为C,数字之和为S。低位平方和为v,数量为c,数字之和为s。

2022-09-04 18:08:26 335 1

原创 C++ 广搜

电梯只有四个按钮:开,关,上,下,而且第i层楼(1

2022-09-04 18:02:06 840

原创 51Nod 后面第一个大于

小b有一个长度为n的序列t,现在她对于每个i,求最小的正数j满足i+j<=ni+j<=n且ti+j>titi+j>ti,输出j,如果不存在这样的j,则输出0。样例解释:对于i=1,t2>t1t2>t1,所以最小的j=1;对于i=7,不存在这样的j,所以输出0。输入格式第一行输入一个数n;(1≤n≤30000) 第二行输入n个数ti;(30≤ti≤100)输出格式输出一行n个数,第i个数表示i的答案。输入样例873 74 75 71

2022-05-03 21:18:27 346

原创 51Nod 2485 小b重排字符串

小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同。请你判断小b是否可能成功。样例解释:将"aab"重排为"aba"即可。输入输入一个只包含小写字母的字符串S,其长度n满足1<=n<=500输出如果可能,输出"Possible";否则,输出"Impossible"。输入样例aab输出样例Possible通过推理发现。当字符串 SS 中某一种字符出现次数大于字符串长度的一半时(奇数上取整),相邻字母相同的情况是一定会出现的。

2022-03-03 21:15:52 275

原创 问题 E: 入门赛D卡牌游戏 IV(初中生请多多指教)

题目描述蒜头君在玩一种卡牌游戏,他有nn张卡牌,每张卡牌上写着两个正整数ai,biai,bi,aiai表示这张卡牌的能量值,bibi表示这张卡牌的魔法值。他准备一张一张打出这nn张卡牌,每张卡牌会对敌人造成的伤害是这张卡牌的能量值乘魔法值。但是蒜头君觉得这样把这nn张卡牌都出完对敌人造成的伤害之和还是不够大,所以他偷偷学会了一种仙术。蒜头君施展一次仙术的时候会任意选择两张卡牌,把它们的魔法值交换,能量值不交换。蒜头君可以使用任意次仙术,当然也可以一次都不使用,他想知道...

2022-02-11 13:59:27 679 2

原创 51Nod 数字游戏

题目描述有这么一个游戏: 写出一个1~N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置。下面是一个例子:3 1 2 4 4 3 6 7 9 16最后得到16这样一个数字。 现在想要倒着玩这样一个游戏,如果知道N,知道最后得到的数字的大小sum,请你求出最初序列a[i],为1~N的一个排列。若答案有多种可能,则输出字典序最小的那一个。输入输入文件bd

2022-02-11 13:58:53 335

原创 51Nod 1006 最长公共子序列Lcs

给出两个字符串A B,求A与B的最长公共子序列(A,B的长度 <= 1000,子序列不要求是连续的)。比如两个串为:A:abcicba B:abdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。。输入第1行:字符串A第2行:字符串B输出输出最长的子序列,如果有多个,随意输出1个。输入样例abcicbaabdkscab输出样例abca参考程序#include<iostream

2022-02-11 13:58:23 163

原创 51Nod ProjectEuler 48

考虑求和11+22+33+⋯+1010=1040507131711+22+33+⋯+1010=10405071317输入n,求11+22+33+⋯+nn11+22+33+⋯+nn对 10101010 取模的结果。输入输入第一行组数T,接下来T行,每行一个整数n。(1 <= T <= 1000)(1 <= N <= 1000)输出对于每组数据,输出一个数,表示求和对10000000000取模的结果。输入样例411010..

2022-02-11 13:57:33 967

原创 51Nod PL2 阶段测试 数列计算

有一列数是:4/7,7/11,11/18,18/29,29/47,47/76……请找出这个数列的规律,编写程序计算并输出这个数列的第 N 项(要求是分数形式),并计算这个数列的前 N 项和(结果四舍五入保留两位小数)。输入输入有一行,为一个正整数 N(3≤N≤30)。输出输出共有两行第一行如样例中的一个特定格式的分数表示这个数列的第 N 项。第二行仅包含一个数表示这个数列的前 N 项的和。输入样例6输出样例47/763.68参考程序#include&.

2022-02-11 13:48:37 186

原创 51Nod 3209 康托展开

给出一个排列(可能有重复数字),我们枚举由同样元素组成的所有不同排列,并将这些排列按照字典序从小到大排序,问当前排列排在第几位。输入格式第一行输入一个数t,表示测试数据的数量(1≤t≤100000) 之后对于每组数据, 第一行输入一个数n,表示排列中元素个数 (1≤n≤12) 第二行输入n个数ai,表示当前的排列(1≤ai≤12)输出格式输出共 t 行,对应排列排序的位置。输入样例331 2 332 1 232 1 3输出样例123数据范围

2022-02-11 13:41:52 625

原创 51Nod 2188 ProjectEuler 24

考虑0, 1, 2,共3个数字的所有排列,按字典序排列为012 021 102 120 201 210输入n,考虑0, 1, 2, 3, 4, 5, 6, 7, 8 和 9 共10个数字的所有排列,按字典序排,第n个是什么?输入格式第一行输入组数T, 接下来T行,每行一个整数n。 (1 <= T <= 20,0 <= n <= 1000000)输出格式对于每组数据,输出一个排列,10个数字,中间不加空格。输入样例1012624120

2022-02-11 13:12:32 320

原创 51Nod 1118机器人走方格

M * N的方格,一个机器人要从左上格子的正中央走到右下格子的正中央。它每步可以从一个格子正中央移动到相邻格子正中央,且只能向右或向下走。请问有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。输入格式第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)输出格式输出走法的数量。输入样例2 3输出样例3机器人从 (1,1)(1,1) ​​​ 移动到 (m,n)(m,n) ​​​。考虑我们处于位

2022-02-11 11:54:05 535

原创 51Nod 2020排序相减

“排序相减”操作是指对于任意一个四位数n,将四个数字分别进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n1,然后继续将n1中的四个数字进行顺序排序和逆序排序,得到两个数取相减后结果的绝对值n2,以此类推,最后总会得到一个数字黑洞,无法跳出。例如:样例2中4176 = 6532 - 2356输入格式第一行输入一个整数T,表示数据组数(1<T<10000); 第二行输入一个正整数n(1000<=n<=9999)和一个正整数k(1<=k<=100),表示操

2022-02-11 11:43:21 416

原创 51Nod 3016 Prime Path

阿P给阿K出了一个难题,他给阿K两个素数A,B,保证A,B的位数相同且为4位或5位。阿K只能对A作一种操作,即将其中一位数字改成另一个数字,要求每次操作后得到的数还是一个素数,问最少多少次可以从A变到B输入第一行一个整数n,代表有n组数据对于每组数据,输入一行两个四位或五位素数A,B输出对于每组数据输出一行,表示最少的操作次数无解输出No solution数据范围对于50%的数据:A,B为四位素数对于100%的数据: A,B的位数不超过五位,n<=20

2022-02-11 11:27:45 199

原创 NOIP2010:引水入城

题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个NN 行\times M×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设施有两种,分别为蓄水厂和输水站。蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中。因此,只有与湖泊毗邻的第11 行的城市可以建造蓄水厂。而输水站的功能则是通过输水管线利用高度落差,将湖水从高处向

2022-02-10 16:19:28 330

原创 SSOJ 01字串

题目描述小明对0和1两个数字情有独钟,希望世界的信息都是由这两个数字组成(很难想象小明为什么有这种想法吧)。由于小明对0和1组成的字串有深厚的研究,他研究出一种由0和1组成字串的方法,如果任意只包含0的子串,长度不超过max0,任意只包含1的子串,长度不超过max1,且整个串最多有count0个0,count1个1。那么这个就是漂亮的数字串。但是小明遇到问题,就是在给定了count0,count1,max0,max1的前提下,这个漂亮的数字串最长能有多长呢?这时,他找到了你(程序员),希望你

2022-02-10 15:29:18 5638

原创 SSOJ 监狱

题目描述Tangwan王国中有一个奇怪的监狱,这个监狱里一共有P间牢房,这些牢房一字排开,从左到右按1到P进行编号,第i间后面紧挨着第(i+1)间(最后一间除外)。现在有P名罪犯被关押在这P间牢房里。某一天,上级下发了一个释放名单,要求每天释放名单上的一个人。这可把监狱中的看守们吓得不轻,因为看守们知道,现在牢房中的P个人,可以相互之间传话。如果某个人离开了,那么原来和这个人能够传上话的人都会很气愤,导致他们那天会一直大吼大叫,搞得看守们很是头疼,但是如果给这些要发火的人吃上肉,他们就会安静。

2022-02-10 12:19:48 218

原创 NOIP2008:传纸条

题目描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同.

2022-02-09 21:16:20 89

原创 ssoj 免费馅饼

题目描述都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:为了使问题

2022-02-09 21:05:32 101

原创 [NOIP2011 提高组] 铺地毯

题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有nn张地毯,编号从11到nn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入格式输入共n + 2n+2行。第一行,一个整数nn,表示总共有nn张地毯。接下来的nn...

2022-02-09 19:19:27 220

原创 [NOIP2002 普及组] 过河卒

题目描述棋盘上 AA 点有一个过河卒,需要走到目标 BB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,AA 点 (0, 0)(0,0)、BB 点 (n, m)(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从AA点能够到达BB点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别表示B...

2022-02-09 19:15:05 3295

原创 ssoj数字游戏

题目描述有这么一个游戏: 写出一个1~N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置。下面是一个例子: 3 1 2 4 4 3 6 7 9 16最后得到16这样一个数字。 现在想要倒着玩这样一个游戏,如果知道N,知道最后得到的数字的大小sum,请你求出最初序列a[i],为1~N的一个排列。若答案有多种可能,则输出字典...

2022-02-09 16:49:55 3191

原创 ssoj 象棋比赛

题目描述有N个人要参加国际象棋比赛,该比赛要进行K场对弈。每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。每人最多只能用一次黑色的棋子和一次白色的棋子。为了增加比赛的客观度,观众希望K场对弈中双方的等级差的总和最小。比如有7个选手,他们的等级分别是30;17;26;41;19;38;18.,要进行3场比赛。最好的安排是Player2vsPlayer...

2022-02-09 16:32:49 6381

原创 51Nod 3203 三角形的数量

三角形的 22 条边上分别有 mm 和 nn 个点(不包括三角形的顶点),这些点分别同这两条边相对的顶点有连线,这样组成了一个复杂的图形,问这个图形中包含了多少个不同的三角形。由于数量很大,输出结果 mod 1000000007mod 1000000007。输入第1行:2个数,m,n 中间用空格分隔。(1<= m,n <= 1e9)输出输出对应的三角形的数量。输入样例2 1输出样例15参考题解#include <bits/.

2022-02-09 12:18:41 645

原创 c++卡常技巧-164

常卡,乃诺骗分最重要的秘诀,这里总结了常卡常(来自一些大牛的博客)持续更新中目录正文一、位置1.如果上一个2的倍数,可以改用左移(Left Shift)加速300%x = x * 2;x = x * 64;改为:x = x << 1; x = x << 6; 2. 如果除上一个 2 倍数的成绩,可以改用右移加速运动 350%x = x / 2;x = x / 64;改为:x = x >> 1; x = .

2022-02-08 17:02:34 1410 2

原创 51Nod ProjectEuler 16

=32768,他的各位和是3+2+7+6+8=263+2+7+6+8=26。输入nn,求2n2n的各位和。输入格式第一行输入组数T, 接下来T行,每行一个整数n。 (1 <= T <= 1000,1 <= N <= 1000)输出格式对于每组数据,输出一个数,表示2的n次方的各位和。输入样例43471000输出样例87111366利用高精大数,预先计算所有≤21000≤21000的22的幂的数位和...

2022-02-08 16:22:55 413

原创 51Nod 上台阶

现在小瓜想走上一个一共有n级的台阶,由于小瓜的腿比较短,他一次只能向上走1级或者2级台阶。小瓜想知道他有多少种方法走上这n级台阶,你能帮帮他吗?输入格式一行一个整数n(n<=100000),表示一共有n级台阶。输出格式一行一个整数,表示小瓜上台阶的方案数*对100003取余*的结果。输入样例3输出样例3只考虑最后一步走 11 阶还是 22 阶,这是两种完全不同的方案。所有 n−1n−1 的方案都可以通过再走 11 阶转为 nn 的方案,所有 n−2n−2

2022-02-08 15:50:04 582

原创 51Nod 骨牌覆盖

在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。问有多少种不同的排列方法。例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果)输入格式输入N(N <= 1000)输出格式输出数量 Mod 10^9 + 7输入样例3输出样例3本题的难点在于推导方法:2×n2×n 的方案可以从 2×(n−1)2×(n−1) 以及 2×(n−2)2×(n−2) 的方案构造而来,在 2×(n−2

2022-02-08 15:45:43 335

原创 一本通提高篇之数位DP

暴力做法暴力枚举每个数字是否符合要求,时间复杂度O(n),超时。爆搜做法逐位填数字0~9,遇到不合法就剪枝,记忆化绝不超时。记忆化f[k][x][p]表示填到第k为,上一位是x,当前是否可以随便填,后面的方案数。其中,p=0可以不记忆化,因为此时只有一种情况,就是每一位都跟n的对应位相等,不记忆化也不超时。如果记忆化含有p,那么每次都需要memset数组,多组数据效率会降低。如果记忆化不含p,那么多组数据不需要每次memset数组,因为后面都可以随便填,不同组数据方案数.

2022-02-07 21:34:39 203

原创 一本通提高篇之树链剖分

2022-02-07 21:33:19 163

原创 51Nod B 回文倍数

给出 n 进行多组询问,每次询问给出一个 kiki ,求小于等于 n 的回文数中,最小的一个是 KiKi 的倍数的数,如果不存在则输出 none。输入第1行:2个数n, q(10 <= n <= 500000, 1 <= q <= 1000)。第2-q+1行:每行1个数 ki (2 <= ki <= 10000)输出输出共q行,对应每个询问的答案。输入样例200 4791910输出样例79171none

2022-02-07 21:03:05 525

原创 51Nod 锯木棍

有一根粗细均匀长度为 LL 的木棍,先用红颜色刻度线将它 m 等分,再用蓝色刻度线将其 n 等分(m>n),然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长度和棍数。例如:木棍长12,按照6,4划分。最长的木棍长度为2。共有4根。输入输入仅有一行,包含三个正整数 L,m 和 n,两两之间用一个空格分隔。(1≤L≤100000)输出输出包含两个正整数 a 和 k,分别表示最长木棍的长度和根数。(为了简化题目的难度,所有的测试数据中 m 和 n 一定是 L 的约

2022-02-07 20:49:48 234

原创 3109 看电影

这个世界上有很多叫小明的人,他们在不同的国家,不同国家有不同的语言,每一种语言有一个语言编号。我们给出所有语言的编号,需要注意的是:每个国家的人除了可以懂自己国家的语言,也能懂编号相邻国家的语言,例如:语言编号为:1,7,10,51,7,10,5,其中:母语编号为11,懂编号为1,51,5的语言母语编号为55,懂编号为1,5,71,5,7的语言母语编号为77,懂编号为5,7,105,7,10的语言母语编号为1010,懂编号为7,107,10的语言这个相邻编号指的并不...

2022-02-07 20:14:09 651

原创 动态规划之背包问题

无限背包一个在旅途中的长者有一个最多能装M公斤的背包;现在有n种物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn;输入n、m以及各种物品的重量和价值,求旅行者能获得最大总价值。输入:3 165 44 36 6输出:12代码与01背包几乎一样,只是枚举的顺序不同而已。01背包枚举容量时,从大到小,避免一个物品被选择多次;无限背包枚举容量时,从小到大,允许一件物品没做选择多次。#include <stdio.h

2022-01-24 22:06:19 705

原创 一本通提高篇之状态压缩动态规划

2022-01-24 21:57:36 224

原创 NOIP2016:换教室

题目描述对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况申请合适的课程。在可以选择的课程中,有2n节课程安排在n个时间段上。在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室 di进行。在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程。如果学生想更换第i节课程的教室,则需要提出申请。若申请通过,学生就可以在第 i个时间段去教室 di上课, 否则仍然在教室

2022-01-14 21:50:32 265

原创 广搜知识总结

奇怪的电梯电梯只有四个按钮:开,关,上,下,而且第i层楼(1<=i<=N)上有一个数字KiKi(0<=KiKi<=N),上下的层数等于该数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了KiKi(K1K1=3,K2K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢?输入样例N=5 A=1 B=53 3 1 2 5普通查找与递推第一步:递推赋..

2021-12-18 14:31:01 112

原创 高精度知识总结

概念高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿、几千几万位的大数字。这类数字我们无法用基本类型进行存储,这就是高精度。高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又...

2021-12-18 14:26:27 1624

原创 C++顺序结构

顺序结构程序中的语句从上到下依次执行,每条语句都执行1次。一般流程例:求梯形面积输入梯形的上底、下底、高分别是a、b、h,请设计一个算法求他的面积(结果保留2位小数)。? 1 2 3 4 5 6 7 8 9 10 #include <bits/stdc++.h> using namespace std; int main(){ ...

2021-11-14 21:38:21 840 1

原创 51Nod大数加法

给出2个大整数A,B,计算A+B的结果。输入格式第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数)输出格式输出A + B输入样例68932147586468711654886输出样例537643802472参考程序#include <bits/stdc++.h>using namespace std;char ch[10010];int a[10010], b[10010]...

2021-11-14 18:15:13 768

动态规划(3) PPT可以参考

动态规划(3) PPT可以参考

2022-02-08

贪心算法.ppt2021年10月4日

贪心算法PPT

2021-10-04

空空如也

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

TA关注的人

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