2014年4月30日

南阳理工OJ 15 括号匹配

摘要: 思路:动态规划,设dp[i][j]表示第i个字符到第j个字符所需要的最少匹配数,则:(1),如果从第i到j-1个字符中没有一个与第j个字符匹配,那么状态转移方程为 dp[i][j] = dp[i][j-1] + 1 (2),如果在第i到j-1字符中存在与第j个字符匹配的字符(记为k,且把所有满足条件... 阅读全文

posted @ 2014-04-30 18:38 ~Love() 阅读(153) 评论(0) 推荐(0)

POJ 1200 Crazy Search

摘要: 思路:利用Karp-Rabin算法的思想,对每个子串进行Hash,如果Hash值相等则认为这两个子串是相同的(事实上还需要做进一步检查),Karp-Rabin算法的Hash函数有多种形式,但思想都是把字符串映射成一个数字。本题hash函数是把字串转化为NC进制的数(实际上程序中计算结果已经被转换为1... 阅读全文

posted @ 2014-04-30 18:38 ~Love() 阅读(96) 评论(0) 推荐(0)

POJ 1002

摘要: 思路:很坑爹的一道水题么,题目没说字符串有多长,一开始开的长度是30,一直RE。另外如果没有重复的输出的是No duplicates.,注意有句点。。。两种解法:map或者二叉搜索树中序遍历一次,维护一个cnt(记录次数)域。#include#include#include#include#incl... 阅读全文

posted @ 2014-04-30 18:38 ~Love() 阅读(125) 评论(0) 推荐(0)

POJ 3013

摘要: 思路:ans = 每条边(u,v)*v的子树节点的w = 所有的dist[v]*w[v]之和;#include#include#include#include#define MAX 500005const long long int INF = 100000000000000;using name... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(120) 评论(0) 推荐(0)

POJ 3126

摘要: 思路:BFS,最先找到的必定是最小解。#include#include#include#include#include#include#define MAX 11111using namespace std;int isprime[MAX], pre[MAX];queueq;void Chose_P... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(102) 评论(0) 推荐(0)

POJ 2570

摘要: 思路:floyd + 位运算。map[i][j]的二进制位前26位表示i到j路径里面字母a-z的存在情况,为1说明该字母存在,为0不存在。#include#include#include#include#define MAX 205using namespace std;string str;int... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(102) 评论(0) 推荐(0)

Codeforces 14D

摘要: #include#include#includeusing namespace std;const int MAX = 205;int dep, n, map[MAX][MAX];int dfs(int u, int v){ int max1, max2, path_max; max1 ... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(105) 评论(0) 推荐(0)

Codeforces 302D

摘要: 思路:最短路,map[i][j] = d*(|x[i]-x[j]| + |y[i]-y[j]|) - add[i]#include#include#include#include#includeusing namespace std;long long int map[105][105],vis[1... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(115) 评论(0) 推荐(0)

POJ 3009

摘要: #include#include#include#define MAX 30 using namespace std; int map[MAX][MAX]; const int dir[4][2]={-1, 0, 1, 0, 0, -1, 0, 1}; int h, w, ans; void dfs... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(88) 评论(0) 推荐(0)

POJ 1088

摘要: 思路:记忆化搜索 + DP#include#include#include#define MAX 105using namespace std;const int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};int map[MAX][MAX], vis[MAX][M... 阅读全文

posted @ 2014-04-30 18:37 ~Love() 阅读(95) 评论(0) 推荐(0)

HDU 2682

摘要: 思路:由于题目对能相连的点有限制,必须将这些点处理,能相连的点合并到一个集合中,最后查看是否所有点都在一个集合里,若都在说明是一个连通图,存在最小生成树,否则图不连通,不存在最小花费。#include#include#includeint CityHappy[605],vis[605];int is... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(129) 评论(0) 推荐(0)

HDOJ 1863

摘要: #include#includeint father[105],depth[105];int dist[105],map[101][101];int vis[105],n;void init_B(){ int i; for(i = 1;i depth[y]) fa... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(84) 评论(0) 推荐(0)

HDOJ 1233

摘要: 思路:入门题,求最小生成树;#include#includeint vis[101],dist[101];int map[101][101];void init(int n){ int i; memset(vis,0,sizeof(vis)); for(i = 1;i > 1;i ... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(94) 评论(0) 推荐(0)

HDOJ 1879

摘要: 思路:求最小生成树(最小生成树就是权值之和最小的极小连通子图) ,注意将已修过的边的权值置为0;数据结构:由于数据量小,可以用临接矩阵直接存储图#include#includeint vis[101];int price[101];int map[101][101];void init(int n)... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(97) 评论(0) 推荐(0)

HDU 1881

摘要: 思路:一开始以为rating相同的点就直接比较rp然后建图,后来想想不对,因为这样发现不了冲突。后来一想对于rating相同的点可以不用排序,因为对于这些点,他们的rp必然不相同,也就是说在这些点的内部必然存在唯一的且合理的排序,因此只需将要将这些点合并成一个点即可,需要用到并查集的知识。把所有点按... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(102) 评论(0) 推荐(0)

HDU 2647

摘要: 思路:拓扑排序#include #include typedef struct { int to; int next; }EdgeNode; EdgeNode Edge[20005]; int head[10005],node[10005]; int cnt,inde... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(97) 评论(0) 推荐(0)

HDU 3342

摘要: #include#includeint degree[101],vis[101],map[101][101];int main(){ int n,m,a,b,i,j,temp,flag; while(~scanf("%d%d",&n,&m) && n) { memse... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(101) 评论(0) 推荐(0)

HDU 1285

摘要: #include#includeint degree[505],vis[505],map[501][501];int main(){ int n,m,a,b,i,j,min; while(~scanf("%d%d",&n,&m)) { memset(degree,0,... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(102) 评论(0) 推荐(0)

HDU 1061

摘要: #include#includeint a[10];int main(){ int T,n,i,k,temp,b,t; scanf("%d",&T); while(T--) { memset(a,0,sizeof(a)); scanf("%d",&... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(125) 评论(0) 推荐(0)

HDU 2122

摘要: 思路:prime,考虑重边!!!#include#includeint map[1001][1001],dist[1001];int vis[1001],n;void init1(){ int i,j; for(i = 0;i dist[j]) { ... 阅读全文

posted @ 2014-04-30 18:35 ~Love() 阅读(131) 评论(0) 推荐(0)

导航