上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 182 下一页
摘要: 题意:一些木棍,已知每个的长度,把他们全用上,去拼成一些长度相等的木棍,最小长度是多少。分析: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 undefined2024 阅读(419) 评论(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 undefined2024 阅读(247) 评论(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 undefined2024 阅读(181) 评论(0) 推荐(0)
摘要: 题意:给定一个无向连通图,问该图的最小生成树是否唯一。分析:有一个定理,如果该图存在次小生成树(与原最小生成树不同,但长度小于等于原最小生成树),则一定可以通过从原最小生成树中去掉一个边并再入一个边得到。经过思考我们会发现,如果要加入一个v1和v2之间的新边,那么则应去掉原有的两点间通路(是唯一通路)中的一条边才能构成生成树。那么为了保证生成树最小,则应去掉原通路上最长的那条边。对于本题我们的做法是先求最小生成树,然后枚举每一条没有在最小生成树中的边,看加入树中并去掉通路上的最长边后是否与原最小生成数长度相同。那么如何才能知道要去掉的最长边有多长呢?我们可以在求最小生成树的时候使用Prim算法 阅读全文
posted @ 2013-07-20 17:48 undefined2024 阅读(642) 评论(0) 推荐(0)
摘要: 题意:两个青蛙在赤道上跳跃,走环路。起始位置分别为x,y。每次跳跃距离分别为m,n。赤道长度为L。两青蛙跳跃方向与次数相同的情况下,问两青蛙是否有方法跳跃到同一点。输出最少跳跃次数。分析:扩展欧几里德。设两青蛙跳了s步。有方程:(x+n*s)-(y+m*s)=k*L。整理得:(n-m)*s+L*(-... 阅读全文
posted @ 2013-07-19 21:57 undefined2024 阅读(1709) 评论(0) 推荐(0)
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 182 下一页