Abner

博观而约取,厚积而薄发,不可择焉不精,语焉不详!

Nyoj 791

#include #include #include using namespace std; int main() { int V, i, j; int arr[10]; while(~scanf("%d", &V)) {...

2014-03-31 21:52:51

阅读数:644

评论数:0

Nyoj 737 石子合并(一)

#include #include #include #include using namespace std; const int MAXN = 210; const int INF = 0xffffff; int dp[MAXN][MAXN]; int sum[MAXN]; vo...

2014-03-29 21:50:02

阅读数:1109

评论数:0

Nyoj 712 探 寻 宝 藏

双线程dp,可以看成两个人同时从同一个地点出发沿着相同的方向出发,要保证保证两个人的线路不能相交!如果人1和人2在相同的行或者相同列,那么他们一定会在相同的列或者行,因此保证他们不在相同的行,就可以保证他们的线路不会相交! dp[k][i][j] 表示:走到第k步,机器人1走到第i行,机器人2走...

2014-03-29 11:41:48

阅读数:591

评论数:0

Nyoj 708 Ones

#include #include #include using namespace std; const int MAXN = 10010; int dp[MAXN]; int MIN(int a, int b) { return a < b ? a : b; } ...

2014-03-28 21:35:57

阅读数:708

评论数:0

Nyoj 613 免费馅饼

#include #include #define MAXN 100010 int MAX(int a, int b, int c) { return ((a > b ? a : b) > c ? (a > b ? a : b) : c); } int m...

2014-03-28 17:17:50

阅读数:678

评论数:0

Nyoj 571 整数划分

第一行:将n划分成若干个正整数之和的划分数        我们设dp[i][j] 表示将正整数i划分成最大数不超过数j的划分数,显然我们有:        (1):如果划分的数中至少有一个有j,则有:dp[i][j] = dp[i-j][j];        (2):如果划分的数...

2014-03-28 16:01:46

阅读数:597

评论数:0

Nyoj 456

#include #include #include using namespace std; const int MAXN = 12; int num[MAXN]; int totalvalue; bool DFS(int sum) { if(sum == totalva...

2014-03-27 20:08:06

阅读数:546

评论数:0

Nyoj 515 完全覆盖 II

详细可以参考:http://blog.csdn.net/hearthougan/article/details/22077391 #include #include #include using namespace std; typedef long long LL; LL dp[1...

2014-03-27 12:09:22

阅读数:756

评论数:0

Nyoj 492 king

跟铺砖问题或者棋盘分割问题差不多,相同的思路来做! 首先交代一下DFS中变量的含义:i, j, curstatus, prestatus, num, b分别为:当前所在的行,j当前所在的列, curstatus当前所在行的状态,prestatus当前所在列所在行的前一行状态,num,本行放置ki...

2014-03-27 10:43:08

阅读数:646

评论数:0

Nyoj 469 擅长排列的小明 II

/** 由于第一个只能是1,则第二个数只能是2,3 当第二个数是2时,则相当于是对2-n的排列,相当于对1-(n-1)的排列,即arr[n-1]; 当第二个数是3时,第三个数只能是2,4,5 此时,当第三个数为2时,则是对3-n的排列,相当于对1-(n-3)的排列,即arr[n-3]    当第...

2014-03-26 16:05:51

阅读数:480

评论数:0

Nyoj 456 邮票分你一半

深搜超时了,但是http://blog.csdn.net/hearthougan/article/details/21940999这个题,却可以! 只有利用0-1背包的思想来求解了; 0-1解法:#include #include #include using namespace st...

2014-03-26 14:59:52

阅读数:502

评论数:0

Nyoj 435 棋盘分割(二)

主要还是参考周伟同学写的状态压缩思想:http://download.csdn.net/detail/hearthougan/7045453 另外可以参考一下相对简单的同类型题:http://blog.csdn.net/hearthougan/article/details/22077391 首先...

2014-03-26 14:02:27

阅读数:524

评论数:0

poj 2411 zoj1100

参考周伟的论文:http://download.csdn.net/detail/hearthougan/7045453 第i行的铺设方法,例如(i, j)位置的铺设受到(i-1,j), (i, j-1)影响,因此(i, j)的铺设可能影响到(i-1, j+1), (i, j+1)位置的铺设.首先交...

2014-03-25 17:35:37

阅读数:1021

评论数:0

Nyoj 325

//利用搜索来实现在均分(意思就是这个人的多少,多方就得多少)的情况下,使得两堆误差最小(总的质量之和减去两者均分量之和,就是在此种均分情况下的两堆差量)!#include #include #include using namespace std; const int MAXN = 25...

2014-03-24 11:19:34

阅读数:479

评论数:0

NYOJ 289 (0-1背包)

#include #include #include using namespace std; const int MAXN = 1010; int MAX(int a, int b) { return a > b ? a : b; } int dp[MAXN]; i...

2014-03-23 20:49:57

阅读数:676

评论数:0

NYOJ 311 完全背包

#include #include #include using namespace std; const int MAXN = 50010; const int MIN = -0xfffffff; int dp[MAXN], V; void Complete_Pack(int ...

2014-03-23 20:47:06

阅读数:614

评论数:0

Nyoj 269

首先题目读的费劲!另外不能在for循环中定义变量i,j之类的,否则会超时!!! dp[i][j] += dp[i-1][j-k], i >= 2,j   #include #include #include using namespace std; const int MAX...

2014-03-23 18:12:19

阅读数:531

评论数:0

Nyoj 246

#include #include #include using namespace std; const int MAXN = 110; int MAX(int a, int b) { return a > b ? a : b; } int Row_Col(ch...

2014-03-23 15:44:04

阅读数:548

评论数:0

Nyoj 252

dp[k],表示长度为k满足题目条件的‘01’串,有几个。如果第k位为0,则dp[k] = dp[k-1],如果第k位为1,那么第k-1位一定为0,则dp[k] = dp[k-2]; #include #include #include using namespace std; con...

2014-03-23 10:28:57

阅读数:617

评论数:0

NYOJ 236

先排序,找出最长递减序列; 题目: http://acm.nyist.net/JudgeOnline/problem.php?pid=236 #include #include #include #include using namespace std; const int M...

2014-03-22 23:07:20

阅读数:462

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