随笔分类 -  algorithm

The topic about algorithms in ACM contest. Some solving reports will be displayed here.
摘要:对于任意a,b,只要最多计算一遍循环节就行了。对于这样的题目,明了的程序结构比解法更重要。#include #include using std::memset;long long t, n, a, b;long long max(long long a, long long b){ return ... 阅读全文
posted @ 2013-07-26 20:21 little_hsu 阅读(144) 评论(0) 推荐(0)
摘要:#include #include using std::memset;int a,b,t;//n!/(a!*b!*c!)long long cal(int n, int a,int b,int c){ long long ans= 1; for(int i = a+1; i dif)... 阅读全文
posted @ 2013-07-26 09:40 little_hsu 阅读(145) 评论(0) 推荐(0)
摘要:湫湫系列故事——植树节老是刷水题,哈哈。练练手嘛,我不是专业人士。这是一道概率题,我从来没写过概率题,所以没有解题思路。按概率论的思路来的话会很麻烦,我想了一会就放弃了。然后去看了看网上的题解,是这样说的:从组合的角度来说,每个人又bi个朋友,也就是说有n-1-bi个人不是朋友,那么三个人不是都是朋... 阅读全文
posted @ 2013-07-26 09:09 little_hsu 阅读(114) 评论(0) 推荐(0)
摘要:小明系列故事-买年货背包问题。不过有多个属性。注意要点:每种物品只有一件,需要从大到小dp。注意不要将一件物品放入多次。同代码。#include #include #include using std::memset;using std::max;int dp[101][101][6];int go... 阅读全文
posted @ 2013-07-25 17:48 little_hsu 阅读(131) 评论(0) 推荐(0)
摘要:求逆序数,数据很小可以暴力。但是用来练练线段树还不错,还有离散化。线段树求逆序数:从前往后插入数据,找比它大的数。或者从后往前插入数据,找比它小的数据。离散化可以用如下代码:bool cmp(int i,int j){ return now[i] #include #include using na... 阅读全文
posted @ 2013-07-10 23:46 little_hsu 阅读(120) 评论(0) 推荐(0)
摘要:模拟,水注意数组大小;#include #include #include #include using std::map;using std::memset;using std::sort;char charmap[18][34];char chess[8][8];map prior;char g... 阅读全文
posted @ 2013-07-09 14:37 little_hsu 阅读(153) 评论(0) 推荐(0)
摘要:模拟题注意要点:1. 和快速幂类似,但是是加法。2. 输入最后两行是\n;3. 转string最后不要输出空格。#include #include #include #include using std::memset;using std::map;using std::cin;long long ... 阅读全文
posted @ 2013-07-09 11:33 little_hsu 阅读(212) 评论(0) 推荐(0)
摘要:为了切切题,随便找了到模拟题做。虽然是模拟题,但是好像也没有那么显然。如果按照位置全部判断一下肯定是不行的。分析问题时,要从本质入手。首先要找到它的数学公式。这是个三维空间上的问题,首先需要两个参数来表示其状态,一个是head(身体的方向),一个是face(脸的朝向)。我们要做的就是更新这两个变量。... 阅读全文
posted @ 2013-07-08 22:04 little_hsu 阅读(318) 评论(0) 推荐(0)
摘要:转载:http://blog.sina.com.cn/s/blog_5ceeb9ea0100l18q.html这两者是有区别的,先了弄清楚以下关系 最大二分匹配:在一个二分图中找到P->q的一个匹配方案,使得匹配中的边数量不小于任何其他的匹配。完备二分匹配:在一个二分图中找到p->q的一个匹配方案,... 阅读全文
posted @ 2013-07-08 13:59 little_hsu 阅读(615) 评论(0) 推荐(0)
摘要:结题报告参考:http://hi.baidu.com/newmyl/item/dc6805253305833195f62b0a#include #include using std::memset;long long x,y,m,n,l;long long a,b,ansx,ansy, c, r;l... 阅读全文
posted @ 2013-07-05 22:41 little_hsu 阅读(154) 评论(0) 推荐(0)
摘要:POJ 2983 Is the information reliable?SPFA+差分约束练习题。注意事项:P: //dis[a] - dis[b] = c; //dis[a] - dis[b] = 1; //dis[b] - dis[a] #include #include #... 阅读全文
posted @ 2013-07-05 18:48 little_hsu 阅读(180) 评论(0) 推荐(0)
摘要:很慢的线段树,不过可以作为最简单的模板。代码风格学的Not Only Success。C++过,G++不过。#include #include #define lson l,m,rtb?b:a;}int max(int a,int b){ return a>b?a:b;}void build... 阅读全文
posted @ 2013-07-04 23:17 little_hsu 阅读(138) 评论(0) 推荐(0)
摘要:double ternarySearch(double l,double r){ while(r-l < eps) { double mid = (l + r)/2; double midmid = (mid + r)/2; if(cal(mid... 阅读全文
posted @ 2013-07-04 22:44 little_hsu 阅读(178) 评论(0) 推荐(0)
摘要:纯二分 水#include #include #include using std::memset;using std::sort;const int MAX = 2005;int n;struct position{ int x,y;}star[MAX];;bool cmp(position a,... 阅读全文
posted @ 2013-07-04 15:29 little_hsu 阅读(222) 评论(0) 推荐(0)
摘要:最大流基础题。基本的思路是:先找增广路,路上的流量减掉,反流量(名字忘记了)加上,直到找不到增广路。#include #include #include #include using std::queue;using std::memset;const int MAX = 400;int flow[... 阅读全文
posted @ 2013-07-04 00:42 little_hsu 阅读(119) 评论(0) 推荐(0)
摘要:POJ 1222 结题报告(枚举和高斯)这题可以用简单的方法求解,先穷举第一行的按键情况。然后一行一行关掉(做的时候看错题意,以为点亮,错了很久,所以一定要看清楚题意)前一排的灯。下面是代码,应该比较清晰。#include #include using std::memset;int mapback... 阅读全文
posted @ 2013-07-03 13:39 little_hsu 阅读(241) 评论(0) 推荐(0)
摘要:POJ2075是到PRIM练习题,但是很坑爹。有个很奇怪的问题就是:输出浮点数%.1f就过 %.1lf就不过。如果有人知道原因,请一定告知!不知道是不是.1f是四舍五入的 %.1lf是取floor的?#include #include #include using std::memset;const... 阅读全文
posted @ 2013-07-03 10:55 little_hsu 阅读(196) 评论(0) 推荐(0)
摘要://代码比较长,好在逻辑比较清晰吧//调bug调了挺久,错在 我直接返回false,未回撤对visit的修改。因为在当前情况下不可行,不代表其他深搜路劲不行#include #include #include using std::sort;using std::memset;int n;const... 阅读全文
posted @ 2013-07-02 20:18 little_hsu 阅读(293) 评论(0) 推荐(0)