上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 182 下一页
摘要: 题意:给出一个句子和要求整理后每行包含的字符数,要求将其整理为一种总badness最小的形式。设每个空格长度为n,单个空格的badness计算公式为(n-1)^2。总badness等于所有空格的badness的总和。给出整理后的格式。在badness最小的前提下,在分配一行中的空格时要让前面的空格尽量少。如果一个单词单占一行,badness为500。分析:动态规划。f[i]表示前i个单词的最小badness是多少。f[i]=f[i-j]+cost(i-j,j);。cost(a,b)表示从单词a+1到单词b的放在一行中最小badness是多少。并用from[i]存储f[i]是从哪个位置计算得来的 阅读全文
posted @ 2013-07-21 17:08 金海峰 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 题意:一些木棍,已知每个的长度,把他们全用上,去拼成一些长度相等的木棍,最小长度是多少。分析:dfs。先计算所有木棒的长度之和,然后枚举每个能被整除这个和的长度作为结果,并递归判断是否可行。递归过程需要加一些优化:1.先把木棍从大到小排序,大木棍的灵活性低,较难满足,因此先判断。2.在拼一个木棍时所使用的第一个小木棍如果不行,那么当前大木棍的长度可以被舍弃。#include #include using namespace std;const int maxn = 64;int t, n, stick[maxn], each, ok, total, num;b... 阅读全文
posted @ 2013-07-21 16:43 金海峰 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 分解质因数#include #include using namespace std;int sum(int n){ int ans = 0; while (n > 0) { ans += n % 10; n /= 10; } return ans;}bool work(int n){ int i, temp, ans1, ans2; ans1 = sum(n); temp = n; i = 2; ans2 = 0; while (i > n && n != 0) {... 阅读全文
posted @ 2013-07-20 17:57 金海峰 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 赤裸裸的最大流#include #include #include #include using namespace std;#define maxn 205#define maxm 205#define inf (1 0) { q[rear++] = v; vis[v] = true; dep[v] = dep[u] + 1; } } }}int dinic(int s, int t){ int ret = 0; while ... 阅读全文
posted @ 2013-07-20 17:53 金海峰 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个无向连通图,问该图的最小生成树是否唯一。分析:有一个定理,如果该图存在次小生成树(与原最小生成树不同,但长度小于等于原最小生成树),则一定可以通过从原最小生成树中去掉一个边并再入一个边得到。经过思考我们会发现,如果要加入一个v1和v2之间的新边,那么则应去掉原有的两点间通路(是唯一通路)中的一条边才能构成生成树。那么为了保证生成树最小,则应去掉原通路上最长的那条边。对于本题我们的做法是先求最小生成树,然后枚举每一条没有在最小生成树中的边,看加入树中并去掉通路上的最长边后是否与原最小生成数长度相同。那么如何才能知道要去掉的最长边有多长呢?我们可以在求最小生成树的时候使用Prim算法 阅读全文
posted @ 2013-07-20 17:48 金海峰 阅读(639) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 182 下一页