
acm
文章平均质量分 73
吾等前方绝无敌手
...
展开
-
自己写的一个数学库
因为要做光线跟踪,所以要有一个自己的图形库嘛,所以要封装自己的数学库,所以我就模仿者书上写了一个图形库按它的那个库中的函数写的,名字大多都一样,有些我认为可以优化的优化了一下BkDefs.h 定义一些数据姐都的#ifndef BKDEFS_H_INCLUDED#define BKDEFS_H_INCLUDED/*包含定义的常量及数据类型*/typedef unsigned c原创 2013-03-17 20:43:26 · 1102 阅读 · 0 评论 -
usaco Broken Necklace 报告
题意:你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3 1 2 1 2 r b b r b r r b r b b原创 2012-11-30 18:58:34 · 720 阅读 · 0 评论 -
usaco Greedy Gift Givers 报告
题意:对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。 然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。 给出一群朋友,没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表, 请确定每个人收原创 2012-11-28 17:35:26 · 697 阅读 · 0 评论 -
usaco Your Ride Is Here 报告
话说区域赛后没事干了,把usaco做一遍吧,闲着也是闲着,这是第一题,签到题意:给两个字符串,每个字符‘A’ = 1 , ‘Z’ = 26 ,一次类推,求两个字符串所有字符的乘积然后mod47,结果是相同的就输出GO,否则STAY题解:显然嘛代码:/*ID: lishicaoPROG: rideLANG: C++*/#include #include #include原创 2012-11-26 22:09:45 · 429 阅读 · 0 评论 -
poj1273解题报告
经典网络流sap:#include #include #include #include using namespace std ;const int MAXN = 500 ;const int MAXM = 25000 ;const int INF = 9999999 ;int map[MAXN+10][MAXN+10] ;int dis原创 2012-10-16 12:02:50 · 310 阅读 · 0 评论 -
poj3037 解题报告
这道题也是我拿来测板子的题意:给定一个r*c(r题解:可以推出,每个点速度是一样的,这样就直接最短路了 #include #include #include #include #include using namespace std ;const int MAXN = 105 ;const int MAXM = MAXN * MAXN * 20 ;原创 2012-10-23 22:41:14 · 499 阅读 · 0 评论 -
poj2914解题报告
这是一个全局最小割的题:#include #include #include #include using namespace std ;const int INF = 999999999 ; const int MAXN = 505 ; int map[MAXN][MAXN] , low[MAXN] , vis[MAXN] , last , pre ,原创 2012-10-16 12:05:30 · 279 阅读 · 0 评论 -
poj1523解题报告
题意就是要求割点用tarjan求强连通#include #include using namespace std ;const int MAXN = 1100 ; const int MAXM = MAXN * MAXN ; struct type{ int to , next ; } ; type edge[MAXM] ; int原创 2012-10-16 13:04:10 · 284 阅读 · 0 评论 -
poj2942解题报告
这道题其实就是求割点数量用点双联通#include #include #include #include using namespace std ;const int MAXN = 1001 ; const int MAXM = 2*MAXN * MAXN ; const int INF = 99999999 ; struct type {原创 2012-10-16 13:09:48 · 276 阅读 · 0 评论 -
usaco Milking Cows 报告
题意:三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。原创 2012-12-01 10:20:24 · 815 阅读 · 0 评论 -
usaco Transformations 解题报告
题意:一块N x N(11:转90度:图案按顺时针转90度。2:转180度:图案按顺时针转180度。3:转270度:图案按顺时针转270度。4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。6:不改变:原图案不改变。7:无效转换:无法用以上方法得到新图原创 2012-12-02 22:15:19 · 1040 阅读 · 0 评论 -
usaco Name That Number 解题报告
题意:在威斯康辛州牛大农场经营者之中,都习惯于请会计部门用连续数字给母牛打上烙印。但是,母牛本身并没感到这个系统的便利,它们更喜欢用它们喜欢的名字来呼叫它们的同伴,而不是用像这个的语句"C'mon, #4734, get along."。请写一个程序来帮助可怜的牧牛工将一只母牛的烙印编号翻译成一个可能的名字。因为母牛们现在都有手机了,使用那标准的按键的排布来把将数目翻译为文字:( 除了 "原创 2012-12-03 16:13:54 · 1094 阅读 · 0 评论 -
poj 1077 解题报告
最近学人工智能,要学A*算法,就重新做这道题经典的8数码问题,传说不做这道题人生不完整呢我之前是用的广搜暴力搞的,不过太慢了,还要说说我的hash方法,我是用康托展开来hash的,这个东西是算一个排列在所有排列大小排多少,比如(1,2,3)有6个排列,321是最大的就是第六个。还有就是康托展开的逆运算,就是知道是第几大的,算出这个排列来;康托展开:long cantor( int s[]原创 2013-02-27 21:28:49 · 529 阅读 · 0 评论 -
十五数码问题
做完八数码之后我还想做难一点的东西,因为八数码直接爆搜就可以了,所以想做一下爆搜不能做的东西,十五数码如果爆搜的话有15!种状态,不可能存下的;我的思路是不存那么多状态,我把所有的状态hash到10000大小的vector数组里面,每次搜索不可能吧所有的状态都遍历完,所以不会爆内存的,然后存路径是用链表做的,将后面扩展到的状态指向前一个状态,在搜索到的时候就从最后一个向前遍历,然后把方向存原创 2013-03-06 21:51:34 · 1573 阅读 · 0 评论 -
usaco Prime Cryptarithm 解题报告
题意:下面是一个乘法竖式,如果用我们给定的那n个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式。 * * * x * * ---------- * * * * * * ---------- * * * *数字只能取代*,当然第一位不能为0,况且给定的数字里不包括0。 注意一下原创 2012-12-13 14:51:00 · 783 阅读 · 0 评论 -
usaco Calf Flac 解题报告
题意:据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文。你的工作就是去寻找这些牛制造的奇观(最棒的回文)。在寻找回文时不用理睬那些标点符号、空格(但应该保留下来以便做为答案输出),只用考虑字母'A'-'Z'和'a'-'z'。要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串。我们将保证最长的回文不会超过2,000个字符(原创 2012-12-10 18:43:54 · 701 阅读 · 0 评论 -
usaco Barn Repair 解题报告
题意:在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶、门被吹飞了。 好在许多牛正在度假,所以牛棚没有住满。 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜。 有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度。 自门遗失以后,farmer John必须尽快在牛棚之前竖立起新的木板。 他的新木材供应商将会供应他任何他想要的长度,但是吝啬的供应商只能提供有限数目的木板。原创 2012-12-08 13:47:14 · 1460 阅读 · 0 评论 -
usaco Mixing Milk 解题报告
题意:由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助Marry乳业找到最优的牛奶采购方案。Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天Marry乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。给出Marr原创 2012-12-07 17:12:05 · 907 阅读 · 0 评论 -
usaco Dual Palindromes 解题报告
题意:如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。 编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10原创 2012-12-06 14:26:48 · 969 阅读 · 0 评论 -
usaco Palindromic Squares 解题报告
题意:回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。给定一个进制B(2题解:数制转换一下代码:/*ID: lishicaoPROG: palsquareLANG: C++*/#include #include #include using namespace std ;ifstream fi原创 2012-12-04 17:50:06 · 749 阅读 · 0 评论 -
poj2253 解题报告
题意:Freddy Frog暗恋Fiona Frog,在他们之间有n快石头,告诉你这n快石头的坐标,第一快为Freddy Frog的坐标,第n块为Finoa Frog的坐标,Freddy可以借助石头经过任何路径到达Fiona那里,问他最小的弹跳距离是多少题解:用最短路dij做,额,这样说不准确,也可以用最小生成树的prim做,==!这两个本来就是一种思想,只不过松弛方法不一样,其实还可以flo原创 2012-10-24 15:27:40 · 581 阅读 · 0 评论 -
poj2186 解题报告
题意:有一些奶牛,他们之间有互相崇拜的关系,并且这个关系是有传递性的,求被所有奶牛崇拜的奶牛数量;题解:先用强连通缩点,把强连通分量缩成一个点,强连通中的点必然是互相崇拜的,然后再缩点后的图中找到出度为零的点,如果这些点的数量大于一,那么必然没有解,因为这些点直接没有互相崇拜关系,如果只有一个点,那么求出这个点对应的强连通分量里面的点的个数就是答案了;代码搓了点:#includ原创 2012-10-18 10:45:38 · 311 阅读 · 0 评论 -
poj1611解题报告
#include #include #include #include using namespace std ;const int MAXN = 30005 ;int father[MAXN] ;int find( int x ){ if( father[x] != x ) father[x] = find( father[x] )原创 2012-10-16 11:44:51 · 279 阅读 · 0 评论 -
poj1703解题报告
题意:T代表case数量,N代表N个人,M代表将要输入M组关系,每组关系有一个字符和两个整数ch,A,B,如果ch是‘A’,代表询问A,B是否是同一集合,‘D’代表A和B是同一集合题解:并查集#include #include #include using namespace std ;const int INF = 99999999 ;const int MAX原创 2012-10-16 11:41:25 · 338 阅读 · 0 评论 -
poj2533解题报告
题意:最长上升子序列题解:虽然是经典dp,但我用网络流做啊,dp我一点不懂啊怎么办#include #include #include #include using namespace std ;const int INF = 99999999 ;const int MAXN = 1505 ; const int MAXM = MAXN * 100 ;原创 2012-10-16 11:59:19 · 297 阅读 · 0 评论 -
poj1182解题报告
题意:中文题,自己读吧题解:并查集,只不过增加了一个当前点到与根节点的关系#include #include #include using namespace std ;const int MAXN = 50005 ;int N ;int father[MAXN] ;int rank[MAXN*2] ;int change( int原创 2012-10-16 11:35:41 · 279 阅读 · 0 评论 -
zoj3457解题报告
#include #include #include using namespace std ;int num[6] ;bool vis[6] ;int n , Max ;void dfs( int depth ){ int i , j ; if( depth == 4 ) { int fl原创 2012-10-16 11:24:06 · 365 阅读 · 0 评论 -
poj1986解题报告
题意:还是最近公共祖先题解:这个题只能用tarjan离线算#include #include #include #include using namespace std ;const int MAXN = 40005 ;struct type{ int end , next ; int w ;} ;type edge原创 2012-10-16 11:14:05 · 312 阅读 · 0 评论 -
poj1470解题报告
题意:最近公共祖先题解:最近公共祖先代码:1,裸地在线算法#include #include #include using namespace std ;const int MAXN = 1000 ;int N , M ;int father[MAXN] ;int count[MAXN] ;bool vis[MAXN]原创 2012-10-16 11:08:39 · 313 阅读 · 0 评论 -
codeforce4A 解题报告
题意:给一个100以内的整数,如果能分成两个偶数输出YES,否则输出NO题解:水题#include #include #include using namespace std ;int main(){ int n , i , j , flag = 0 ; scanf( "%d" , & n ) ; for( i = 2 ; i <原创 2012-10-16 10:56:59 · 288 阅读 · 0 评论 -
poj2236解题报告
题意:有N个点;多条路;事先每个点都被摧毁;输入两个数字A,B代表这两个点有一条路,字符O和数字A,代表修复这个点;若输入S,A,B代表询问A,B是否连通;题解:并查集#include #include #include using namespace std ;const int MAXN = 1005 ;struct type{ int x ,原创 2012-10-16 11:49:07 · 368 阅读 · 0 评论 -
poj2524解题报告
这题也是并查集,最近并查集写的有点多 #include #include #include using namespace std ;int father[50005] ;int find( int x ){ if( father[x] != x ) father[x] = find( father[x] ) ; return fat原创 2012-10-16 11:53:03 · 308 阅读 · 0 评论 -
关于poj的题目
我在poj写了175题,都是以前写的,都木有写解题报告==!我今天才想起来写解题报告,写了几篇发现太多了。。。。我就把代码打包上传到资源页去了,以后就只写刚做的题的报告了原创 2012-10-16 22:27:08 · 280 阅读 · 0 评论 -
zoj3659
这道题是长春的E题,我是看了别人才会做的,这道题是一个并查集的题,将边按从大到小排序,然后依次合并,这样每次都是按边的权值来计算合并后的值,接下来就是讨论这两个集合谁并入谁,应该是合并后所得值小的并入值大的,这样就要记录每个集合当前元素个数sum和当前值rank#include #include #include #include using namespace std原创 2012-10-17 11:22:15 · 339 阅读 · 0 评论 -
codeforces 145 div2 A
这道题我比赛的时候懵了,那么简单一道题,我还想成了网络流相关。。。sb了,,,#include #include #include #include using namespace std ;ifstream fin ( "input.txt" ) ;ofstream fout ( "output.txt" ) ;int n ;char stude原创 2012-10-17 14:31:05 · 309 阅读 · 0 评论 -
poj3625 解题报告
又是一道最小生成树,拿来测模板;题意:N个点,坐标给出,然后有M条路已经修好了,给出这M条路的起始点和终点,求需要再修多远的路才能得到最小生成树题解:把已经修好的路长度算0,然后最小生成树就好了;话说我wa了一次,题目说了全部用64位的运算,我没看到,把坐标改成longlong就过了好水啊;#include #include #include #include #i原创 2012-10-22 13:17:57 · 617 阅读 · 0 评论 -
poj 2349解题报告
想比赛前吧模板整理好,就做了一道这个题看看模板题意:有P个点,用坐标给出,有两种联系方式:1每个点可以和距离在D以内的点相互联系,2有S个专门的卫星通道,两个点直接联系;求D最小多少可以把这个图连起来题解:首先不考虑S个卫星通道,先求最小生成树,用卫星通道把最小生成树中最大的S-1个边代替掉,然后剩下的最大的那条边的值就是能把整个图连起来的D的最小值#include #in原创 2012-10-22 12:09:47 · 627 阅读 · 0 评论 -
poj2942 解题报告
本来想下午做完了周末好好玩,结果尼玛做了一晚上...题意:亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求:1、 相互憎恨的两个骑士不能坐在直接相邻的2个位置;2、 出席会议的骑士数必须是奇数,这是为了让投票表决议题时都能有结果。 如果出现有某些骑士无法出席所有会议(例如这个骑士憎恨原创 2012-10-19 17:21:12 · 570 阅读 · 0 评论 -
zoj3665解题报告
这道题是长春赛区的K题;题意:(K^r)+(K^(r-1))+....+K+1=N,或:(K^r)+(K^(r-1))+....+K=N;给出N,求K和R的值,如果有多个答案,输出R*K最小的那个;k>=2;N题解:R一定是小于40的(K大于等于2),枚举R的值,R的值一定的情况下,N相对于K是单调递增的,故用二分求答案#include #include #include原创 2012-10-16 11:22:17 · 298 阅读 · 0 评论 -
codeforces 145DIV2 B 解题报告
我第一次做codeforces的比赛,以前都在半夜,太懒了就不做,终于有rating了,1421第一题想懵了,不想做了,看了下第二题,大水题,就是排一下序,找前几的序号,由于不熟悉它的输入输出re了一次wa了一次,我太水了#include #include #include #include using namespace std ;ifstream fin (原创 2012-10-16 21:30:33 · 831 阅读 · 0 评论