随笔分类 -  POJ

POJ 1095 Trees Made to Order
摘要:闲来无事,跑到POJ上找找水题,好久不写C的代码,感觉生疏了。View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 19 4 int num[MAXN]; 5 6 void OutputBinaryTree(int n, int k, bool s) { 7 if (n == 0) return; 8 int i, j, sum; 9 for (i = sum = 0, j=num[n-1]; sum + j < k; sum += j, ++i, j = num[i] * num[n- 阅读全文

posted @ 2013-03-06 23:05 ltang 阅读(251) 评论(0) 推荐(0)

POJ 1201 Intervals
摘要:解题思路:差分约束+spfa1)dist[e.y]=dist[e.x]+dist[e.v]2)dist[i]=dist[i+1]-13)dist[i+1]=dist[i]分别将2,3中连续点进行合并Line 56~63代码 阅读全文

posted @ 2011-01-20 10:52 ltang 阅读(527) 评论(0) 推荐(0)

POJ 2352 Stars
摘要:解题思路:线段数组求解小于当前点x坐标点的个数代码 阅读全文

posted @ 2011-01-18 22:29 ltang 阅读(152) 评论(0) 推荐(0)

POJ 1472 Instant Complexity
摘要:模拟题:递归求解,有点像语法分析器代码 阅读全文

posted @ 2011-01-17 21:00 ltang 阅读(582) 评论(1) 推荐(0)

POJ 3273 Monthly Expense
摘要:解题思路:开始下限去最大值,上限去开始的连续N-M+1数之和二分逼近代码 阅读全文

posted @ 2011-01-10 19:43 ltang 阅读(290) 评论(1) 推荐(0)

POJ 2115 C Looooops
摘要:解题思路:求解(P*x)%M=Q,最小的非负整数x;即求解P*x + M*y = Q,令p=d1*gcd(P, M),M=d2*gcd(P, M)所以方程变为 d1 * x + d2 * y = Q / gcd(P,M),若gcd|Q,令d3 = Q/gcd(P,M),否则,解不存在。d1 * x + d2 * y = d3 ,且gcd(d1, d2)=1利用扩展的欧几里得原理求解d1 * x' + d2 * y' = 1方程的通解变为 x = x‘ * d3 + d2 * i, y = y’ *d3 - d1 * i。代码 阅读全文

posted @ 2011-01-10 15:54 ltang 阅读(439) 评论(3) 推荐(0)

POJ 1845 Sumdiv
摘要:解题思路:对A质因子分解A=p1^n1*p2^n2*...*pm^nm,则A^B=p1^(n1*B)*p2^(n2*B)*...*pm^(nm*B);A^B的因子之和为(1+p1^1+...+p1^n1*B)*(1+p2^1+...+p2^n2*B)*...*(1+pm^1+pm^2+...+pm^nm*B);1+pi^1+...+pi^m=(1+pi^m-1)/(pi-1),因此因子之和可以化成p/q的形式,且q,M互质时:(p/q)mod(M)=p*q^(-1)mod(M)q^(-1)为q的乘法逆元,M为质数时q^(-1)=q^(M-2),所以(p/q)mod(M) = (p * q^(p 阅读全文

posted @ 2011-01-10 15:42 ltang 阅读(516) 评论(4) 推荐(0)

POJ 3292 Semi-prime H-numbers
摘要:解题思路:1 首先判断prime:H-numbers, 下标i表示4*i+1,j表示4*j+1,则(4*i+1)*(4*j+1)=4(4*i*j+i+j)+1,即下表i,j的乘积为下标4*i*j+i+j,判断prime方法类似判断普通prime方法,Line 10~122 判断Semi-prime,prime以及prime与no-prime的乘积肯定为非Semi-prime,Line 15~223 统计代码 阅读全文

posted @ 2011-01-03 21:20 ltang 阅读(305) 评论(0) 推荐(0)

POJ 2635 The Embarrassed Cryptographer
摘要:解题思路:  枚举10^6内的所有素数  诡异的是,采用10^10进制的时间比采用10^3进制时间大,不明真相  程序中采用的是10^12进制代码 阅读全文

posted @ 2010-12-31 15:04 ltang 阅读(198) 评论(0) 推荐(0)

POJ 1397 The Bulk
摘要:这还是以前在spoj上A的一道题,不过直接在poj提交时Time Limit Exceeded,本打算有时间把算法重新优化一下,昨天无聊把输入改为scanf试试,没想到竟然过了,意料之外。简单的讲一下思路:我们先考虑平面求面积的情况:图1图2考虑与x轴平行的线段,沿y轴从下往上1)出现重叠就删除重叠部分2)出现相接部分就连接起来例 图1首先出现线段(0,0)-(10,0),长度l=10,往上遇到(0,3)-(3,3)、(7,3)-(10,3),相对高度h=3,此时面积增加Δs=l*h=30;  按照原理1)此时线段变为(3,3)-(7,3), l=4往上遇到(0,7)-(3,7)、(7,7)- 阅读全文

