动态规划
Myriad_Dreamin
这个作者很懒,什么都没留下…
展开
-
Codeforces Testing Round #14 (Unrated) B - Door Frames
用dp做的,当时没有细想,大概会有更简单的办法的。#include <iostream>#define min(_x,_y) ((_x<_y)?(_x):(_y))using namespace std;bool ok[10][10]={false};int need[10][10]={0};int main(){ int length,r_l,up,i,j,k,l; ci原创 2017-12-23 00:20:06 · 477 阅读 · 0 评论 -
2018 BUPT Winter Training #7 Div.2
A - Vacations对不起,这题我写过hh,ctrl+c完事。DP一下就行了。#include <cstdio>#include <algorithm>using namespace std;int dp[105][3]={0};int main(){ int n,toda; scanf("%d",&n); for(in...原创 2018-03-07 22:32:16 · 200 阅读 · 0 评论 -
2018 BUPT Winter Training #2 Div.2
A - 数塔给你一个数字金字塔,每个节点有值a" role="presentation" style="position: relative;">aaa,求根节点到叶节点的值的最大和 以矩阵的方式存储,有: dp[i][j]=a[i][j]+max(dp[i−1][j],dp[i−1][j−1])" role="presentation" styl原创 2018-01-31 17:22:51 · 297 阅读 · 0 评论 -
2018 BUPT Winter Training #1 div.1
修电脑回来已经三点了…如果多一个半小时应该能够多写一题两题的,说到底还是水平太菜.. 可能有空会补C.E.X三道题,G题待定A - One Bomb题意 只有一个炸弹可以消去i行j列上的所有的墙,问能否消去所有的墙。 思路:统计行列wall总数,在(i,j)上放置一个炸弹,iswall表示二元谓词判断(i,j)是否是墙,消去的墙的数目des=row[i]+col[j]−i原创 2018-01-30 18:44:39 · 255 阅读 · 0 评论 -
北航OJ 0050~0052 0055 0056 0064 0065 2014级第二次算法上机
0050 零崎的补番计划Ⅰ 找第k大元素。 思路:分治。#include #include int a[1000005],b[500005],c[500005];void find(int* d,int* e,int* f,int k,int pi){ int i,lower=0,bigger=0,num=*(d+1+pi/2);原创 2018-01-05 16:52:09 · 585 阅读 · 0 评论 -
洛谷P1006 传纸条
双线程dp,一来一回可以看作两个人从同一个起点走到同一个终点#include <iostream>#include <algorithm>#define f(_x,_y) for(_x=1;_x<=_y;_x++)using namespace std;int map[55][55]={0},dp[55][55][55][55]={0},m,n;int main(void){ in原创 2018-01-04 18:17:08 · 196 阅读 · 0 评论 -
洛谷P1005 矩阵取数游戏
也是从这里开始更会写高精度运算了。 贪心算法和dp很简单,只是加上了高精度而已。#include <iostream>#include <algorithm>#include <cstring>#define mem(_x) memset(_x,0,sizeof(_x))#define fs(_x,_y) for(int _x=1;i<=_y;_x++)#define fb(_x,_y)原创 2017-12-30 23:06:40 · 245 阅读 · 0 评论 -
洛谷P1004 方格取数
双线程dp,前两个维数是第一个人的坐标,后两个维数是第二个人的坐标。#include <iostream>#include <algorithm>#define f(_x) for(int _x=1;_x<=n;_x++)using namespace std; int dp[10][10][10][10],num[10][10],x,y,number,n;int main(){原创 2017-12-30 23:00:09 · 266 阅读 · 0 评论 -
洛谷P1002 过河卒
貌似是我做的第一道dp题,hh岁月如水,很简单就不说啥了#include <cstdio>long long step[25][25];bool map[25][25];int main(){ int b1,b2,m1,m2; scanf("%d%d%d%d",&b1,&b2,&m1,&m2); map[m1][m2]=map[m1-1][m2+2]=map[m1+2]原创 2017-12-30 22:52:18 · 371 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) E - Party
状态压缩dp 如果本来就在关系网之内,最小步是0,上一个状态是-1(不存在) 如果通过新的关系到达的步骤小于之前的步骤,就更新。#include <iostream>#include <cstring>using namespace std;const int init=-1;int minstep[1<<22],friends[22];struct list{ int las原创 2017-12-24 12:15:52 · 253 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 56 (Rated for Div. 2) 1093F. Vasya and Array
有一个长度为nnn的的数列,aia_iai的值域只有kkk个元素。一个数列有一些数字已经填上。现在要求数列连续的数字长度不能超过lll,问所有不同的数列的个数有多少个。1.考虑所有的数字都没填上。设dp[i][j][s]dp[i][j][s]dp[i][j][s]为第iii个位置填入第jjj种颜色且已经有连续的sss个数字的方案数。显然:那么:dp[i][j][s]=dp[i−1][j]...原创 2018-12-16 15:27:28 · 217 阅读 · 0 评论