51nod
题解
嘘......
这个作者很懒,什么都没留下…
展开
-
1009 数字1的数量(思维)
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。输入输入N(1 <= N <= 10^9)输出输出包含1的个数输入样例12输出样例5一个多位数21905:个位:它出现1的数为:1 ~ 21901,一共 2190 - 0 + 1 = 2191十位:它出现1的数为:1x ~ 2181x (x 从0到9)一共:(218 - 0 + 1)10 = 2190原创 2020-07-18 10:14:25 · 374 阅读 · 0 评论 -
1049 最大子段和(dp)
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。输入第1行:整数序列的长度N(2 <= N <= 50000)第2 - N + 1行:N个整数(-10^9 <= A[i] <= 10^9)输出输出最大子段和。输入样例6-211-413-5-2输出样例20第原创 2020-07-18 10:10:36 · 102 阅读 · 0 评论 -
2072 装箱问题(dp,背包)
有一个箱子容量为 V(正整数,0<=V<=20000),同时有 n 个物品(0<n<=30),每个物品有一个体积(正整数)。现在在 n 个物品中,任取若干个装入箱内,使得箱子的剩余空间为最小。输入输入:一个整数v,表示箱子容量一个整数n,表示有n个物品接下来 n 个整数,分别表示这 n 个物品的各自体积输出输出:一个整数,表示箱子最小的剩余空间输入样例2468312797输出样例0dp[j]:容量J的包所能容纳的最大值(最大体积)dp[j]=max(原创 2020-07-18 10:07:56 · 147 阅读 · 0 评论 -
1083 矩阵取数问题 2073 数塔问题(dp方向)
一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。例如:3 * 3的方格。1 3 32 1 32 2 1能够获得的最大价值为:11。输入第1行:N,N为矩阵的大小。(2 <= N <= 500)第2 - N + 1行:每行N个数,中间用空格隔开,对应格子中奖励的价值。(1 <= N[i] <= 10000)输出输出能够获得的最大价值。输入样例31 3 32 1 32 2 1输出样原创 2020-07-18 10:04:53 · 302 阅读 · 0 评论 -
1201 整数划分(dp)
将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。输入输入1个数N(1 <= N <= 50000)。输出输出划分的数量Mod 10^9 + 7。输入样例6输出样例4膜拜dp[i][j] 数i 可以有j个不同的数组合的方案数dp[i][j] = dp[i-j][j] + dp[i-j][j-1]将i 划分为 j个数,然后j个数都-1(由于题目原创 2020-07-18 10:01:14 · 252 阅读 · 0 评论 -
2496 是否包含排列(暴力)
小b有两个字符串 s1 和 s2,她想知道能否重排列s1,使得重排列后的串为s2的子串。样例解释:将acb重排列cba,为dzccbaio的子串。输入第一行输入一个小写字母组成的字符串s1;第二行输入一个小写字母组成的字符串s2;其中s1、s2长度≤10000.输出若能,输出“True”;否则,输出“False”。输入样例acbdzccbaio输出样例True#include<bits/stdc++.h>using namespace std;string a,b原创 2020-05-15 23:46:53 · 281 阅读 · 0 评论 -
2524 确定子序列(思维)
给你一个字符串s 和一个数 K ,现在如果小 b 任意选出 K 个字符删去,然后将得到的字符串给你,请问你是否一定能确定删去的所有字符在原串中的位置。若一定,输出 Certain ,否则输出 Uncertain 。1≤K≤|s|≤100 ,s 仅包含小写字母。样例说明:例如如果小 b 删去 s,e ,则她告诉你 “nuk” ,那么你可以确定删去的是原串的第 1 个字符和第 5 个字符。无论小 b 删去哪两个字符,你都一定可以确定其在原串的位置。输入第一行一个字符串表示 s 。第二行一个正整数表原创 2020-05-15 23:07:29 · 148 阅读 · 0 评论 -
2525 小b的字符串(模拟)
给定一个由 ABC 三种字符构成的字符串,问最少改动多少个位置的字符,使得最终的字符串满足任意两个相邻的字符都不同。字符串长度 ≤106输入一行一个字符串。输出一行一个整数表示答案。输入样例ABCBA输出样例0模拟,具体见代码#include<bits/stdc++.h>using namespace std;string s;int main(){ ios::sync_with_stdio(false); int sum=0; cin>>s;原创 2020-05-15 22:33:59 · 344 阅读 · 0 评论 -
2533 最优填充1(分类模拟)
字符串s只包含两种字符A,B,已知它某些位上的字符,你想要把它填充完整使得相邻字母相同的次数尽量少,问这个最少次数。输入第一行两个数n,m,表示字符串长度,已知位置数。第二行m个数pos[i];第三行一个长度为m的字符串val[i],表示s[pos[i]]=val[i]。保证pos[i]两两不同。n<=10^9,m<=50,1<=pos[i]<=n,val[i]=‘A’or’B’。输出一个数,表示最少次数。输入样例3 21 3AB输出样例1这题归在贪心里原创 2020-05-15 21:31:39 · 536 阅读 · 0 评论 -
2146 分割绳子(二分,精度)
现在有N(1 <= N <= 1000)条绳子,他们的长度分别为L1,L2,……,Ln(1 <= Li <= 10000),如果从他们中切割出K(1 <= K <= 1000)条长度相同的绳子,这K条绳子每条最长能多长?输入共有两行,第一行包含两个正整数N和K,用一个空格分割;第二行包含N个数,一次表示N条绳子的长度,两数间用一个空格分隔,每条绳子的长度的小数不超过两位。输出仅包含一个数,表示所得K条绳子的最大长度。答案四舍五入保留小数点后两位原题的样例似乎原创 2020-05-11 21:33:27 · 476 阅读 · 0 评论 -
2071 不相交子区间(贪心)
给定 x 轴上 N(0<N<100)条线段 [ai,bi] i=1,2,……N,端点坐标都是区间(-999,999)内的整数。请你编写一个程序,从给出的线段中去掉尽量少的线段,使得剩下的线段两两之间没有内部公共点。所谓的内部公共点是指一个点同时属于两条线段且至少在其中一条线段的内部(即除去端点的部分)。输入输入第一行是一个正整数 N,表示线段个数。接下来有 N 行,第 i 行有两个空格隔开的整数,表示第 i 条线段两个端点的坐标。输出输出一个数,表示最多剩下的线段数。输入样例3原创 2020-05-11 21:06:53 · 308 阅读 · 0 评论 -
1478 括号序列的最长合法子段(模拟栈)
这里有另一个关于处理合法的括号序列的问题。如果插入“+”和“1”到一个括号序列,我们能得到一个正确的数学表达式,我们就认为这个括号序列是合法的。例如,序列"(())()", “()“和”(()(()))“是合法的,但是”)(”, "(()“和”(()))("是不合法的。这里有一个只包含“(”和“)”的字符串,你需要去找到最长的合法括号子段,同时你要找到拥有最长长度的子段串的个数。输入第一行...原创 2019-12-05 21:43:52 · 110 阅读 · 0 评论 -
1418 放球游戏(模拟,贪心)
有N个球排成一排,每个球都是R、G、B三种颜色之一。现在想重新排列这一排球(新建一个排列,一开始是0个),你要重复以下过程N次:1)从原来的那排球中的最左侧取出一个球;2)将取出的球插入新的排列的任意位置,即可以放在最左或最右端,也可以插入那排球的任意两个相邻球之间;3)计算这轮得分,如果是第一个球那么得0分;如果放在两端(最左或最右端)得分为除了新放入的球外,剩余球的颜色种数;如果放在两个...原创 2019-12-04 19:58:43 · 198 阅读 · 0 评论 -
1562 玻璃切割(模拟,转换思维)
现在有一块玻璃,是长方形的(w 毫米× h 毫米),现在要对他进行切割。切割的方向有两种,横向和纵向。每一次切割之后就会有若干块玻璃被分成两块更小的玻璃。在切割之后玻璃不会被移动。现在想知道每次切割之后面积最大的一块玻璃是多少。样例解释:对于第四次切割,下面四块玻璃的面积是一样大的。都是2。输入单组测试数据。第一行有三个整数 w,h,n (2≤w,h≤200000, 1≤n≤200...原创 2019-12-03 22:01:36 · 419 阅读 · 0 评论 -
1402 最大值(更新思维,模拟)
一个N长的数组s,满足以下性质:1)每个元素都是非负的整数,且s[1]=0;2)任意两个相邻元素差值的绝对值不大于1,即| s[i]-s[i+1] |<=1;3)对于部分特殊点xi,要求s[xi]<=ti(这样的特殊点一共M个);问在以上约束下s[]中的最大值最大可能是多少?输入多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5每组测试数据有相同...原创 2019-12-02 16:46:40 · 144 阅读 · 0 评论 -
1548 欧姆诺姆和糖果(背包贪心)
一天,欧姆诺诺姆来到了朋友家里,他发现了许多糖果。有蓝色和红色两种。他知道每颗红色糖果重Wr克,每颗蓝色糖果重Wb克。吃一颗蓝色糖果会给他带来Hb的欢乐值,吃一颗红色糖果会给他带来Hr的欢乐值。欧姆诺姆最多只能吃C克的糖果,而且每一颗糖果不能只吃一半。现在他想通过吃蓝色和红色的糖果来获得最大的欢乐值。样例解释:每一种糖果吃两颗即可。输入单组测试数据。输入占一行有四个整数C,Hr,Hb,W...原创 2019-11-28 20:47:10 · 160 阅读 · 0 评论 -
1534 棋子游戏(博弈)
波雷卡普和瓦西里喜欢简单的逻辑游戏。今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子。他们轮流移动自己的棋子,波雷卡普先开始。每一步移动中,波雷卡普可以将他的棋子从(x,y) 移动到 (x-1,y) 或者 (x,y-1)。而瓦西里可以将他的棋子从(x,y) 移动到 (x-1,y),(x-1,y-1) 或者 (x,y-1)。当然他们可以选择不移动。还有一些其它的限制,他们...原创 2019-11-28 15:57:47 · 326 阅读 · 0 评论 -
51nod暴力专题题解(全)
暴力似乎总是和枚举联系在一起,但是该如何枚举呢?这是个问题1087 1 10 100 1000(累加求通式)1625 夹克爷发红包(dfs,贪心)1890 方块塔(贪心)原创 2019-11-27 22:13:05 · 207 阅读 · 0 评论 -
1281 山峰和旗子(二分)
用一个长度为N的整数数组A,描述山峰和山谷的高度。山峰需要满足如下条件, 0 < P < N - 1 且 A[P - 1] < A[P] > A[P + 1]。现在要在山峰上插上K个旗子,并且每个旗子之间的距离 >= K,问最多能插上多少个旗子(即求K的最大值)。两个山峰之间的距离为|P - Q|。以上图为例,高度为:1 5 3 4 3 4 1 2 3 4 6 ...原创 2019-11-27 19:42:59 · 163 阅读 · 0 评论 -
1128 正整数分组 V2(二分)
给出一个长度为N的正整数数组,不改变数组元素的顺序,将这N个数分为K组。各组中元素的和分别为S1,S2…Sk。如何分组,使得S1至Sk中的最大值最小?例如:1 2 3 4 5 6分为3组,{1 2 3} {4 5} {6},元素和为6, 9, 6,最大值为9。也可以分为{1 2 3 4} {5} {6}。元素和为:10 5 6,最大值为10。因此第一种方案更优。并且第一种方案的最大值是所有方案中...原创 2019-11-27 17:55:24 · 230 阅读 · 0 评论 -
1483 化学变换(模拟,暴力)
有n种不同的化学试剂。第i种有ai升。每次实验都要把所有的化学试剂混在一起,但是这些试剂的量一定要相等。所以现在的首要任务是把这些化学试剂的量弄成相等。有两种操作:把第i种的量翻倍,即第i种的量变成2ai。把第i种的量减半,除的时候向下取整,即把第i种的量变成 ⌊ ai/2 ⌋ 。现在所有的化学试剂的量已知,问最少要变换多少次,这些化学试剂的量才会相等。样例解释:把8变成4,把2变成4。...原创 2019-11-24 21:58:59 · 138 阅读 · 0 评论 -
1246 罐子和硬币(模拟思维)
有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,你可以把这k个硬币任意分配到罐子里。然后罐子被打乱顺序,你从外表无法区别罐子。最后罐子被编上号1-n。每次你可以询问某个罐子,如果该罐子里有硬币,则你可以得到1个(但你不知道该罐子中还有多少硬币),如果该罐子是空的,你得不到任何硬币,但会消耗1次询问的机会。你最终要得到至少c枚硬币(c <= k),问题是给定n,k,c,...原创 2019-11-24 17:42:14 · 201 阅读 · 0 评论 -
1247 可能的路径(gcd,模拟推导)
在一个无限大的二维网格上,你站在(a,b)点上,下一步你可以移动到(a + b, b), (a, a + b), (a - b, b), 或者 (a, a - b)这4个点。给出起点坐标(a,b),以及终点坐标(x,y),问你能否从起点移动到终点。如果可以,输出"Yes",否则输出"No"。例如:(1,1) 到 (2,3),(1,1) -> (2,1) -> (2,3)。输入第...原创 2019-11-24 16:58:35 · 212 阅读 · 0 评论 -
51nod尺取法专题题解(全)
1127 最短的包含字符串(尺取法)1420 数袋鼠好有趣(贪心)1495 中国好区间(尺取法)原创 2019-11-23 20:17:35 · 113 阅读 · 0 评论 -
1495 中国好区间(尺取法)
阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T。那么问题来了,阿尔法想知道有多少好的区间。由于阿尔法的序列长度实在是太大了,无法在规定时间内读入。他想了一个绝妙的方法。读入a[0],b,c,p,则a[i]=(a[i-1]*b+c)mod p。样例解释:a1~a5分别为47,135,247,35,...原创 2019-11-23 20:15:01 · 128 阅读 · 0 评论 -
1420 数袋鼠好有趣(贪心)
有n只袋鼠。每只袋鼠的大小用一个整数表示。一只小袋鼠能装进一只大袋鼠的条件是,大袋鼠的大小至少是小袋鼠的两倍。每只大袋鼠最多可以装一只袋鼠。小袋鼠被装进大袋鼠之后就不能再装其它的袋鼠了。小袋鼠被装进大袋鼠之后就不能被我们看见了。请找出一个装袋鼠的方案,使得被看见的袋鼠最少。(袋鼠不能3只套在一起)输入单组测试数据。第一行包含一个整数n(1≤n≤5*10^5)。接下来n行,每行一个整数si...原创 2019-11-23 17:56:58 · 218 阅读 · 0 评论 -
51nod贪心专题题解(补充)
1091 线段的重叠(贪心)1099 任务执行顺序(贪心,思维)1117 聪明的木匠(优先队列,贪心)1125 交换机器的最小代价(贪心,环)1133 不重叠的线段(贪心)1163 最高的奖励(贪心,优先队列)1191 消灭兔子(贪心,优先队列)1212 无向图最小生成树(prim)1255 字典序最小的子序列(贪心)1257 背包问题 V3(贪心,二分,分数规划)1279 扔...原创 2019-11-21 23:30:01 · 143 阅读 · 0 评论 -
1380 夹克老爷的逢三抽一(贪心,思维)
又到了诺德县的百姓孝敬夹克大老爷的日子,带着数量不等的铜板的村民准时聚集到了村口。夹克老爷是一位很"善良"的老爷,为了体现他的仁慈,有一套特别的收钱的技巧。1、让所有的村民排成一队,然后首尾相接排成一个圈。2、选择一位村民收下他的铜钱,然后放过他左右两边的村民。3、让上述三位村民离开队伍,并让左右两边的其他村民合拢起来继续围成一个圈。4、重复执行2、3直到村民全部离开。夹克老爷的家丁早...原创 2019-11-21 22:02:52 · 141 阅读 · 0 评论 -
1625 夹克爷发红包(dfs,贪心)
在公司年会上,做为互联网巨头51nod掌门人的夹克老爷当然不会放过任何发红包的机会。现场有n排m列观众,夹克老爷会为每一名观众送出普通现金红包,每个红包内金额随机。接下来,夹克老爷又送出最多k组高级红包,每组高级红包会同时给一排或一列的人派发 ,每个高级红包的金额皆为x。派发高级红包时,普通红包将会强制收回。同时,每个人只能得到一个高级红包。(好小气!)现在求一种派发高级红包的策略,使得现...原创 2019-11-21 19:11:51 · 124 阅读 · 0 评论 -
1125 交换机器的最小代价(贪心,环)
有N台机器重量各不相等,现在要求把这些机器按照重量排序,重量从左到右依次递增。移动机器只能做交换操作,但交换机器要花费一定的费用,费用的大小就是交换机器重量的和。例如:3 2 1,交换1 3后为递增排序,总的交换代价为4。给出N台机器的重量,求将所有机器变为有序的最小代价。(机器的重量均为正整数)输入第1行:1个数N,表示机器及房间的数量。(2 <= N <= 50000)第2 ...原创 2019-11-20 20:42:54 · 229 阅读 · 0 评论 -
1672 区间交(区间贪心)
小A有一个含有n个非负整数的数列与m个区间,每个区间可以表示为li,ri。它想选择其中k个区间, 使得这些区间的交的那些位置所对应的数的和最大。(是指k个区间共同的交,即每个区间都包含这一段,具体可以参照样例)在样例中,5个位置对应的值分别为1,2,3,4,6,那么选择[2,5]与[4,5]两个区间的区间交为[4,5],它的值的和为10。输入第一行三个数n,k,m(1<=n<=...原创 2019-11-20 15:49:14 · 137 阅读 · 0 评论 -
1255 字典序最小的子序列(贪心)
给出一个由a-z组成的字符串S,求他的一个子序列,满足如下条件:1、包含字符串中所有出现过的字符各1个。2、是所有满足条件1的串中,字典序最小的。例如:babbdcc,出现过的字符为:abcd,而包含abcd的所有子序列中,字典序最小的为abdc。输入输入1行字符串S,所有字符均为小写,字符串的长度为L。(1 <= L <= 100000)。输出输出包含S中所有出现过的字...原创 2019-11-20 14:50:22 · 307 阅读 · 0 评论 -
1257 背包问题 V3(贪心,二分,分数规划)
N个物品的体积为W1,W2…Wn(Wi为整数),与之相对应的价值为P1,P2…Pn(Pi为整数),从中选出K件物品(K <= N),使得单位体积的价值最大。输入第1行:包括2个数N, K(1 <= K <= N <= 50000)第2 - N + 1行:每行2个数Wi, Pi(1 <= Wi, Pi <= 50000)输出输出单位体积的价值(用约分后的...原创 2019-11-20 12:04:00 · 223 阅读 · 0 评论 -
1191 消灭兔子(贪心,优先队列)
有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M)。假设每种箭只能使用一次,每只免子也只能被射一次,计算要消灭地图上的所有兔子最少需要多少Q币。如不能杀死所有兔子,请输出No Solution。特别说明:1、当箭的伤害值大于等于兔子的血量时,能将兔子杀死;2、血量B[i],箭的...原创 2019-11-19 22:10:35 · 134 阅读 · 0 评论 -
1449 砝码称重(思维,进制)
现在有好多种砝码,他们的重量是 w0,w1,w2,…每种各一个。问用这些砝码能不能表示一个重量为m的东西。样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。输入单组测试数据。第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。输出如果能,输出YES,否则输出NO。输入样例3 7输出样例YES把n转换为w进制数,为1或0 时表示取...原创 2019-11-19 21:00:23 · 348 阅读 · 0 评论 -
1352 集合计数(扩展欧几里得板子,求ax+by=n的非负整数解)
给出N个固定集合{1,N},{2,N-1},{3,N-2},…,{N-1,2},{N,1}.求出有多少个集合满足:第一个元素是A的倍数且第二个元素是B的倍数。提示:对于第二组测试数据,集合分别是:{1,10},{2,9},{3,8},{4,7},{5,6},{6,5},{7,4},{8,3},{9,2},{10,1}.满足条件的是第2个和第8个。输入第1行:1个整数T(1<=T<...原创 2019-11-18 22:24:30 · 466 阅读 · 0 评论 -
1632 B君的连通(树的联通块)
B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接。A国是B国的敌国企图秘密发射导弹打击B国的交通线,现假设每条交通线都有50%的概率被炸毁,B国希望知道在被炸毁之后,剩下联通块的个数的期望是多少?输入一个数n(2<=n<=100000)接下来n-1行,每行两个数x,y表示一条交通线。(1<=x,y<=n)数据保证其交通系统构成一棵...原创 2019-11-07 22:33:26 · 194 阅读 · 0 评论 -
1098 最小方差(排序,性质)
若x1,x2,x3…xn的平均数为k。则方差s^2 = 1/n * [(x1-k)2+(x2-k)2+…+(xn-k)^2] 。方差即偏离平方的均值,称为标准差或均方差,方差描述波动程度。给出M个数,从中找出N个数,使这N个数方差最小。输入第1行:2个数M,N,(M > N, M <= 10000)第2 - M + 1行:M个数的具体值(0 <= Xi <= 1...原创 2019-11-07 21:51:09 · 413 阅读 · 0 评论 -
1639 绑鞋带(概率,思维)
有n根鞋带混在一起,现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。可以想象,这n次之后將不再有单独的鞋带头,n条鞋带系成了一些环。那么有多大概率刚好所有这些鞋带只形成了一个环?输入仅一行,包含一个整数n (2<=n<=1000)。输出输出一行,为刚好成环的概率。输入样例2输出样例0.666667啊啊啊,膜拜大佬考虑当前已经打了i个结,那么当前还有2∗n...原创 2019-11-07 20:42:48 · 160 阅读 · 0 评论 -
1276 岛屿的数量(模拟,排序)
有N个岛连在一起形成了一个大的岛屿,如果海平面上升超过某些岛的高度时,则这个岛会被淹没。原本的大岛屿则会分为多个小岛屿,如果海平面一直上升,则所有岛都会被淹没在水下。给出N个岛的高度。然后有Q个查询,每个查询给出一个海平面的高度H,问当海平面高度达到H时,海上共有多少个岛屿。例如:岛屿的高度为:{2, 1, 3, 2, 3}, 查询为:{0, 1, 3, 2}。当海面高度为0时,所有的岛形成...原创 2019-11-07 20:08:56 · 116 阅读 · 0 评论