2011年6月27日
摘要: 题意:第一行:货币的总的种类,货币中心的数量,所持有的货币种类,持有该种类货币的数量后M行:货币a,货币b,汇率Rab, 手续费Cab, 汇率Rba, 手续费Cba思路:用spfa找到,看是否有负权回路(用count[]计数,记录每个结点进队次数,超过|n|次表示有负权),如果有,则表示可以一直增加自己的钱,用bellman也可以实现虽然是A了,感觉数据挺弱……比较郁闷的是小号交47ms,大号交79ms - -|||调了很久,最后很没脾气的加了eps,然后没有编译直接小号交了,居然A了……code:#include <iostream>#include <cstdio> 阅读全文
posted @ 2011-06-27 11:40 FreeAquar 阅读(198) 评论(0) 推荐(0) 编辑
  2011年6月26日
摘要: 一道好题,练习静态表(邻接矩阵的数组开不下),没写过静态表,参考http://www.cnblogs.com/cykun/archive/2011/01/19/1939542.html写的,改用stl的queue写了。思路比较简单,有向边建立的静态表要注意反向处理,然后把1到各点和各点到1的距离求和即可:spfa+静态表#include <iostream>#include <cstdio>#include <climits>#include <queue>#include <cstring>#define INF INT_MAXco 阅读全文
posted @ 2011-06-26 15:47 FreeAquar 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个处理器,要传递信息,从1号开始,传播一次后可以从这两台处理器同时进行传播,以此类推思路:样例画了个图,发现从1开始走到每个点的时候都是1到此点的最短路径,于是想到了spfa算1到每个点的距离,然后取最大值即可code:#include <iostream>#include <cstdio>#include <queue>#include <cstring>#include <string>#include <cstdlib>#define MAXN 105#define INF 0x7fffffffusing 阅读全文
posted @ 2011-06-26 11:38 FreeAquar 阅读(428) 评论(0) 推荐(0) 编辑
  2011年6月6日
摘要: http://blog.csdn.net/lovelyloulou/archive/2010/03/13/5377886.aspx//程序可能犯的错误是通不过非连通图的数据和一次搜索虽然成功着色却不是最优解的图的数据/*根据四色猜想,任何地图着色时满足相邻区域颜色不同的最小颜色数是4,所以图中每个节点可能有4种颜色,这里为4条信道搜索即可得到最小需要的颜色数。*/#include <iostream>#include <cstring>using namespace std;int map[27][27],chan[27];int mmin,n;bool ok(int 阅读全文
posted @ 2011-06-06 16:13 FreeAquar 阅读(210) 评论(0) 推荐(0) 编辑
  2011年5月2日
摘要: 北师现场赛,是我第一次去外校参加组队赛,和Kingstar还有WildFire组队。怎么说呢,感觉从早上一开始就感觉挺乱了。现场赛之前,进行了一下分工,Kingstar主要负责数学类,我负责搜索,WildFire负责dp。而图论是死题,带上模板感觉就没什么了。说实话,感觉自己的代码能力写搜索还是挺虚的,现在有了stl的queue写简单广搜稍微有点底,深搜真的是经常无限递归。北师大的机房很大,我们一行人找到自己的位置,然后等待比赛开始。本以为会很正式的比赛,结果却发现监管很松,我们后面那组直接就把题目拆封,开始看题,我茫然的问了句,能提前看题?,队友也茫然的回了句,应该不行吧。第一次组队,感觉挺 阅读全文
posted @ 2011-05-02 23:21 FreeAquar 阅读(139) 评论(0) 推荐(0) 编辑
  2011年4月26日
摘要: 非常好的一道搜索题,花了一个下午和一个晚上去做去理解题意:虽然英语很长,不过不是太难懂,就是可以向四个方向扔小球,每次扔出去,会一直走,直到遇到墙时停止,或出界失败,而遇到墙后,球会停止,然后所撞到的墙消失,给一个起点和一个终点,能在10步之内到达的则输出其最少步数思路:虽然是搜dfs题目搜到的这道题,但是开始看题意是说要求最少的步数,第一个想到的自然是BFS,感觉稍微变形下,类似回溯,只是每次都是四个方向同时判断,然后入队,再继续广搜。然而,花了整整2个多小时,依然调不好,思路也越来越乱了,上百度搜了下,全是dfs的解法。仔细看了下,发现和自己写的bfs几乎一致,于是,决定从新再写一遍,改一 阅读全文
posted @ 2011-04-26 23:47 FreeAquar 阅读(250) 评论(0) 推荐(0) 编辑
  2011年4月4日
摘要: 怎么说呢,题目挺水的,题意理解错了,以为是凯撒排序, 然后两个快排,wa掉了- -|||太恶心了,题目给的样例居然是用凯撒密码能过的!!!然后看了Discuss,发现原来题目是要求判断两个字符串中,第一个串中出现的字母数及其频率,对应与第二个字符串出现的频率相同即可例如:AABBCEF BCCGGHJ,A出现的次数是2,B出现的次数是2, C,E,F都是1;第二串中 C,G出现2次,B,H,J出现一次,即频率是是相同的,输出YES思路:用哈希表发就可以了,记录每个字母出现个数,然后两次快排, 比较就行了0MS 144Kcode:#include <iostream>#include 阅读全文
posted @ 2011-04-04 14:16 FreeAquar 阅读(308) 评论(0) 推荐(0) 编辑
  2011年3月15日
摘要: 就是通过前三个数来判断是等差还是等比数列,注意别越界,用__int64code:#include <stdio.h>#include <iostream>#define m 200907using namespace std;__int64 pow_mod(__int64 a, __int64 n){ if(n==1) return a; __int64 x = pow_mod(a, n/2); __int64 ans = x*x%m; if(n%2 == 1) ans=ans*a%m; return (int)ans;}int main(){ int n; __int 阅读全文
posted @ 2011-03-15 18:29 FreeAquar 阅读(333) 评论(0) 推荐(0) 编辑
  2011年3月8日
摘要: 题意:是说有一个水池,需要通过管道排水,给出管道数,给出两个管道间的最大流量,然后让你计算最多能拍多少水。思路:是pku上的一道模板题,注意可能有重边的问题。code://Edmonds-Karp算法,BFS找增广路#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std;const int INF = 1000000000;const int MAXN = 205;int n, m, s, t;int a[MAXN], p[MAXN 阅读全文
posted @ 2011-03-08 20:06 FreeAquar 阅读(191) 评论(0) 推荐(0) 编辑
  2011年2月12日
摘要: 主要是看题,要把id number 反过来乘以9,3,7的循环然后……poj不支持strrev()函数……不信的可以自己试试……#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;int cas[10]={9,3,7,9,3,7,9};void strreved( char *source ){ int l = strlen( source ); char temp; int i; for( i = 0; i < 阅读全文
posted @ 2011-02-12 22:58 FreeAquar 阅读(225) 评论(0) 推荐(0) 编辑