![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
online judge 51Nod
Yishui_Blog
Try our best
展开
-
51Nod 1416 两点 (DFS
题意: 寻找图里面成环切大于等于444 直接对每个没有搜索过的点进行爆搜,并且记录每次搜索的步数#include <bits/stdc++.h>using namespace std;#define cpp_io() {ios::sync_with_stdio(false); cin.tie(NULL);}#define rep(i,a,n) for (...原创 2018-09-06 02:20:53 · 116 阅读 · 0 评论 -
51Nod 1289 大鱼吃小鱼 ( 模拟
Orz 其实就是一个栈的模拟,因为鱼的位置是从左向右给出的,那么我们方向为右边的扔进栈中,方向为左的输入时候一定是最由的情况,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int ...原创 2018-06-27 21:19:20 · 180 阅读 · 0 评论 -
51Nod 1101 换零钱 ( dp
确定 状态为 dp[i][j]dp[i][j]dp[i][j] 表示前iii个物品选或者不选 结果为j的方案数, dp[i][j]=dp[i−1][j]+dp[i][j−w[i]]dp[i][j]=dp[i−1][j]+dp[i][j−w[i]]dp[i][j] = dp[i-1][j]+dp[i][j-w[i]] 和当前状态有关,顺序滚动数组,其实就是个完全背包QWQ#inclu...原创 2018-06-10 20:31:00 · 108 阅读 · 0 评论 -
51Nod 1007 正整数分组 ( 01背包变形
惭愧惭愧,差点没看出来这个就是裸的01背包 考虑到 当两组数值为sum/2sum/2sum/2的时候,差值最小 那么这个题就是一个一个背包容量为sum/2sum/2sum/2, 重量和价值都是数子本身大小的010101背包 找到背包内最大的价值,就是分组相差最小的方案#include &lt;bits/stdc++.h&gt;using namespace std;const ...原创 2018-06-10 19:19:31 · 160 阅读 · 0 评论 -
51Nod 1109 01组成的N的倍数 ( BFS+同余定理
明显的快搜 但是要用同余定理降低复杂度 考虑剪枝 当这个余数已经出现的时候,那么再向后加数字也不可能是这个模数的倍数 本来想用优先队列加速一下,发现这个最小的值因为余数和字符串的关系根本就不是最小的QWQ#include <bits/stdc++.h>using namespace std;const int MAXN = (int)1e6+10;bool vi...原创 2018-06-25 00:48:11 · 152 阅读 · 0 评论 -
51Nod 1201 整数划分 ( dp
1201 整数划分 题目描述将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。由于数据较大,输出Mod 10^9 + 7的结果即可。输入输入1个数N(1 &amp;lt;= N &amp;lt;= 50000)。输出输出划分的数量Mod 10^9 + 7。样例Input示例6Output示例4...原创 2018-06-08 23:57:24 · 221 阅读 · 0 评论 -
51Nod 1086 背包问题 V2 ( 二进制拆分优化
1086 背包问题 V2题目描述有N种物品,每种物品的数量为C1,C2……Cn。从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。输入第1行,2个整数,N和W中间用空格隔开。N为物品的种类,W为背包的容量。(1 <= N <= 100,1 <= W ...原创 2018-06-08 22:49:05 · 120 阅读 · 0 评论 -
51Nod 1640 天气晴朗的魔法 (两次生成树
1640 天气晴朗的魔法 题目描述51nod魔法学校近日开展了主题为“天气晴朗”的魔法交流活动。N名魔法师按阵法站好,之后选取N - 1条魔法链将所有魔法师的魔力连接起来,形成一个魔法阵。魔法链是做法成功与否的关键。每一条魔法链都有一个魔力值V,魔法最终的效果取决于阵中所有魔法链的魔力值的和。由于逆天改命的魔法过于暴力,所以我们要求阵中的魔法链的魔力值最大值尽可能的小,与此...原创 2018-06-08 14:25:22 · 301 阅读 · 0 评论 -
51Nod 1006 最长公共子序列Lcs ( LCS路径打印
LCS的模板题顺便加个路径打印#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ls st&amp;lt;&amp;lt;1#define rs st&amp;lt;&amp;lt;1|1#define fst first#define sn原创 2018-06-13 21:40:48 · 190 阅读 · 0 评论 -
51Nod 1105 第K大的数 ( 二分
1105 第K大的数 题目描述数组A和数组B,里面都有n个整数。数组C共有n^2个整数,分别是A[0] * B[0],A[0] * B[1] ……A[1] * B[0],A[1] * B[1]……A[n - 1] * B[n - 1](数组A同数组B的组合)。求数组C中第K大的数。 例如:A:1 2 3,B:2 3 4。A与B组合成的C包括2 3 4 4 6 8 6 9 12共9个数...原创 2018-05-14 18:24:31 · 193 阅读 · 0 评论 -
51Nod 1021 石子归并 ( 区间dp
题目描述N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19) 1 2 3 4 => 1 5 4(5) => 1 9...原创 2018-05-13 23:54:01 · 145 阅读 · 0 评论 -
51Nod 1051 最大子矩阵和 ( dp
1051 最大子矩阵和 题目描述一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。 例如:3*3的矩阵:-1 3 -1 2 -1 3 -3 1 2 和最大的子矩阵是:3 -1 -1 3 1 2输入第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。 第2 - N + 1行:矩阵中的元素,每...原创 2018-04-26 18:00:36 · 184 阅读 · 0 评论 -
51Nod 1087 1 10 100 1000 ( 二分
规律很容易可以观察到 主要是数据范围很大,需要二分查询位置即可#include &lt;bits/stdc++.h&gt;using namespace std;#define ls st&lt;&lt;1#define rs st&lt;&lt;1|1#define LL long longconst int MAXN= (int) 1e5+10;int arr[MA...原创 2018-06-28 13:36:40 · 131 阅读 · 0 评论 -
51Nod1082 与7无关的数
无脑打表就行,,,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 1e6+10;LL arr[MAXN];bool check(LL x) {...原创 2018-06-28 13:54:26 · 188 阅读 · 0 评论 -
51Nod 1283 最小周长
数学小常识 我们明白当面积恒定的时候,那么形状越靠近正方形周长就越小Orz#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 1e6+10;LL ar...原创 2018-06-28 14:07:16 · 169 阅读 · 0 评论 -
51Nod 1305 Pairwise Sum and Divide
这个水题很有意思,明显我们发现所求的值,只和1,2的存在有关 统计一下 推出公式就行Orz#include &lt;bits/stdc++.h&gt;using namespace std;#define ls st&lt;&lt;1#define rs st&lt;&lt;1|1#define LL long longconst int MAXN= (int) 1e6+...原创 2018-09-06 02:02:51 · 119 阅读 · 0 评论 -
51Nod 1686 第K大区间 (尺取+二分
14原创 2018-08-04 21:50:09 · 174 阅读 · 0 评论 -
51Nod 1202 子序列个数 ( dp
序列有关的dp 状态dp[i]dp[i]dp[i]定义为第iii个数字时的 子序列状态有多少个dp[0]=1dp[0]=1dp[0] = 1 考虑状态转移方程: dp[i]=dp[i−1]∗2dp[i]=dp[i−1]∗2dp[i] = dp[i-1]*2 dp[i]=dp[i−1]∗2−dp[j−1]dp[i]=dp[i−1]∗2−dp[j−1]dp[i] = dp[i-1]...原创 2018-08-04 20:47:31 · 210 阅读 · 0 评论 -
51Nod 2020 排序相减
数据好水。。。#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 26;int arr[MAXN];bool check(char ch) { ...原创 2018-06-28 16:00:08 · 140 阅读 · 0 评论 -
51Nod 2133 排队接水
数据好, 感觉是个假题,,,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 26;int arr[MAXN];bool check(char c...原创 2018-06-28 15:36:09 · 269 阅读 · 0 评论 -
51Nod 1080 两个数的平方和
暴力判断一下就行了,,,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 26;int arr[MAXN];bool check(char ch) {...原创 2018-06-28 15:16:59 · 100 阅读 · 0 评论 -
51Nod1182 完美字符串
就是统计下字母个数排个序,算是贪心吧,,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 26;int arr[MAXN];bool check(...原创 2018-06-28 14:58:48 · 128 阅读 · 0 评论 -
51Nod 1381 硬币游戏
xjb猜下结论就过了,, Pythonn = int(input())for i in range(0,n): r = int(input()) print(2*r)原创 2018-06-28 14:50:16 · 105 阅读 · 0 评论 -
51Nod 1344 走格子
辣鸡水题,忘记开LLwa了一次,,,,#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 1e6+10;int arr[MAXN];int mai...原创 2018-06-28 14:43:51 · 124 阅读 · 0 评论 -
51Nod 1305 Pairwise Sum and Divide
这个水题很有意思,明显我们发现所求的值,只和1,2的存在有关 统计一下 推出公式就行Orz#include <bits/stdc++.h>using namespace std;#define ls st<<1#define rs st<<1|1#define LL long longconst int MAXN= (int) 1e6+...原创 2018-06-28 14:35:17 · 121 阅读 · 0 评论 -
51Nod 1118 机器人走方格 ( dp/组合数逆元
1118 机器人走方格题目描述M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。输入第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)输出输出走法的数量。样例Input示例2 3Output示例3题意简...原创 2018-04-25 23:52:25 · 104 阅读 · 0 评论 -
51Nod 1366 贫富差距 ( 并查集+Floyed
1366 贫富差距 题目描述一个国家有N个公民,标记为0,1,2,…,N-1,每个公民有一个存款额。已知每个公民有一些朋友,同时国家有一条规定朋友间的存款额之差不能大于d。也就是说,a和b是朋友的话,a有x元的存款,b有y元,那么|x-y|<=d。给定d值与N个人的朋友关系,求这个国家最富有的人和最贫穷的人的存款相差最大的可能值是多少?即求贫富差距的最大值的下界。若这个值为无穷大,输...原创 2018-04-02 20:47:42 · 164 阅读 · 0 评论 -
51Nod 1596 搬货物 (数学
1596 搬货物题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 现在有n个货物,第i个货物的重量是 2wi 。每次搬的时候要求货物重量的总和是一个2的幂。问最少要搬几次能把所有的货物搬完。 样例解释: 1,1,2作为一组。 3,3作为一组。Input 单组测试数据。 第一行有一个整数n (1≤n≤10^原创 2017-04-23 10:59:39 · 444 阅读 · 0 评论 -
51Nod 1042 数字0-9的数量 (数位DP
1042 数字0-9的数量基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 给出一段区间a-b,统计这个区间内0-9出现的次数。 比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次。 Input 两个数a,b(1 <= a <= b <= 10^18) Output 输出原创 2017-04-20 22:46:20 · 433 阅读 · 1 评论 -
51Nod 1287 加农炮 ( 暴力/线段树
Description一个长度为M的正整数数组A,表示从左向右的地形高度。测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(A[i] >= H),炮弹会被挡住并落在i - 1处,则A[i - 1] + 1。如果H <= A[0],则这个炮弹无效,如果H > 所有的A[i],这个炮弹也无效。现在给定N个整数的数组B代表炮弹高度,计算出最后地形的样子。原创 2017-04-30 16:00:03 · 500 阅读 · 0 评论 -
51Nod 1049 最大子段和 (DP
最大子段和基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 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。 Input第1行:整数序列的长度N(2 <原创 2017-02-06 04:34:39 · 257 阅读 · 0 评论 -
51Nod 1050 循环数组最大字段和 ( DP
循环数组最大子段和基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。 例如:-2,1原创 2017-02-06 05:24:44 · 348 阅读 · 0 评论 -
51Nod 1127 最短的包含字符串 (尺取
1127 最短的包含字符串Description给出一个字符串,求该字符串的一个子串S,S包含A-Z中的全部字母,并且S是所有符合条件的子串中最短的,输出S的长度。如果给出的字符串中并不包括A-Z中的全部字母,则输出No Solution。Input第1行,1个字符串。字符串的长度 <= 100000。Output输出包含A-Z的最短子串长度。如果没有符合条件的子串,则输出No Solution。S原创 2017-04-28 09:41:42 · 299 阅读 · 0 评论 -
51Nod 1133 不重叠的线段 (区间贪心
1133 不重叠的线段基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。 例如:[1 5][2 3][3 6],可以选[2 3][3 6],这2条线段互不重叠。 Input 第1行:1个数N,线段的数量(2 <= N <= 100原创 2017-03-17 00:24:16 · 1102 阅读 · 0 评论 -
51Nod 1091 线段的重叠 (区间贪心
1091 线段的重叠基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。 Input 第1行:线段的数量原创 2017-03-16 23:43:41 · 371 阅读 · 0 评论 -
51Nod 1212 无向图最小生成树(最小生成树Kruskal & Prim
还是畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43081 Accepted Submission(s): 19637Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政原创 2017-02-27 09:27:58 · 317 阅读 · 0 评论 -
51nod 1181 . 质数中的质数(质数筛法)
1181 . 质数中的质数(质数筛法)题目来源: Sgu时间限制:1 秒 空间限制:65536 KB 分值: 0如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N Output输出>=N原创 2016-12-25 01:37:38 · 973 阅读 · 0 评论 -
51Nod 1090 3个数和为0 (二分
1090 3个数和为0Description给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。Input第1行,1个数N,N为数组的长度(0 <= N <= 1000) 第2 - N + 1行:A[i](原创 2017-04-24 00:31:18 · 265 阅读 · 0 评论 -
51Nod 1267 4个数和为0 ( 二分
1267 4个数和为0Description给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出”Yes”,否则输出”No”。Input第1行,1个数N,N为数组的长度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)Output如果可以选出4个数,使得他们的和为0,则输出”Yes”,否则输出”No”。Sample I原创 2017-04-23 23:27:36 · 361 阅读 · 0 评论 -
51Nod1010 只包含因子2 3 5的数 (二分
1010 只包含因子2 3 5的数DescriptionK的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。 例如:n = 13,S中 >= 13的最小的数是15,所以输出15。Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000原创 2017-04-25 00:29:37 · 379 阅读 · 0 评论