- 博客(42)
- 收藏
- 关注
原创 |洛谷|NOIP2010|动态规划|P1541 乌龟棋
http://www.luogu.org/problem/show?pid=1541设f[i][j][k][l]为四种卡片的使用次数,则不难得出状态转移方程f[i,j,k,l]=max{[i-1,j,k,l],f[i,j-1,k,l],f[i,j,k-1,l],f[i,j,k,l-1]}+s[i*1+j*2+k*3+l*4];#include#include#include#
2016-09-30 20:58:40 421
原创 |洛谷|动态规划|P1855 榨取kkksc03
http://www.luogu.org/problem/show?pid=1855题目描述一大堆,其实就是一个二维背包问题。#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n,m,t;int mi[105], ti[105];int
2016-09-30 19:19:40 562
原创 |洛谷|动态规划|P1736 创意吃鱼法
http://www.luogu.org/problem/show?pid=1736先O(nm)预处理r, l, up数组分别代表在右边连续出现几个0,在左边连续出现几个0,在上边连续出现几个0即得转移方程,f[i][j]为以i,j作为正方形的右下顶点的最大吃鱼数主对角线:f[i][j]=min(f[i-1][j-1],left[i][j-1],up[i-1][j])+1副对角
2016-09-30 19:09:22 557
原创 |洛谷|分治|P1908 逆序对
http://www.luogu.org/problem/show?pid=1908归并排序求解即可,经典问题#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int A[40005];int T[40005];int cnt = 0;int
2016-09-28 21:47:44 632
原创 |洛谷|DFS|P1433 吃奶酪
http://www.luogu.org/problem/show?pid=1433直接DFS即可,有一个剪枝#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;struct pos { double x; double y;}p[30];
2016-09-27 21:11:34 772
原创 |洛谷|分治|P1010 幂次方
http://www.luogu.org/problem/show?pid=1010将十进制数字转为二进制,依靠二进制转十进制的思想分治即可#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n;int f(int a){ int
2016-09-25 22:05:47 550
原创 |洛谷|分治|数学|P1226 取余运算||快速幂
http://www.luogu.org/problem/show?pid=1226快速幂取余。#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int poww(int a, int b, int c){ int ans = 1, base =
2016-09-25 14:33:15 357
原创 |洛谷|DFS|P1019 单词接龙
http://www.luogu.org/problem/show?pid=1019先3层循环算出两个单词接上的长度,然后DFS最长路即可注意重合部分可以随意取,2、3测试点就有这个坑#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;char c
2016-09-25 12:21:06 384
原创 |洛谷|数学|P1029 最大公约数和最小公倍数问题
http://www.luogu.org/problem/show?pid=1029由lcm(a,b)=a*b/gcd(a,b)得 a*b = lcm(a,b)*gcd(a,b)设给出两个整数为x,y,要求的两个数为R,Q 原式变为R*Q=x*y变形得 Q = (x*y)/R;然后枚举P,就可以求出Q,继而得出解#include#include#include#inclu
2016-09-24 23:30:15 399
原创 |洛谷|数学|P1088 火星人
http://www.luogu.org/problem/show?pid=1088求字典序第k大全排列,可以用C++的next_permutation函数#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int a[10005];int main
2016-09-24 22:54:30 349
原创 |洛谷|数学|P1147 连续自然数和
http://www.luogu.org/problem/show?pid=1147利用了数学公式求等差数列之和公式(s1+sn)*n/2#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int main(){ int n; sca
2016-09-24 21:36:32 550
原创 |洛谷|数学|P1403 约数研究
http://www.luogu.org/problem/show?pid=1403#sub枚举一个数的约数肯定超时,那我们反过来想。枚举1~n里约数i有多少个,那么很明显如果n=10,那么约数1有10/1=10个,约数2有10/2=5个,约数3有10/3=3个……#include#include#include#include#define ms(i,j) memset(i,
2016-09-24 15:16:25 335
原创 |洛谷|DFS|P1101 单词方阵
http://www.luogu.org/problem/show?pid=1101循环找到一个y后向8个方向搜索,直到搜到g,然后按照方向反向填充即可#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;const int dx[8] = {0,1,0
2016-09-24 13:23:30 295
原创 |洛谷|BFS|P1141 01迷宫
http://www.luogu.org/problem/show?pid=1141用bfs求连通分量,每个连通分量的答案都是一样的#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;const int dx[4] = {0,1,0,-1},
2016-09-24 13:21:43 476
转载 |洛谷|递推|P1025 数的划分
http://www.luogu.org/problem/show?pid=1025设F(i,j)为用j个数组成i,答案为F(7,3)的话。一个思路是,对于F(7,3)=不含1的方案数①+含1的方案数②。F(i,j)=a(i,j)+b(i,j)子问题①a(i,j)=F(i-j,j),如其中一个方案2 2 3不含1,则把组成它的j个数都减去1,变成1 1 2的方案
2016-09-23 22:40:13 644
原创 |洛谷|二分|P1316 丢瓶盖
http://www.luogu.org/problem/show?pid=1316二分答案后贪心地check即可#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int a,b;int x[100005];int l = 1,r = 0;bo
2016-09-23 22:37:19 449
原创 |洛谷|二分|P1182 数列分段Section II
http://www.luogu.org/problem/show?pid=1182用二分答案,check即可#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n,m;int a[100005];bool check(int x)//大于
2016-09-21 22:09:14 620
原创 |洛谷|排序|P1309 瑞士轮
http://www.luogu.org/problem/show?pid=1309#sub第一次快排,之后用a,b记录输赢的集合,赢了的和输了的的相对排序一致,用归并排序#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;struct ps{ i
2016-09-20 22:10:51 402
原创 |洛谷|动态规划|P1115 最大子段和
http://www.luogu.org/wiki/show?name=%E9%A2%98%E8%A7%A3+P1115动态规划思想,这里可以免去数组。#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int main(){ int n;
2016-09-18 21:48:32 401
原创 |洛谷|模拟|P1086 花生采摘
http://www.luogu.org/problem/show?pid=1086由于必须采摘当前最大植株,所以这道题水了很多,当如果摘了当前点返回不够时间的话,那这个点就不能摘。#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;struct fr
2016-09-17 17:59:06 340
原创 |洛谷|模拟|P1181 数列分段Section I
http://www.luogu.org/problem/show?pid=1181水题不解释#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int main(){ int n,m; int ans = 1; int to
2016-09-17 17:57:44 251
原创 |洛谷|贪心|P1208 [USACO1.3]混合牛奶 Mixing Milk
http://www.luogu.org/problem/show?pid=1208贪心地优先选择最便宜的牛奶#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int p[5005], a[5005];void qs(int l, int r) {
2016-09-17 17:56:29 285
原创 |洛谷|DFS|P1605 迷宫
http://www.luogu.org/problem/show?pid=1605求方案数用DFS。#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;const int dx[4] = {1,0,-1,0}, dy[4] = {0,1,0,-1}
2016-09-17 17:54:59 282
原创 |洛谷|贪心|P1803 凌乱的yyy
http://www.luogu.org/record/lists?pid=P1803把比赛抽象为区间,然后按照区间右边排序,然后选择第一个区间,之后再选择不与第一个区间相交的区间即可,以此例推#include#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;str
2016-09-17 17:52:18 345
原创 |洛谷|NOIP2006|排序|P1059 明明的随机数
http://www.luogu.org/problem/show?pid=1059这里用的桶排序,自动完成排序+去重,因为生成的数不大于1000,数据不大#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int a[105];bool v[1
2016-09-16 20:07:32 332
原创 |洛谷|排序|P1781 宇宙总统
http://www.luogu.org/problem/show?pid=1781排序即可,注意要用字符串,注意字符串的交换方法以及比较大小,n#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int xh[25];char ch[25][1
2016-09-16 19:55:26 615
原创 |Hdu 1561|动态规划|The more, The Better
http://acm.hdu.edu.cn/showproblem.php?pid=1561此题与选课一题一样,讲解看http://blog.csdn.net/Darost/article/details/52555114#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));usin
2016-09-16 15:43:09 373
原创 |洛谷|动态规划|P2014 选课
http://www.luogu.org/problem/show?pid=2014(注意题目数据范围有误,建议开数组到2000)经典树形依赖背包问题。因为可能出现森林,所有要建立一个虚结点0,将森林中所有树的根节点作为结点0的儿子f[i][j]表示以i为根选j个课程f[u][j] = max(f[u][j], f[u][j-k]+f[v][k]); //v是u的儿子#in
2016-09-16 13:13:22 957 1
原创 |POJ 2342|动态规划|Anniversary party
http://poj.org/problem?id=2486树形DP基础题,具体看注释。设状态f[i][0]为i不来,f[i][1]为i要来f[r][1] += f[i][0]; //r要来,i为r的下属f[r][0] += max(f[i][0], f[i][1]); //r不来,i为r的下属#include#include#include#include
2016-09-14 23:27:39 398
原创 |洛谷|动态规划|P1282 多米诺骨牌
http://www.luogu.org/problem/show?pid=1282设f[i][j]为前i个骨牌差值为j的最小翻牌次数初始值全部赋值为∞,然后f[1][a[1]-b[1]]=0, f[1][b[1]-a[i]]=1;对应于第一张牌不翻和翻状态转移方程:f[i][j] = min(f[i-1][j-(a[i]-b[i])], f[i-1][j-(b[i]-a[i])]
2016-09-12 21:50:51 2639
原创 |洛谷|动态规划|P1108 低价购买
http://www.luogu.org/problem/show?pid=1108第一问就是最长下降子序列,第二行是下降子序列的个数(不能相同)当前i加上前面的方案数当且仅当相同的数只加最后一个用ok[j]表示价格为j的股票已经加过,逆推可以保证上面的条件#include#include#include#include#define ms(i,j) memset(i, j
2016-09-12 21:00:01 439
原创 |洛谷|动态规划|P1164 小A点菜
http://www.luogu.org/record/lists?pid=P116401背包方案数#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n,m;int a[105];int f[10005];int main(){ scanf
2016-09-10 21:05:14 410
原创 |洛谷|动态规划|P1616 疯狂的采药
http://www.luogu.org/problem/show?pid=1616和采药很像,这里只不过改成了完全背包#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int t,m;int ti[10005], pi[10005];int f[100005];
2016-09-10 21:02:32 336
原创 |NOIOJ|动态规划|2985:数字组合
http://noi.openjudge.cn/ch0206/2985/简单01背包方案数问题#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n,t;int a[30];int f[1005];int main(){ scanf("%d%d"
2016-09-10 21:00:24 394
原创 |NOIOJ|动态规划|9268:酒鬼
http://noi.openjudge.cn/ch0206/9268/ 思路同核电站一题,只是这里不是求方案数,一样的#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int a[705];int f[705][5];int main(){ int n
2016-09-10 20:58:40 509
原创 |NOIOJ|动态规划|9267:核电站
http://noi.openjudge.cn/ch0206/9267/设f[i][j]为前i个坑现在已经连续埋了j个核燃料的方案,f[1][0] = 1; f[1][1] = 1;#include#include#include#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n,m;long long
2016-09-10 20:56:07 691 1
原创 |洛谷|NOIP2009|模拟|P1067 多项式输出
http://www.luogu.org/problem/show?pid=1067看似简单的模拟题,但是许多细节要考虑。具体看代码注释,这样写比较清晰#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int n;int main(){ s
2016-09-07 22:00:05 289
原创 |洛谷|NOIP2011|模拟|P1003 铺地毯
http://www.luogu.org/problem/show?pid=1003不要用搜索,范围不行。用扫描的形式求解即可#include #include #include #define ms(i,j) memset(i, j, sizeof(i));using namespace std;int n;int x[10005], y[10005], g[10005]
2016-09-07 21:27:21 326
原创 |NOIOJ|动态规划|8462:大盗阿福
http://noi.openjudge.cn/ch0206/8462/f[i] = max(f[i-1], f[i-2]+a[i])f[i-1]表示不抢这家店,f[i-2]+a[i]表示抢这家店#include #include #include #define ms(i,j) memset(i, j, sizeof(i));typedef long long ll;usi
2016-09-04 17:08:37 1067
原创 |Tyvj|动态规划|1023 奶牛的锻炼
http://tyvj.cn/p/1023比较简单的区间DP,注意如果要休息,那就必须得一直休息到疲劳值为0,则f[i][0]可以从f[i-k][k]转移而来ps: 由于Tyvj现在503,代码取不下来,等好了以后再补
2016-09-03 22:32:09 761
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人