POJ解题报告
文章平均质量分 72
muximuxi525
有些事情暂时可以放下但是绝不能放弃
展开
-
2013省赛前夕碎碎结
2013 10 8poj3349(数字哈希的运用)/*题目大意:就是在给出的雪花当中判断有没有至少一样的一对雪花。利用哈希找出少数总和长度相等的雪花,然后在通过顺时针和逆时针枚举6^2长度的雪花进行比较看雪花是否相等即可 思路:在10W片雪花中直接比较雪花明显不可,但是经过哈希之后可以边插入边比较。*/#includeusing namespace std;原创 2013-10-08 22:06:17 · 1260 阅读 · 0 评论 -
POJ2488 A Knight's Journey(DFS)
题目大意:问一个骑士能否不重复地踏遍整个棋盘。思路:因为输出有一个坑爹的要求:Then print a single line containing the lexicographically first path that visits all squares of the chessboard with knight moves followed by an empty line.原创 2012-08-22 21:36:37 · 1335 阅读 · 0 评论 -
POJ1995 Raising Modulo Numbers
题目大意&&思路:快速幂取模,没看题RE了2次,因为指数为0的情况,囧。。还是用自己的模板,虽然有点繁琐,但是自己的更顺眼嘛~~~AC program:#include#include#include#includeusing namespace std;__int64 test,mod,n;__int64 a[50000],k[50000]; __int64 fn(__in原创 2012-10-18 10:53:52 · 679 阅读 · 0 评论 -
POJ1408 Fishnet
题目大意:就是求划分的四边形的最大面积,博哥叫我码这道水题玩玩,照码了~~1A呵呵~思路:枚举,克莱姆求交点水过~~~用二维数组结构体保存整个正方形内的点~~搞输入保存的时候有点恶心~~ AC program:#include#include#include#include#include#includeusing namespace std;double a[3原创 2012-10-15 14:28:04 · 857 阅读 · 0 评论 -
POJ 1423 Big Number
题目大意:求n!的结果的位数n思路:首先要求一个数字有多少位,可以用(int)log10(num)+1,这样就求出num有多少位哎用log10()函数的结果最后要+1~因为运算的时候有精度缺失~不是很懂~~怪不得我之前都没得结果,只能先记一下了。囧。。更坑爹的是:要不是我在线打表的话,铁定无限TIE~~~囧。。program1:(在线打表)#include#includ原创 2012-09-12 20:46:10 · 579 阅读 · 0 评论 -
POJ3292 Semi-prime H-numbers
题目大意: H-numbers是4*n+1的数,H-primes是1*H-numbers,H-semi-primes是仅仅2个H-primes的数的乘积,然后问1~h(h是 H-numbers)里面有几个H-semi-primes。思路:题目说的通俗的就是:给出一堆H数,然后HP数的就像素数的定义(姑且称为H素数),然后HSP数就是2个HP数的乘积,也就是找出2个H素数,他们的乘积就是我们要的原创 2012-09-22 10:00:45 · 733 阅读 · 0 评论 -
POJ1006 Biorhythms
题目大意:求出三个生理期的共同日思路:即是X%23=0(从第零天开始的)X%28=0X%33=0但是又因为:p%23=0,e%28=0,i%33=0;所以X=p+23*y1 (yi是整数)X=e+28*y2X=i+33*y3 所以X和p同余于23,X和e同余于28,X和i同余于33;又因为23、28、33互质;所以用处理 符合定理使用条件原创 2012-09-26 09:25:42 · 753 阅读 · 0 评论 -
POJ2042 Lagrange's Four-Square Theorem
题目大意:拉格朗日定理:每个自然数均可以表示成4个正整数的平方数之和。下面这一句,不知所云:3个平方数之和不能表示形式如4^k(8n+ 7)的数。 如果在一个正整数的因数分解式中,没有一个数有形式如4k+3的质数次方,该正整数可以表示成两个平方数之和。 思路:暴力枚举,但是不必为每个n来验证,而是让四个数滚动起来,只要小于2^15的就可以保存并在此基础上统计个数,然后打个表~~撸过~~原创 2012-09-28 11:11:49 · 1477 阅读 · 0 评论 -
欧拉函数 模板题 POJ2407 Relatives
题目大意&&思路:φ(n)是积性函数,所以n=P1^k1*……*Pn^kN(素数因子分解)所以:φ(n)=φ(P1^k1)*……*φ(Pn^kN)而对于φ(P1^k1),原式等于:P1^k-P1^(k-1),即是(P1-1)*P1^(k-1);在此题目中,因子的次数不会大于31,所以直接POW函数就可以解决问题 AC program: #include #include原创 2012-09-27 17:55:08 · 835 阅读 · 0 评论 -
POJ3122 pie
题目大意:就是给出n个馅饼,f个party朋友,问分给每个人多少面积的馅饼,才使得f+1(包括party主人----我)个人得到的馅饼面积最大。分割的规则是:每个人得到的馅饼仅来自一个馅饼。这也就是说不是一般的总和再平均的问题。思路:呜呜~~小增的第一道统计二分啊~~惭愧~~本题二分的上限是最大的馅饼的半径的平方(我是用馅饼的半径的平方处理的)。还是说一下为什么用二分吧,因为分馅饼是一个实数问原创 2012-09-18 20:12:41 · 696 阅读 · 0 评论 -
POJ 2513 trie+并查集+欧拉路
题目大意:每根木棒两端有颜色,能否拼成一条线,当然连接木棒的两端颜色要相同。思路:欧拉路:(1)、该图是连通的(2)、节点度数为偶数,或者奇数度节点数不超过2。并查集可以很好求得连通性,至于节点就是每一种颜色,要用到并查集就要用到数字编号,所以就要把每一种颜色的的编号表示出来,所以用到trie。 program:#include#define maxn 500005 int转载 2012-08-11 10:22:24 · 4649 阅读 · 0 评论 -
POJ2503 Babelfish
题目大意:给出英语 --- A国语言 ,然后输入A国语言单词,问在字典内是否有该单词,有就输出该单词英文,无则输出eh;思路:典型的先保存再查找,有好几种解法,我用得是hash,但是再用链表的时候无限WA啊,也不知道是那个字符串哈希有问题还是链表出了问题,求强力数据找BUG啊 AC program:(数组哈希) #include#include#include#inc原创 2012-09-10 22:14:42 · 680 阅读 · 0 评论 -
POJ1426 Find The Multiple
题目大意:找出一个10进制数,但是只含1或者0的数能够整除n的数。n最大为200,结果最大为100位以内的数(其实这是骗局)。思路:先dfsAC program:#include#include #include#include#includeusing namespace std;int flag;void dfs(long long t,int n,int k){原创 2012-10-21 17:27:15 · 616 阅读 · 0 评论 -
POJ3278 Catch That Cow
题目大意:在一个数轴上,求出由n到k的最小步数,其中n可以+1或者-1或者*2。思路:明显的bfs,因为是求最小的步数,总共有三种走法,这也是BFS的三个入口(或者说bfs应该b的方向),对于每一种走法走到的位置就是bfs抽象的层数上的棋子(想象由一个源点散发开来)而每一种走法相同的时间(从出发到当前)就是扩展出来的层数。 AC program:(G++提交WA了,但是换了C++竟原创 2012-10-20 22:27:19 · 631 阅读 · 0 评论 -
POJ3126 Prime Path
题目大意:就是给出ps,pt 2个四位数的素数,求最少由几步ps可以到达pt。其中变化的规则是:ps每次只能向任意一个四位数的素数变化,而且只能通过变动前一个素数的一位数来进行变化。思路:BFS。用了2种做法,不过都一样思路。只不过第一种用字符串,第二种直接算而已。AC program:#include#include #include#include#include#in原创 2012-10-23 19:50:26 · 589 阅读 · 0 评论 -
POJ1273 Drainage Ditches (SAP+GAP)
题目大意:每当下雨,农夫FJ最喜爱的养尊处优的地方周围就变成了一个池塘,这让他很不爽,所以决心要把这个问题解决掉,所以他就在四周建造了一些渠沟以便排水,更为巧妙地是可以把这水排到一个小溪处。编号为1的节点作为池塘,编号为n的地方作为小溪。求最大排水量思路:赤裸裸的最大流。SPA+GAP再次撸过~~~要注意的是可能最大流会超int。还有的是:如果是拿邻接矩阵做的话要考虑重边问题(包含自环),但是原创 2012-10-05 18:22:07 · 721 阅读 · 0 评论 -
POJ 3259 Wormholes(再续前章)
题目大意:bellman-ford模板题思路:以前是对着模板敲,时隔一年,自己温习了一边算法自己敲出来的,因为一个宏定义WA到想哭,至今没想清楚是什么意思.但终究是码出来了算法核心思想就是:第一重循环: 松弛n-1遍第二重循环: 扫描所有的边,每次松弛一下入度结点 松弛了n-1遍之后,肯定能求得最短距离了这时候如果再对所有的边再松弛一遍,如果还能够松弛话,则有负环否原创 2013-05-08 21:05:21 · 802 阅读 · 0 评论 -
POJ3259 Wormholes(虫洞)(Bellman-floyd法解决)
题目大意:农夫FJ喜欢在自己的农场里面玩穿越,而虫洞-----就是就是一种是时间倒退的时光机(单向的)(A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole!) 但原创 2012-08-20 22:01:23 · 2001 阅读 · 0 评论 -
POJ 1917 Automatic Poetry
题目大意:对输入的每一对字符串进行处理:输出有两行(1)第一行不要把""的符号输出 (2)第二行用(1)上面的思路:模拟的有点恶心阿,关键是对Ac Program:#include#include#includeusing namespace std;char l1[105];char l2[105]; char c1[105],c11[105];cha原创 2013-01-25 23:16:34 · 677 阅读 · 0 评论 -
POJ 2406 Power Strings
题目大意:问原串是否可以是某个子串周期组成.如果是的话输出周期,否则输出1思路:在这道题是HDU1358的弱化版用next数组判断原串就为前缀是否是周期组成,如果是的话然后再用next数组求出循环节就可以了只是考虑了前缀为原串的情况,周期至少可以为1,那么就求出next数组直接判断next[n+1]的情况就可以了的. 我以为是在所有前缀中找出最大的.1wa.囧囧.比如abcab原创 2013-04-28 09:11:18 · 1025 阅读 · 0 评论 -
POJ1699 Best Sequence 暨2013年USC校赛D题
今晚有点失望,但是也是自己作祟,不能对自己喜欢的girl有太多的要求,至少不能想要求自己一样....因为严于律己宽于待人嘛~~~ 题目思路:给出n(n 思路:这个题目爆搜可以求解,但是最近做了道状态压缩DP,所以坚持用状态压缩DP去做了,但是这个题目描述真的是很坑爹,注意一点就可以了:是不能存在包含在内的情况出现,必须是首尾相连的,考虑到这一点就基本可以了.比如这组数据:2原创 2013-04-20 08:16:41 · 1136 阅读 · 0 评论 -
POJ 1018 滑雪
题目大意:人往低处滑雪,求滑雪滑出最长长度思路:d[i][j]=max{dp[i-1][j]+1,dp[i+1][j]+1,dp[i][j-1]+1,dp[i][j+1]+1},当然要满足一些基本条件:高低. 这里是用记忆化搜索 AC program:#include#include#include using namespace std;int map[105][105原创 2013-03-26 17:34:39 · 757 阅读 · 0 评论 -
POJ1166 the clocks
题目大意:给出原始9个表watch,通过9个操作operation,求最少操作数使得9个watch都指向12点.每一次operation,会对相应涉及到的watch顺时针调整15分钟. 思路:对于每种操作,操作次数不会超过3次,因为4次以上就会有无意义的步数,为什么无意义?因为和前面的操作状态重复了.为什么这样会重复呢?其他的操作对表的影响下再操作就不会与重复了呀!这是因为每一次操原创 2013-03-29 15:52:52 · 1204 阅读 · 2 评论 -
POJ3087 Shuffle'm Up
题目大意&&思路:单方向查找某个目标,也算是搜索,只不过是单向搜索BFS。小小的用了一下MAPAC program:#include#include#include#include#include#include#include#includeusing namespace std;int n;string str1,str2,strpp;int cas,原创 2012-10-29 12:42:52 · 1230 阅读 · 0 评论 -
POJ3233 Matrix Power Series
题目大意:求S =( A + A2 +A3 + … +Ak)%m的值矩阵推导,推导矩阵: A A 0 1矩阵快速幂即可:AC program:#include#include#include#include#inclu原创 2012-10-26 23:22:44 · 960 阅读 · 0 评论 -
POJ3070 Fibonacci
题目大意&&思路:首先,我们要构造出一个合适的矩阵运算式。下面是其中一种选择方案:很显然,这是一个递归定义式。我们可以进一步进行转化。. 斐波那契项:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …输出矩阵第二项 AC program:(朴素模拟)#include#include#include#include#inclu原创 2012-10-25 15:41:53 · 880 阅读 · 0 评论 -
POJ1845 Sumdiv
题目大意:就是求S(A^B)%9901,S函数表示A^B的因子和。其实一开始我想到杭电的1452的happy 2004.就是用逆元的做法,后来跪了~~因为P-1不一定和9901互质啊~~所以求逆元的定理要求不满足,所以在这种情况下不能用逆元的做法来做。只能用等比数列的二分法来做。首先是求出A的素因子:P1^k1 * P2^k2 * P3^k3 * P4^k4 *…… *原创 2012-09-27 16:16:49 · 707 阅读 · 0 评论 -
Pots
题目大意:有2个杯子(刚开始的时候是空的),容量为a,b。求通过以下三种操作判断能否使得出现为c升的水,如果可以的话,求最短的步骤数1、drop 给1或者2倒光水2、fill 给1或者2倒满水3、pour 1 to 2 或者 pour 2 to 1 每次操作只能对一个杯子进行操作思路:bfs,至于保存路径的话,也容易实现,因为对于每一个状态,其路径都是不同的原创 2012-11-03 17:12:27 · 632 阅读 · 0 评论 -
POJ 2001 trie字典树
题目大意:输出唯一能标志该单词的前缀。思路:建立字典树,在查找字典树的时候输出该单词的字母直到 该单词的字母cnt=1 或者读完整个单词#includeusing namespace std;char tmp[1001][21];struct node{ node *next[26]; int cnt; }*root ; void maketrie(char原创 2012-08-08 16:21:13 · 633 阅读 · 0 评论 -
POJ1004 Financial Management
题目大意&&思路:不能再水了这道题目,求平均数。但是有几点可以引申并且要注意的:printf("%.2lf");是不规范的,只是在大部分的系统可以接受,所以这道水题我WA了2次让我情何以堪啊~~~呜呜。。只有printf("%.2f");才是规范的。即可接受单精度,又可接受双精度。(1)错误的做法:int n=12;double sum=0,tmp; while(n--) {原创 2012-10-06 10:12:09 · 759 阅读 · 0 评论 -
POJ 1611
题目大意:求出被非典病毒感染的人,并查集模板题。结点是每一个人,根节点是任意一个社团的一个人。只要找出和0编号的人在一个集合的人即可。 #includeusing namespace std;int rank[30005],num[30005],father[30005]; void make_set(int n){ for(int i=0;i<n;i++) {原创 2012-07-14 17:40:38 · 558 阅读 · 0 评论 -
POJ2773 HAPPY 2006(不能对LL大方之战)
题目大意:就是求m的第k个(升序)与m互质的数。思路:看了discuss才知道欧拉函数 的一个性质可以解决这道题:就是如果在[1,m]之间有cnt个数和m互质,即欧拉函数为cnt,那么在[n*m+1,(n+1)*m](n为正整数)区间内的欧拉函数也为cnt,即是有循环节。这就好办了,循环节最大才为100万,那么找到k/cnt这个区间,就可以枚举求得第K个数了。不过我写的实在很猥琐,1670ms原创 2012-09-30 16:23:31 · 1614 阅读 · 0 评论 -
POJ 2992 Divisors
题目大意:找出排列数的因子的个数思路:排列数通过阶乘求得,所以也就是求阶乘的因子的个数,而因子的个数就是等于:(p1的次方+1)*(p2的次方+1)*(p3的次方+1)……在这里,pi是素数因子,之所以是加1就是当次方为0的时候也要考虑进去,还有这是求n的因子数,那么就是素数因子组合成n的各种组合,所以就要用到乘法定理,把这几个"步骤"“连起来”!问题就转化到怎样求阶乘的所包含的素因子的相原创 2012-08-31 21:35:56 · 600 阅读 · 0 评论 -
POJ2769 Reduced ID Numbers
题目大意:就是求出最小的m使得n个数对m取余的结果都是不同的思路:枚举!枚举!暴力暴力!坑嗲啊,做得想哭了,尼玛的就只是memset了100W的数就TIE了,尼玛的以后memset哥不用了,靠~~不过后来头脑清醒了回来,memset的数必定是不会那么大的。只是我的随意一开,就无限TIE道哭~~呜呜~~。以后不能那么大方了~~大方死人的额~~program: #include#i原创 2012-09-15 20:14:16 · 665 阅读 · 0 评论 -
POJ2891 Strange Way to Express Integers
题目大意&&思路:m≡r1+a1*y1 m≡r2+a2*y2 ……m≡ri+ai*yiai之间不互素,所以不是中国剩余定理,而是线性同余方程,直接模板。AC program: #include#include#include#include#includeusing namespace std;typedef __int64 LL原创 2012-09-23 10:42:03 · 740 阅读 · 0 评论 -
POJ1284 Primitive Roots
题目大意:原根模板题&&欧拉函数模板题,求出模P的原根;思路:首先根据定理:模m有原根的充要条件:m=1,2,4,p^n,2p^n,其中p是奇素数。如果模m有原根的话,原根的个数是:φ(φ(m))在此题,p直接给出是奇素数,那就简单了直接:φ(p-1)撸过去~~就转化成欧拉函数的模板题了 附上理论(来自百度百科): 原根的定义 原根Primitive Root。原创 2012-09-27 21:59:06 · 1058 阅读 · 0 评论 -
POJ2002 第一次与map亲密接触
题目大意:呜呜~~我承认~~字符串的题目陷阱很多~~~Exactly seven of the characters in the string will be digits or letters~~说明给的每个串的里面有意义的字符是确切的7个,但是不排除有其余的字符。另外,scanf是无法输入string的 ,因为c++不能兼容C~~另外按个来的话,string是可以赋值给char的,但是整串是原创 2012-10-09 17:30:09 · 673 阅读 · 0 评论 -
POJ2643 Election(MAP)
题目大意:就是n对数据,上面一个是候选人姓名,下面一个是候选人党派,有个自由党也姑且当做一个特殊党派吧。然后m个数据是选票结果,求最后得胜者,得胜的要求是:其票数大于任何一个人。思路:这道水题需要注意几个地方:The word "tie" if there is no winner; that is, if no candidate receives more votes than every原创 2012-10-09 22:46:41 · 700 阅读 · 0 评论 -
POJ 3253 哈夫曼树
题目大意:就是农夫钜木,费用是木板的长度,求最小费用。怎么联想到是哈夫曼树模型呢?关键字:顺序不同,则费用不同,哈夫曼树的特点就是:给定n个叶子节点,可以使得带权路径长度最小。对于本题,怎样使得每块木板在最短的榉木次数下就可以锯出来(关键字:每块木板),这样就是费用最小的情况,那肯定是先钜大块的木,再从大块的木中钜小块。把一个分支看成钜一次木,所以钜一次木就是一个单位长度路径,哈夫曼树的模型就出来原创 2012-08-08 10:45:47 · 831 阅读 · 0 评论 -
POJ2002
题目大意:给出散点,求构成正方形的个数有多少?思路:给出的是散点,通过2个点来枚举,但是通过公式求得的点 如果是通过线性查找来验证肯定是超时的,因为执行10^9次(O(N^3)),所以要考虑哈希表和二分查找//Memory Time//652K 1438MS #includeusing namespace std;const int prime=1999; //长度转载 2012-08-19 21:15:39 · 900 阅读 · 2 评论