- 博客(27)
- 收藏
- 关注
原创 poj1837--dp
动态规划的思想主要是当前状态是由上一个状态决定的。每向天平中挂上一个重物,天平的状态就会改变,而这个状态可以由若干前一状态决定的。 这里的dp[i][j]表示挂上i个重物后平衡度为j。j大于0说明右端比左端重j,j小于0反之。距离c[i]的范围是-15~15,钩码重量的范围是1~25,钩码数量最大是20,因此j最大值为15*20*25=7500。但其他博客上提出左端的时候j会出现负数...
2018-09-23 20:16:03
270
原创 poj1159
【转】本文来自 庞老板 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/code_pang/article/details/8759600?utm_source=copy动态规划法。设字符串为S,长度为L,d[i][j]表示以第i个字符为首,第j个字符为尾的字符串构成回文最少需要添加的字符个数,i和j的初值分别为1、L。 如果S[i] == S[j],即字符...
2018-09-22 20:00:26
450
原创 poj1067维佐夫博弈
转自百度:威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从某一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况下是颇为复杂的。我们用(a[k],b[k])(a[k] ≤ b[k] ,k=0,1,2,...,n)(表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇...
2018-09-18 19:13:00
255
原创 poj 1144 求割点
详细见文章:https://blog.youkuaiyun.com/wmn_wmn/article/details/7893157再补一篇 讲解tarjan算法:作者:Treant出处:http://www.cnblogs.com/en-heng/
2018-09-09 09:52:46
216
原创 字典树&toj2935
字典树:又称单词查找树,Trie树。性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。百度上的代码:#define MAX 26//字符集大小typedef struct TrieNode{ int nCount;//记录该字符出现次数 st...
2018-09-08 11:02:21
140
原创 MongoDB mark
show dbs:查看全部数据库use mongo:用某一数据库db.paper.find().pretty():查找 中间可以加key的限定db.collection.find(query, {_id:0, title: 1, by: 1}) 限定出现的keydb.paper.find().count() 统计总数 ...
2018-08-02 00:02:33
302
原创 十字链表的创建
#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef int Status;typedef struct OLNode{ int col, row; ElemType value; struct OLNode *down, *right;}OLNode, *OL...
2018-04-15 22:14:33
1045
转载 poj2488
以下是转载内容 侵删 只是学习记录一下#include#include #include using namespacestd;int cases, p, q, i;void dfs(int x,int y, int num);//num用来记录是否全部走过即路径长度const int MAX_N =27;//字典序最多多
2017-11-09 22:47:23
273
原创 poj1017
//// main.cpp// 1017//// Created by Jasmine wang on 05/11/2017.// Copyright © 2017 Jasmine wang. All rights reserved.//#include using namespacestd;int m
2017-11-07 08:17:16
202
原创 poj1657
//// main.cpp// 1657//// Created by Jasmine wang on 05/11/2017.// Copyright © 2017 Jasmine wang. All rights reserved.//#include #include using namespace
2017-11-05 22:33:02
279
原创 pos1028 栈
int main(){ stack s1,s2; string cmd,URL; s1.push("http://www.acm.org/"); while(cin>>cmd && a[0]!='Q')
2017-11-04 22:37:54
249
原创 poj1006-枚举
#includeusing namespacestd;int main(){ int p, e, i, d, k; int ans, no; while(cin>>p>>e>>i>>d) { ++ no; if(p==-1 && e==-1 && i==-1 && d==-1
2017-09-25 21:58:41
436
原创 poj1061-exgcd
网上找答案 发现这道题需要用到exgcd的知识 先把百度的gcd exgcd贴上来:gcd函数就是用来求(a,b)的最大公约数的。gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)一个有用的公式:gcd(a,b)=gcd(b,a mod b)C++语言实现123
2017-09-24 22:04:58
265
转载 素数打表
希望得到高效的素数表 以下是粘贴别人的 自己运行了一下 大概知道流程 但还是没有太看懂#include#include#include#include#includeusing namespace std;#define M 100bool visit[10100000];int prime[10000000];void table(){ memset(visit,
2017-09-17 21:33:08
335
原创 poj2739
#include #include#define N 10005#define MAXN 2000using namespacestd;int input, ans;int prim[MAXN]={ 2,3,5,7,11,13,17,19,23,29, 31,37,41,43,47,53,59,61,67,71,
2017-09-16 22:34:22
288
原创 poj3624
典型的01背包问题 前面说过了但是有超内存的情况 所以换成了只涉及价值的一位数组哎呀#include using namespacestd;int N, M;int w[3500], v[3500];//int dp[3500][12900];int bag[12900];int main(int argc,
2017-09-09 21:59:05
465
原创 神奇的口袋
原题:有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。一个背包问题 依然是两种解决办法 递推和动归
2017-09-09 21:16:14
266
原创 poj1088
//// main.cpp// poj1088//// Created by Jasmine wang on 05/09/2017.// Copyright © 2017 Jasmine wang. All rights reserved.//这道题是典型的递归 事实上我用的递推。郭老师给出了两种方法,但首先都是确定长度函数l[][]
2017-09-06 21:10:54
283
原创 最佳加法表达式
//子问题:假定数字串长度是n将一个加号添加在第i个数字后整个式子的最小值等于在前i个数中插入m-1个加号所能形成的最小值加上第i+1到第n个数字所组成的数的值// v(m,n)表示表达式的最小值//m=0 n个数字的值//n//v(m,n)=min(v(m-1,i)+num(i+1,n))#include #include usin
2017-09-02 21:59:01
703
原创 poj1458
还是一道动态规划 整体思路还是分成子问题 用表格的方法看起来比较清晰如果第i-1和第j-1项相等 则maxlen=maxlen[i-1][j-1]+1 这是很显然的如果不相等 那么(i,j)等于该项左边数字和上面数字取最大值(maxlen[i][j-1],maxlen[i-1][j])在mooc中老师证明了一下一定等于两个数中的一个 这里就不写下来了 仔细想一想也可以想出来了
2017-09-01 21:47:44
531
原创 最大上升子序列
运用递归的方法 将整个问题分成一堆子问题即转化为以第i(i状态就是n个数 储存长度的数组是maxlen[MAX] 转化方程是如果a[j]啊 搞懂了 因为同一个i中循环了不同的j 总要取一个最大值作为当前i的长度 果然还是手写一遍比较好#include #include #include using namespacestd;int mai
2017-09-01 20:49:13
252
原创 poj1163
又一个动态规划 在递归的时候还是出现了问题 对于maxsum和max产生了混淆 还是要把整个程序在纸上写出来才能知道全部过程 是从三角形顶端一直往下走再返回的过程#include #include using namespacestd;int n, dp[105][105];int Maxsum[105][105];//这里是动态规划int ma
2017-08-31 21:38:10
202
原创 dp-最长公共子序列
比较简单的动态规划 但是输入的时候出现了问题不熟悉c++的输入 还是字符串没有搞懂 可怕#include using namespace std;int main(int argc, const char * argv[]) { int i,j,n,m,dp[1005][1005]; char s[1005],t[1005];
2017-08-31 18:55:42
273
原创 poj3069
贪心算法 从第一个点开始,先找到半径内的最远点作为标记,再从标记点开始找到标记点为圆心的圆内的最远点,这样记为1次;重复上述步骤直到i>=npoj似乎不能识别sort 哎,,#include using namespacestd;int main(int argc,const char * argv[]) { int r,n,i,ans =
2017-08-29 21:54:51
314
原创 poj2386 DFS
深度优先搜索核心的dfs程序就是每遇到一个W首先将它变为.然后扩展到周围8个位置坐标检验是否为W 若为W就继续搜索 直至周围都是. 算作一次dfs 最后统计dfs的次数需要注意的是输入 可以直接输入字符串;或者按照字符输入,但要在每一行末尾接收一个回车#include int N,M;char field[200][200];/*void dfs(i
2017-08-29 21:10:14
305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人