posted @ 2010-12-31 11:13 ltang 阅读(593) 评论(0) 推荐(0)

POJ 1942 Paths on a Grid
摘要:解题思路:组合数学1-递推:C(m,n)=c(m-1,n)+C(m,n-1),时间复杂度O(m*n)2-组合,时间复杂度O(min(m,n))代码 阅读全文

posted @ 2010-12-31 10:22 ltang 阅读(238) 评论(0) 推荐(0)

POJ 1019 Number Sequence
摘要:求解思路:  1求解该位置所在的循环序列 Line:14~16  2 求解该位置数的位数 Line:17  3 求解该位置的数 Line:18  4求解该数的的对应位置的数值[代码] 阅读全文

posted @ 2010-12-30 17:12 ltang 阅读(197) 评论(0) 推荐(0)

POJ 1850 Code
摘要:解题思路:组合数学题,注意题目要求升序排列类似于POJ3252,c[i][j]存储(choose i from j 的)组合值[代码] 阅读全文

posted @ 2010-12-29 22:44 ltang 阅读(216) 评论(0) 推荐(0)

POJ 3252 Round Numbers
摘要:解题思路:1. d[i][j]表示需i位二进制表示且1的个数不大于j(首位为1)的数的总和2. 对数a,假设其二进制需要i位表示  a)求不大于a round Number总和Line 6~8  b)如果j位为1,假设目前为止总共已出现k个1,求解位数小于j位且1的个数不大于i/2-k的数总和 Line 9~13好烂的代码 阅读全文

posted @ 2010-12-29 17:02 ltang 阅读(361) 评论(0) 推荐(0)

POJ 1159 Palindrome
摘要:解题思路:求解原串与其反串的LCS[代码] 阅读全文

posted @ 2010-12-28 18:05 ltang 阅读(136) 评论(0) 推荐(0)

POJ 1080 Human Gene Functions
摘要:解题思路:类LCSopt[i][j]表示第一个字符的前i个字符与第二个字符前j个字符的最大匹配值[代码]Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include iostreamusing namespace std;inline int ctoi(char c){ switch (c) { case 'A': return 0; case 'C':return 1; case 'G':return 2; default:return 阅读全文

posted @ 2010-12-28 10:28 ltang 阅读(201) 评论(0) 推荐(0)

POJ 3176 Cow Bowling
摘要:解题思路:dp(水)代码 阅读全文

posted @ 2010-12-27 12:02 ltang 阅读(143) 评论(0) 推荐(0)

POJ 2533 Longest Ordered Subsequence
摘要:解题思路:最长递增子序列[代码] 阅读全文

posted @ 2010-12-24 13:05 ltang 阅读(209) 评论(0) 推荐(0)

POJ 1260 Pearls
摘要:解题思路:dpdp方程:[代码]//opt[i]=min{opt[j]+[a[j+1]+....+a[i]+10]*p[i]}//CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#includeiostreamusing namespace std;#define MAXN 1e9int main(){ int n,i,j,c,m,t,a[100],p[100],opt[101]={0}; scanf("%d", &n); while 阅读全文

posted @ 2010-12-24 11:19 ltang 阅读(192) 评论(0) 推荐(0)

POJ 1836 Alignment
摘要:解题思路:正反方向最长递增子序列(参照POJ2533),然后枚举中心[代码] 阅读全文

posted @ 2010-12-23 23:41 ltang 阅读(260) 评论(0) 推荐(0)

导航