
51nod
每个人都该翩翩起舞
学习中的渣渣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
51nod1503 猪和回文
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1503思路:因为要求路径回文,所以可以考虑同时从起点和终点出发,中间路径相同最后再某处相遇。第一次多线程dp,两次优化空间,很有趣AC代码:#include<bits/stdc++.h>const int MAXN = 5e2 + 5;const...原创 2018-03-20 08:45:50 · 349 阅读 · 1 评论 -
51nod1433 0和5
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1433思路:九余定理,https://www.cnblogs.com/zzqc/p/6684794.html,然后只要各位上的数加起来是9的倍数,并且有一个0及以上的0即可,然后5放前面,0放后面,满足最大。AC代码:#include<bits/stdc+...原创 2018-03-13 21:31:48 · 197 阅读 · 0 评论 -
51nod1629 B君的圆锥
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1629思路:推导公式,大佬博客AC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;const double PI = acos(-1.0);int ...原创 2018-03-13 20:44:53 · 188 阅读 · 0 评论 -
51nod1051 最大子矩阵和
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051思路:定义dp[i][j][l]为以第i行第j列为左下角元素的长度为l最大子矩阵和,于是dp[i][j][l] =max(dp[i-1][j][l] + sum(j,j+l-1));然后预处理后缀和,滚动数组优化一下空间即可#include<stdi...原创 2018-03-19 22:55:16 · 235 阅读 · 0 评论 -
51nod1021 石子归并
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1021思路:简单的区间DP,预处理前缀和就好AC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 1e2 + 5;const int MOD = 1e9 + 7;l...原创 2018-03-19 22:33:56 · 246 阅读 · 0 评论 -
51nod1043 幸运号码
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1043思路:数位dp,因为N最多1000,所以可以定义dp[i][j]为长度为i和为j的数的数量,然后dp[i][j] = sum{dp[i][j-k],k∈[0,9]}最后统计的时候就是乘法原理,注意前缀0AC代码:#include<bits/stdc+...原创 2018-03-19 22:26:40 · 246 阅读 · 0 评论 -
51nod1636 教育改革
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1636思路:先按难度系数排序,然后定义dp[i][j][k]表示,第i天安排第j门课程,作业量为 第j们课程的最小作业量+k的前i天最大作业量之和,之所以这样定义k,是因为课程的最小最大作业量范围太大,但是差值很小,所以可以定义为在区间内的位置来定义,然后转移就...原创 2018-03-19 22:06:08 · 268 阅读 · 0 评论 -
51nod1101 换零钱
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1101思路:完全背包AC代码:#include<bits/stdc++.h>using namespace std;const int SIZE = 13;const int value[13] = { 1, 2, 5, 10, 20, 50,...原创 2018-03-19 20:45:30 · 242 阅读 · 0 评论 -
51nod1270 数组的最大代价
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1270思路:可知,要使最大代码取得最大值,那么a[i]的每一位都应是取得上限或者下限,也就是1或者b[i],然后分情况dp就好,O(n)AC代码:#include<bits/stdc++.h>using namespace std;const i...原创 2018-03-19 20:39:17 · 211 阅读 · 0 评论 -
51nod1049 最大子段和
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1049思路:O(n)边读入边处理,如果前面的子段和大于0,那么就用当前的加上前面的,否则就是当前的,并随时更新最大和就是AC代码:#include<bits/stdc++.h>using namespace std;const int MOD =...原创 2018-03-19 20:11:20 · 221 阅读 · 0 评论 -
51nod1085 背包问题
原题链接;https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085思路:01背包,不用说了。。AC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;const int MAXN = 1e4 + 5;const d...原创 2018-03-19 20:09:04 · 210 阅读 · 0 评论 -
51nod1134 最长递增子序列
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1134思路:经典的LIS问题,nlogn做法:考虑dp[i]为长度为i的最长上升子序列的末尾元素,那么对于长度为i的最长子序列,如果当前元素为j,并且dp[i]>j,那么我们可以考虑用j替换前面的元素,因为末尾元素越低的话,后面的元素就有更多的机会构造出更...原创 2018-03-19 20:03:56 · 212 阅读 · 0 评论 -
51nod1489 蜥蜴和地下室
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1489思路:看数据,标准的dfs,先打掉最左边和最右边的怪,然后对中间的深搜,细节看代码AC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 10 + 5;int n...原创 2018-03-12 21:30:56 · 220 阅读 · 0 评论 -
51nod1521 一维战舰
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1521思路:每一次猜测后检查剩下的区域是否可以还可以放下k个战舰,而每一次猜测后剩余的面积是可以算出来的AC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 2 * 1...原创 2018-03-12 21:19:01 · 168 阅读 · 0 评论 -
51nod1413 权势二进制
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1413思路:因为权势二进制,只能由01构成,所以只要枚举记录各位上的最大数,就是所需要的数的个数AC代码:#include<bits/stdc++.h>using namespace std;int main() { int n; scan...原创 2018-03-13 21:34:49 · 162 阅读 · 0 评论 -
51nod1432 独木舟
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1432思路:贪心,一个船最做坐两个人,我们考虑最重的一个人,那么如果最轻的人都不能与他同乘一艘船,那么其他人更不能,所以从两边开始遍历即可AC代码:#include<bits/stdc++.h>using namespace std;int a[10...原创 2018-03-13 21:42:36 · 182 阅读 · 0 评论 -
51nod1428 活动安排问题
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428思路:贪心,按开始时间排序,并用数组保存每个教室当前活动的结束时间AC代码:#include<bits/stdc++.h>using namespace std;struct node { int start, end; bool op...原创 2018-03-13 21:49:51 · 118 阅读 · 0 评论 -
51nod1092 回文字符串(区间DP)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092思路:区间DP,如果str[i]==str[j],dp[i][j] = dp[i+1][j-1],否则 dp[i][j] = min(dp[i+1][j],dp[i][j+1])+1, O(n^2)状态,O(1)转移AC代码:#include<bi...原创 2018-03-14 14:01:53 · 222 阅读 · 0 评论 -
51nod1094 和为k的连续区间(前缀和)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1094思路:维护前缀和sum的最小下标,然后枚举i看是否有对应的sumAC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;const int MAXN ...原创 2018-03-14 13:54:33 · 189 阅读 · 0 评论 -
51nod1095 Anigram单词
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1095思路:排序存储到map里面,另外主要判断当前要查询的单词是否有一个原单词与它相同,如果有就减去AC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;...原创 2018-03-14 13:46:42 · 160 阅读 · 0 评论 -
51nod1119 机器人走方格 V2(组合数学)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119思路:组合数学最基本的各路模型,从(0,0)点走到(n,m)点,只能想右或者下的方案数,等于C(N+M,N) 也就是从一共N+M步中选择N步向下AC代码:#include<bits/stdc++.h>using namespace std;...原创 2018-03-14 13:44:58 · 311 阅读 · 0 评论 -
51nod1126 求递推序列的第N项
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126思路:矩阵快速幂 或者找循环节AC代码:#include <iostream>using namespace std;int f[300] = { 1, 1, 1 }; // 根据规律可知,一定存在循环节int main()...原创 2018-03-14 13:41:53 · 169 阅读 · 0 评论 -
51nod1133 不重叠的线段
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1133思路:线扫,加贪心,将线段按终点升序排序AC代码;#include<bits/stdc++.h>using namespace std;const int MAXN = 50005;struct line { int start, e...原创 2018-03-14 11:32:46 · 215 阅读 · 0 评论 -
51nod1138 连续整数的和
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1138思路:设数列首项为a,长度为n,那么a,n要满足方程,n*(2*i+n-1) = 2*N,然后i不好枚举,我们可以从大到小枚举n,根据方程可知,n是sqrt(2*N)级别AC代码:#include<bits/stdc++.h>using na...原创 2018-03-14 11:17:29 · 175 阅读 · 0 评论 -
51nod1266 蚂蚁
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1266思路:我们可以知道,假设一只向右一只向左,相遇后,向右的向左,向左的向右,也就是说,其实可以等同看待,所以当求最短时间时,每只蚂蚁向离端点近的地方走,求最长时间时,每只蚂蚁向离端点远的地方走就是AC代码:#include<bits/stdc++.h&...原创 2018-03-14 10:56:23 · 178 阅读 · 0 评论 -
51nod1278 相离的圆
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278思路:贪心+线扫,先将圆预处理成点,分为起点与终点,我们对每一个终点计算他后面的与他相离的圆的数目,每遇到一个起点,就那么可能的相离的圆的数目就要减1AC代码:#include<bits/stdc++.h>using namespace st...原创 2018-03-14 10:36:50 · 212 阅读 · 0 评论 -
51nod1279 扔盘子
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279思路:贪心, 可以知道 如果上面的宽度比下面还低的话, 是不可能到达下面的,于是可以预处理井的宽度,并从下到上贪心放置盘子即可AC代码: #include<bits/stdc++.h>using namespace std;const i...原创 2018-03-14 10:25:17 · 183 阅读 · 0 评论 -
51nod1732 51nod婚姻介绍所(DP)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1732思路:简单的dp,预处理字符串的自匹配的就好,if str[i]==str[j] 有 dp[i][j] = 1+dp[i+1][j+1],用输入输出挂加速读入写出AC代码:#include<stdio.h>#include<math.h...原创 2018-03-20 08:38:13 · 283 阅读 · 0 评论 -
51nod1086 背包问题 V2
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086思路:多重背包,二进制分解思路AC代码:#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>const int ...原创 2018-03-20 08:20:55 · 221 阅读 · 0 评论 -
51nod1315 合法整数集
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1315思路:分解二进制位,详情看代码AC代码:#include<bits/stdc++.h>using namespace std;int cnt[34];int main() { int n, t, x; scanf("%d %d", ...原创 2018-03-13 22:15:57 · 224 阅读 · 0 评论 -
51nod1417 天堂里的游戏
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1417思路:根据样例,就是求一个p关于AB的公式即可,PA-(A+B)/2(1-P)=(1-P)B-(A+B)P/2 ; 所以 P=a+3b/(4a+4b)AC代码:#include<bits/stdc++.h>using namespace s...原创 2018-03-13 22:06:04 · 486 阅读 · 0 评论 -
51nod1596 搬货物(思维)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1596思路:二进制进位啦,只要一个位上的个数大于等于2就可以向上进步,如果为1,ans++AC代码:#include<bits/stdc++.h>using namespace std;const int MAXN = 1000055;con...原创 2018-03-12 21:10:31 · 191 阅读 · 0 评论 -
51nod1873 初中的算术
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1873思路:java大数可破。。C写麻烦 不想写AC代码:import java.math.BigDecimal;import java.util.*;public class MAIN { public static void main(String a...原创 2018-03-12 21:04:19 · 194 阅读 · 0 评论 -
51nod1007 正整数分组
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007思路:01背包,设背包最大重量为总和的一半,然后dpAC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;const int MAXN = 1e4 ...原创 2018-03-15 09:17:11 · 196 阅读 · 0 评论 -
51nod1031 骨牌覆盖
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1031思路:随便写写画画就知道,这就是个菲波拉契数列,因为对于2*N的方格,当前位置(也就是最右边),要么横着放两个,方案数就是2*(N-2)的方案数,或者竖着放一个,方案数就是2*(N-1)的方案数,数据又小,递推求解即可。AC代码:#include<b...原创 2018-03-15 08:21:23 · 262 阅读 · 0 评论 -
51nod1042 数字0-9的数量(数位DP)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042思路:就是统计啦,有点麻烦,注意细节,看代码AC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;const int MAXN = 1e5 + 5;...原创 2018-03-15 08:16:48 · 220 阅读 · 0 评论 -
51nod1050 循环数组最大子段和
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050思路:这里有两种情况,一种是数组最大字段和是循环的,一种是不循环的,不循环的可以直接dp求解,可循环的数组最大字段和不好找,但是最小字段和好找,dp出最小字段和,然后用总和减去就是所求值AC代码:#include<bits/stdc++.h>...原创 2018-03-15 08:07:39 · 214 阅读 · 0 评论 -
51nod1067 Bash游戏 V2
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1067思路:dp打表找下规律即可,如果A有一种选择之后B为输,那么A赢,如果B全部为赢,A输AC代码:#include<bits/stdc++.h>using namespace std;const int MOD = 1e9 + 7;cons...原创 2018-03-15 08:05:05 · 235 阅读 · 0 评论 -
51nod 1091 线段的重叠
1091 线段的重叠基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 <= N &l...原创 2018-02-13 14:16:21 · 177 阅读 · 0 评论 -
1182 完美字符串
1182 完美字符串 题目来源: Facebook Hacker Cup选拔基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的...原创 2018-02-13 14:07:24 · 120 阅读 · 0 评论