POJ水水水
chchlh
CS学生,爱读书,爱学习,爱互联网。
展开
-
网易2016两道题Assuming Digits && Best Compression Algorithms
趁热来一发。下面代码没有经过测试,因为其实我没有参加。。。#include #include #include #include #include #include #include #include #include #include #includeusing namespace std;int num[4];int solve(string a){原创 2015-09-15 22:14:42 · 748 阅读 · 0 评论 -
poj3259 Bellman_ford算法
//poj3259 类似 poj1860, 探求能否出发,然后通过虫洞在出发前的时间点回来 //如果单源最短路径构造之后,发现还是可以继续构造下去,说明某条路可以实现时间一直减的效果//无限次走这条路,就可以达到目标。 //dist的初始化大小搞错了 害的我WA了1次,RE了2次。。 #include #include using namespace std;int num; //原创 2014-11-25 21:24:16 · 744 阅读 · 0 评论 -
poj2632
//poj2632 机器人路径规划 本来可以一次AC的,,,但是输出漏了一个空格 #include #include using namespace std;int x[105];int y[105];int c[105];bool crash;bool wall(int robotNum, int a, int b){ if(x[robotNum] a || y[robot原创 2014-11-23 20:44:10 · 643 阅读 · 0 评论 -
poj1573
//poj1573 和poj2632一样,又是机器人路径规划 模拟法+递归 //给定机器人开始点,根据格子的指令行走,输出走出格子需要的步数 或者输出循环的详细信息 #include #include using namespace std;char ins[15][15];int mark[15][15]; int step[15][15];bool deadCircle = f原创 2014-11-23 21:42:08 · 584 阅读 · 0 评论 -
poj1068
//poj1068 P序列代表每个右括号左边的左括号的数量 W序列代表 //通过poj3295,我觉得还是得用栈 + 递归的思路解题 272K0MS#include #include using namespace std;int stack[1005];int top = 0;bool mark[1005];void deal(int i, int j){ if(j > i)原创 2014-11-23 18:37:58 · 563 阅读 · 0 评论 -
poj2996
//poj2996 模拟法 白 大写 黑 小写 白. 黑: 8-1 a-h#include #include using namespace std;char c[17][33];int row[2][6][10]; //最多6个兵种, 王后车象马兵,最多有10个车/马/象 char col[2][6][10];int num[2][6];char w_role[5] = { '原创 2014-11-24 17:56:15 · 683 阅读 · 0 评论 -
poj2993
//poj2993 poj2996 的逆向题目 #include #include using namespace std;char c[17][33];bool first(int k){ if(k == 1 || k == 5 || k == 9 || k == 13) return true; return false;}void init(int myRow, in原创 2014-11-24 19:54:55 · 537 阅读 · 0 评论 -
poj1860 Bellman_ford算法
各种小错误害我wa了好多遍。。饿着肚子搞啊搞终于AC了1860Accepted264K16MSC++1292B//poj1860 图论 只要有一个环,实现增加钱的目的,无限次循环这个环然后退出即可。//Bellman_ford无限松弛者就是正环。参考别人代码思路 #include #include using namespace std; double dist[110];i原创 2014-11-25 18:16:01 · 851 阅读 · 0 评论 -
poj1062
//poj1062 DP解法 三维DP,不用dij,不到30行代码,吓死我了 //d[i][j][k]代表得到第I个物品的最小花费 等级范围限制在j和k之间。j和k的范围随着交易变小 //j是最低范围,k是最大范围(没有考虑m的情况下)代表旅行家交易过的最低等级和最高等级。 //第一个点单枪匹马,通过递归不停更新自己的最小值。 //这份代码最为厉害,其他的代码,比如小优的代码,我看了一下,原创 2014-12-03 17:12:43 · 669 阅读 · 0 评论 -
poj3295 栈+递归的使用
//poj3295 判断是否永真式 情况很多很复杂 必须用特殊的数据结构//栈+递归的使用 5个变量取值的全部情况 32种情况都是真才是tautology //好开心,居然一次AC。。 #include #include #include using namespace std;char stack[105];int top = 0;string ss[32] = { "00原创 2014-11-19 21:16:22 · 670 阅读 · 0 评论 -
poj2586
//poj2586 读题好难,我都怀疑自己英语了。。。//给你盈利和亏损额度,每5个月发布一次,必须总的是亏的,但是保证亏的最少 1-5 2-6... //求这样下去12个月的最大盈利是多少 ?(虽然5个月都会亏, 但是连续下来时有可能盈利的) //wa了一次,没有考虑到全年都是亏损的情况 #include #include #include using namespace std;原创 2014-11-19 18:51:36 · 564 阅读 · 0 评论 -
poj1753
//poj1753 BFS + 位操作 参考别人代码 还是很厉害 #include using namespace std;unsigned short qState[65535];int step[65535];bool flag[65535];int top = 0;int rear = 0;void Init(){ char c; unsigned short tem原创 2014-11-16 17:49:01 · 545 阅读 · 0 评论 -
poj2739
//poj2739 还是关于素数 打表先。 #include #include #include #include using namespace std;int a[10005];bool prime(int k){ for(int i = 2; i < sqrt(k*1.0) + 1; i++) { if(k % i == 0) { return false;原创 2014-11-16 14:57:31 · 472 阅读 · 0 评论 -
poj2262
//poj2262 以为素数又需要打表,没想到这样也可以过,看来1000000还比较小#include #include #include using namespace std;//int a[1000005];bool prime(int n){ for(int i = 2; i < sqrt(1.0* n) + 1; i++) { if(n % i == 0) r原创 2014-11-16 14:58:31 · 464 阅读 · 0 评论 -
poj1503
//poj1503 这个是锻炼我string的加法吧 写得比较龊,本来string b应该不写的#include #include #include #include using namespace std;int main(){ string a; char ans[105]; getline(cin, a); string b; int ok = 1; while(a原创 2014-11-16 14:58:58 · 484 阅读 · 0 评论 -
ACM训练方案:
OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法.转载 2014-11-16 17:52:32 · 466 阅读 · 0 评论 -
poj1083
//poj1083 想了很多,尤其是贪心算法,结果很多情况,一直想用递归贪心解决。最后失败。//失败的数据集: 10 100, 50 120, 130 200, 110 135, 121 124,结果是20//最后采用小优的方法#include #include using namespace std;int s[205], t[205];int room[401];int mai原创 2014-11-16 14:57:56 · 667 阅读 · 1 评论 -
poj2255
//poj2255 自己思路很乱,看一下别人的代码,真是精致.模仿写了一下#include using namespace std; char a[27];char b[27]; int n = 0;void deal(int i , int j){ if( i > j) return; int k; for(k = i; k <= j; k++) { if(a[n]原创 2014-11-16 15:30:10 · 459 阅读 · 0 评论 -
poj1328 递归+区间覆盖问题
//题意:给定岛的数量和坐标,求实现覆盖所有岛的最少的雷达数 //poj1328 前期考虑得太简单,以为只需要满足一个点,后面就自动满足。//活动选择是在一段时间内尽可能多的安排不冲突的活动//最后想起了重复段,又想起了小优 poj1083 每个点都有一段覆盖的地方 最大的重复覆盖的地方可以建立一个雷达 //继续优化想法:排序,从左往右看,当区间左端点大于右边所有区间的最小右端点时,答案加原创 2014-11-19 12:30:11 · 645 阅读 · 0 评论 -
poj1125 Floyd算法
//poj1125 传播图 怎样传播才能最快让所有人都获知消息 //floyd算法 如果AB + BC < AC, AC = AB + BC 一次ac,我突然感觉自己好厉害#include #include #include #include using namespace std;int inf = 100000;int t[105][105]; int max1[105];原创 2014-12-03 21:45:51 · 665 阅读 · 0 评论 -
poj2253 变形Floyd
//poj2253 求青蛙最小的一跳的距离。同时又可以到达目的地。//构造一个全部点的距离相邻矩阵 //然后使用变形的Dijkstra 如果存在 AB < AC BC < AC, 则AC == max(AB, BC) //前两次TLE...MD 后面发现原来是多加了一层松弛,去掉,然后对换遍历的顺序就可以了。 #include #include #include #include原创 2014-12-03 20:07:47 · 843 阅读 · 0 评论 -
poj1258 kruskal算法+并查集 只要47MS我也是醉了
//poj1258 kruskal算法+并查集 为什么只要47MS? #include #include #define inf 100005using namespace std;int max1;int father[105];int rank[105];struct edge{ int st; int ed; int w;}e[10005];int top = 0原创 2014-12-06 16:41:13 · 639 阅读 · 0 评论 -
poj3026 这道题要注意输入w, h之后的空格 BFS+prime
其实做完这道题整个人都不好了,感觉自己的BFS写得还好,应该不会错。结果WA了2次,看Disscus发现可能数组要开大点,结果还是WA。然后看小优的博客,发现她也说道空格的事情,我的VS2013支持gets_s(),所以就把getchar()改成gets_s(temp),于是AC乎。//poj3026 分小组搜索外星人,在起点或者搜到一个外星人就可以发生分组//其实还是一个MST问题 只原创 2014-12-07 21:20:20 · 928 阅读 · 0 评论 -
poj1094贴一份TLE的代码,以后有可能再优化。
//poj1094 写了两个DFS,TLE 话说我输入一次它就来两个DFS,能不TLE吗?//我看Discuss有测试数据,跑了一下,真的很慢,脑残的孩子果然只有慢慢学。//贴一份TLE的代码,备份一下,说不定哪天我可以继续优化,然后AC。#include #include #include using namespace std;int top = 0;bool isSourc原创 2014-12-10 13:06:17 · 630 阅读 · 0 评论 -
poj1094 拓扑排序,栈+入度,方法很难想到,
//poj1094 拓扑排序 栈+入度//若A比B,C,D小,A的度就是3.只要通过不断缩小B/C/D的度,然后减小A的度,当A的度是0的时候,就可以存进栈里面了//题解的强大之处在于灵活利用了入度这个概念,存在解的时候,必须满足只有一个单源点,沿着解这条路走,必然是单源点后面跟着入度为1的点,//然后删除单源点,更新入度,重复,又是仅有一个单源点,且后面跟着入度为1的点。最后仅剩一个单源点原创 2014-12-10 15:16:46 · 1456 阅读 · 1 评论 -
poj3020 匈牙利算法+公式:二分无向图的最小路径覆盖 = 顶点数 - 最大二分匹配数 / 2
这道题想了很久,预先知道是匈牙利算法,但是呢,实在没法和二分图联系起来,尤其是怎么想最大点集覆盖和最大匹配都不行。磨蹭两个小时,跑去看答案,小优的答案很详细,大家自己看吧:http://blog.csdn.net/lyy289065406/article/details/6647040基本的思想是:无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2构造一个无向二分图,原创 2014-12-27 17:14:13 · 1082 阅读 · 0 评论 -
poj1004 水题一道
//poj1004 千年大水题#include #include using namespace std;int main(){ double a; double b = 0; for (int i = 0; i < 12; i++) { cin >> a; b += a; } b /= 12.0; cout <<fixed << setprecision(2) <原创 2014-12-10 14:56:25 · 732 阅读 · 0 评论 -
poj3041 最小点覆盖==二分图最大匹配 匈牙利算法求解最大匹配问题(运用DFS)
//poj3041 二分图 可以做一款手势消灭星星的小游戏//第一次见到二分图的匈牙利算法,需要好好学习一下,否则就只会复杂度为边数的指数级的方法,还WA。。。//最小点覆盖:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖图的所有的边。//最小点覆盖数 = 最大匹配数//用增广路求最大匹配的方法----匈牙利算法//若P是图G中一条连通两个未匹原创 2014-12-13 19:10:26 · 956 阅读 · 0 评论 -
poj2031 连接所有的球,让连接的线段和最小。
//poj2031 连接所有的球,让连接的线段和最小。 //记录所有两个球之间的线段。 最小生成树 #include #include #include #include using namespace std;double inf = 10000;double x[105], y[105], z[105], r[105];double weight[105][原创 2015-02-12 13:48:01 · 720 阅读 · 0 评论 -
poj2485 prime算法+距离表
//poj 2485 还是先用prime,写起来比较快 #include #include #define inf 65537using namespace std;int weight[501][501];int dist[501];bool mark[501];int max1;int prime(int n){ dist[0] = 0; mark[0] = true;原创 2014-12-06 16:01:42 · 597 阅读 · 0 评论 -
poj1251 prime算法 + 距离表
//poj1251 先用prime做 后面还要用Kruskal算法来做 #include #define inf 101using namespace std;int vertex[28];int weight[28][28];int dist[28];bool mark[28];int sum;int prime(int n){ dist[0] = 0; mark[0]原创 2014-12-06 14:56:36 · 669 阅读 · 0 评论 -
poj1035 字典匹配
//终于过了,主要思想是强制计算所有可能长度对应的子字典列表。//用空间换时间 1324K 938MS #include #include using namespace std;string dic[10005];string check;int len[10005];int indexLen[16][10005];int cntt[16];int subList[16][1原创 2015-01-09 20:55:16 · 602 阅读 · 0 评论 -
poj1789 prime算法+距离表
//poj1789 抄别人kruskal代码始终让我不爽,决定至少用prime过这道题。 //开一个距离表维护所有未加入党组织的点到党组织的距离。//每次吸纳最短成员,更新这个距离表 //没有使用优先队列,下次再发一篇博客,还是写这道题 //原来时间限制是2000MS,这题目现在是1344MS过 #include #include #include #incl原创 2014-12-06 14:07:21 · 710 阅读 · 0 评论 -
poj1789 Kruskal算法,TLE7次,无奈之下复制代码。参考之后还是TLE,不相信,贴了提交,竟然750MS过
#include #include #include #include using namespace std;#define MAX 2005char str[MAX][8];int n,father[MAX],rank[MAX],k;//k为边数struct node{ int st; int en; int we;}edge[MAX*转载 2014-12-05 21:49:47 · 1119 阅读 · 1 评论 -
poj1251 Kruskal算法+并查集
//poj1251 用Kruskal算法来做 顺带学习并查集 makeset union find #include #include #define inf 101using namespace std;int father[28];int rank[28];int sum;struct edge{ int st; int ed; int w;}e[400];int原创 2014-12-06 15:29:50 · 673 阅读 · 0 评论 -
poj2485 Kruskal算法+并查集 922MS险过
//poj 2485 kruskal算法+并查集 TLE 922MS擦线(1000MS)过 #include #include #define inf 65537using namespace std;int max1;int father[501];int rank[501];struct edge{ int st; int ed; int w;}e[125255];i原创 2014-12-06 16:22:51 · 573 阅读 · 0 评论 -
poj1258 prime算法+距离表 还是47MS,搞不懂,过了就好。
//poj1258 prime算法+距离表 #include #include #define inf 100005using namespace std;int dist[105];int mark[105];int weight[105][105];int sum;int prime(int n){ dist[0] = 0; mark[0] = true; for(原创 2014-12-06 16:49:22 · 582 阅读 · 0 评论 -
poj2240 变形floyd算法
//poj2240 还是汇率不同进行套现的问题。Bellman_ford算法//多次松弛,变形floyd算法。如果 AB + BC > AC 则 AC = AB + BC //意思是:如果存在某些路径比从A直接转换到C,可以获得更多C的钱,那么就松弛AC这条路径。(A==C时就意味着可以挣钱) //WA了四次,都怪打前面代码(getIndex)时候有点犯晕。。。本来可以一次过的。。所以打代原创 2014-12-05 15:10:30 · 950 阅读 · 0 评论 -
poj1936 明明用string find的水题,wa了几次。。
//最长公共字串 不能少于3种base 我表示很不爽,为了输入的形式WA了四五遍。 #include #include using namespace std;int stack[100005];string a, b;int main(){ while (getline(cin, a, ' ')) { getline(cin, b); memset原创 2015-01-10 20:07:49 · 891 阅读 · 0 评论 -
poj 3507
//poj 3507 居然还有求平均数的水题 看测试没有注意到去掉最高分和最低分 wa了一场 #include #include using namespace std;int main(){ int a[6]; bool ok = true; while(ok) { ok = false; int sum = 0; int max = 0; int min =原创 2014-11-12 12:56:14 · 722 阅读 · 0 评论