POJ
文章平均质量分 59
CNnumen
If i want , i must try...
展开
-
POJ_1019
注意要使用 unsigned int类型, 还有就是log10((double) i) + 1能够求出数字i的位数, 当然也可以用连除10的方式得到...还有就是pow()的两个参数都是float类型的, 需要强制转换一下... #include #include using namespace std;int getBit(unsigned int index){原创 2010-04-13 15:37:00 · 750 阅读 · 0 评论 -
stl merge使用
<br />#include <cstdlib>#include <iostream>#include <list>#include <iterator>#include <vector>#include <algorithm>#include <string>using namespace std;typedef struct _NODE{ int id; string str; _NODE(int id, string str原创 2010-07-09 10:40:00 · 2628 阅读 · 0 评论 -
经典POJ题目
<br />POJ上一些题目在<br />http://162.105.81.202/course/problemSolving/ <br />可以找到解题报告。<br />《算法艺术与信息学竞赛》的习题提示在网上可搜到<br /><br />一.动态规划<br />参考资料:<br />刘汝佳《算法艺术与信息学竞赛》<br />《算法导论》<br /><br />推荐题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1141 <br />简单<br转载 2010-07-14 15:11:00 · 1041 阅读 · 0 评论 -
POJ1088 DP
<br />状态转移方程dp(i, j) = max(dp(i - 1, j), dp(i, (j- 1), dp(i + 1, j), dp(i, j + 1)) + 1;<br />#include <cstdlib>#include <iostream>using namespace std;const int MAX = 101;int dp[MAX][MAX] = {{0, 0}};int height[MAX][MAX];int getMax(int i原创 2010-07-13 13:03:00 · 993 阅读 · 0 评论 -
经典POJ题目
<br />POJ上一些题目在<br />http://162.105.81.202/course/problemSolving/ <br />可以找到解题报告。<br />《算法艺术与信息学竞赛》的习题提示在网上可搜到<br /><br />一.动态规划<br />参考资料:<br />刘汝佳《算法艺术与信息学竞赛》<br />《算法导论》<br /><br />推荐题目:<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1141 <br />简单<br转载 2010-07-14 15:11:00 · 667 阅读 · 0 评论 -
POJ_2406
<br />#include <cstdlib>#include <iostream>#include <vector>#include <string>using namespace std;int KMP(const string &pat){ int patLen = pat.size(); int i = 0, j = -1; vector<int> next; next.push_back(-1); w原创 2010-07-20 11:59:00 · 644 阅读 · 0 评论 -
POJ_1664
<br />#include <cstdlib>#include <iostream>using namespace std;int getCount(int m, int n){ if(m == 0 || n == 1) return 1; if(m < n) return getCount(m, m); return getCount(m, n - 1) + getCount(m - n, n);原创 2010-07-24 17:05:00 · 506 阅读 · 0 评论 -
POJ_2388
<br />用了三种方法实现的...<br />1.stl nth_element() 16MS<br />#include <cstdlib>#include <iostream>#include <algorithm>#include <cstdio>#include <vector>using namespace std;int main(int argc, char *argv[]){ int count; scanf("%d", &count);原创 2010-07-29 14:47:00 · 750 阅读 · 0 评论 -
POJ_2299(归并排序)
#include #include #include using namespace std;const int MAX = 500001;int value[MAX];int temp[MAX];__int64 result = 0;void merge(int left, int mid, int right){ int k = 0; int i=left; int j=mid + 1; while(i原创 2010-07-30 13:55:00 · 757 阅读 · 0 评论 -
POJ_1050(最大子矩阵和)
<br /> <br />#include <cstdlib>#include <iostream>using namespace std;const int MAX = 101;int value[MAX][MAX] = {{0,0}};int subMaxSum(int a[], int n){ int sum = 0, b = 0; for(int i=0; i<n; i++) { if(b > 0)原创 2010-07-31 15:34:00 · 1776 阅读 · 0 评论 -
POJ_1611(并查集应用)
#include #include #include using namespace std;const int MAX = 30001;int parent[MAX];int num[MAX];void initUnion(int count){ for(int i=0; i原创 2010-07-29 22:19:00 · 787 阅读 · 0 评论 -
POJ_2524(并查集应用)
#include #include #include using namespace std;const int MAX = 50001;int parent[MAX];int num[MAX];int maxNum = 0;void initUnion(int count){ for(int i=0; i原创 2010-07-29 23:13:00 · 580 阅读 · 0 评论 -
POJ_2503(基本Hash)
<br />#include <cstdlib>#include <iostream>#include <cstdio>using namespace std;const int MAX = 100000;const int HASH_SIZE = 100003;const int STR_LEN = 11;typedef struct _NODE{ int hashIndex; struct _NODE *next;}NODE, *PTRNODE;原创 2010-07-30 23:59:00 · 1333 阅读 · 0 评论 -
POJ_1458(最长公共子序列)
<br />#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;const int MAX = 1000;int c[MAX][MAX];int LCSLength(char *x, char *y){ int m = strlen(x); int n = strlen(y); for(int i=1; i<=m; i++)原创 2010-07-31 12:10:00 · 802 阅读 · 0 评论 -
POJ_1426(搜索)
<br /> Find The MultipleTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 6690 Accepted: 2809 Special Judge<br />DescriptionGiven a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only原创 2010-08-05 16:19:00 · 1016 阅读 · 1 评论 -
POJ_3748
<br />#include <stdio.h>#include <stdlib.h>#define SETBIT(x, y) x |= (1 << (y))#define CLRBIT(x, y) x &= ~(1 << (y))int main(int argc, char *argv[]){ int R, X, Y; scanf("%x,%d,%d", &R, &X, &Y); CLRBIT(R, X); SETBIT(R, Y); S原创 2010-06-24 14:59:00 · 790 阅读 · 0 评论 -
POJ_1035_hash
/*这是discuss中一个0MSAC的思路, 先放着, 想想咋实现*/使用大的内存数组存放单词数据,单词的头指针使用哈希表存放,哈希表每个bucket是1个链表,冲突的单词会被放入同一个链表. 链表节点3个域:指向单词的指针,输入里的次序,next指针.原创 2010-07-06 11:40:00 · 681 阅读 · 0 评论 -
POJ_1035_lineSearch
<br />#include <cstdlib>#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;typedef struct _NODE{ string str; int id; friend bool operator<(const _NODE &nod, const _NODE &node)原创 2010-07-06 11:22:00 · 599 阅读 · 0 评论 -
POJ_1032
/* 我们首先先撇开“每组的人数不同”这一约束条件,我们发现如10可以拆成5+5,它的乘积最大,而5又可拆成2+3;2*3>5;故我们发现每次的每一个数都拆成两个相等或相差1的两个数乘积最大。而最大的当然是一直拆到出现2;我们在回来考虑“每组的人数不同”这一约束条件;每组的人数不能相等,但我们又要使数拆成最小的部分(最好拆到出现2),比如说2.3.4~~,那我们大可从2加起,原创 2010-04-13 19:00:00 · 921 阅读 · 0 评论 -
POJ_1000
第一道题, 熟悉系统...#include int main(){ int a, b; scanf("%d%d", &a, &b); printf("%d/n", a + b); return 0;}原创 2010-03-31 12:21:00 · 1710 阅读 · 0 评论 -
POJ_1003
熟悉系统... #include #define PRECISION 0.001int main(){ float length = 0.0; float i = 2.0; float sum = 0.0; while(scanf("%f", &length) && length != 0.00) { i = 2.0; sum = 0.0;原创 2010-03-31 12:23:00 · 899 阅读 · 0 评论 -
POJ_1004
熟悉系统... #include #define MONTH_COUNT 12int main(){float average = 0.0;float sum = 0.0;int i = 0;float inCome = 0.0;for(; i<MONTH_COUNT; i++){scanf("%f", &inCome);sum += i原创 2010-03-31 13:21:00 · 670 阅读 · 0 评论 -
POJ_3100
熟悉系统...#include #include int main(){ int iB, iN, iA = 1; int preDis = 0; int curDis = 0; int flag = 1; while(scanf("%d%d", &iB, &iN) && !(iB == 0 && iN == 0)) { preDis = abs(iB -原创 2010-03-31 15:55:00 · 987 阅读 · 0 评论 -
POJ_2453
简单题, 熟悉系统... #include #define RADIX 2int calOneCount(int val){ int temp = val; int count = 0; int preBit = 0; while(temp) { preBit = temp % RADIX; temp /= RADIX; if(preBit原创 2010-03-31 17:31:00 · 817 阅读 · 0 评论 -
POJ_1028
感觉是道基础题, 开始用栈实现的, 纠结了一阵子, 后来参考了网上的思路, 晕死... #include #include using namespace std;const int MAX_NUM = 200;int main(){ string command; string webSites[MAX_NUM] = {"http://www.acm.or原创 2010-04-13 16:52:00 · 1119 阅读 · 0 评论 -
POJ_2388
简单练手, 在没有接触ACM之前竟然不知道C中有qsort()函数, 哎, 说出来丢人, 主要用下qsort()就行了... #include #include #define MAX_COUNT 10000int cmp(const void* a, const void* b){ return *(int*)a - *(int*)b;}int main()原创 2010-04-02 09:39:00 · 672 阅读 · 0 评论 -
POJ_2407
这题从题意可以看出就是求比从1~n - 1从有几个数和n没有公共因子, 通常的算法很简单就能够想到, 我开始也是按通常的做法写了一个, 觉得可能会TLE, 果不其然, 后来上网查了一下, 知道了欧拉函数, 这个就是求比n小的数中与n互质(也就是没有公共因子)的算法, 看来还是那些经典的算法效率比较高, 比纯用暴力试探高多了... 欧拉函数描述如下: 利用欧拉函数和它本身不同原创 2010-04-02 12:48:00 · 1500 阅读 · 0 评论 -
POJ_1012
/*超时思路 */ #include #include using namespace std;class CJoseph{public:CJoseph();void setM_k(int _k) {m_k = _k;};void display(){cout<<m_m<<endl;};void setM_m(int m){m_m = m;};原创 2010-04-13 11:28:00 · 670 阅读 · 0 评论 -
POJ_1001
高精度数的计算, 以前在网上看到过一个计算大数阶乘比如10000000!的算法, 总体思想就是将结果用数组保存起来, 然后将结果的每一位与乘数相乘, 当然还有进位... 有了这个算法的思想, 这个题思路就可以是:先将输入的小数转换成一个整数, 当然这个整数肯定能够用int类型的变量保存, 比如1.2345, 通过函数 removeDot()将它转化成12345, 然后利用大数阶原创 2010-04-02 16:11:00 · 843 阅读 · 0 评论 -
POJ_1005
简单题: #include #include #define pi 3.14159265358979#define SHRINK_PRE_YEAR 50int main(){ float x, y; double s = 0.0; int count = 0; int index = 0; scanf("%d", &count); whil原创 2010-04-02 17:09:00 · 1079 阅读 · 0 评论 -
POJ_1035_Trie
<br />第一道trie树题, 但是时间,空间都没有达到高效, 922MS, 17M的内存, 还不如暴搜, 天...<br /> <br />只是想熟悉下trie树, 所以采用了这个,大体思想是首先根据输入的字典单词建立trie, 然后再枚举各种可能的单词, 添加一个字母, 删除一个字母, 替换一个字母啥的, 最后将结果根据最初输入的次序排序, 去重后输出...<br />#include <cstdlib>#include <iostream>#include <string>#includ原创 2010-07-05 11:33:00 · 926 阅读 · 0 评论 -
POJ_1088
<br /> 做的第一道DP问题的题, 思路来源于网上, 感觉这个思路蛮好的...<br />(http://www.cppblog.com/abilitytao/archive/2009/02/19/74271.aspx)<br /> <br />#include <iostream>#include <cstdio>#include <algorithm>using namespace std;#define MAX_COUNT 101#define MAX 20000ty原创 2010-07-02 14:46:00 · 1255 阅读 · 0 评论 -
POJ_1936
<br />#include <cstdlib>#include <iostream>#include <cstdio>using namespace std;int const MAX_LEN = 100001;int main(int argc, char *argv[]){ //freopen("input.txt", "rt", stdin); //freopen("output.txt", "wt", stdout); char s原创 2010-07-06 22:23:00 · 665 阅读 · 0 评论 -
POJ_1002
<br />#include <cstdlib>#include <iostream>#include <string>#include <vector>#include <algorithm>#include <stdio.h>#include <string.h>using namespace std;char charToNum(char c){ switch(c) { case 'A': case 'B': case '原创 2010-06-25 14:18:00 · 672 阅读 · 0 评论