![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ
文章平均质量分 72
ky_lynx
这个作者很懒,什么都没留下…
展开
-
POJ_1005
//364K 16MS#include #include const float PI = atan(1.0f) * 4;float round(int j) { return sqrt(j * 50 * 2 / PI);}float dis(float x, float y) { return sqrt(x * x + y * y);}int main() {原创 2013-10-29 17:48:28 · 367 阅读 · 0 评论 -
POJ_2262
思路: 线性筛选,计算出所有的小于1000000的素数,然后从头开始查找,找到的第一组就是差最大的。notes: 提交的时候用c++明显要快,wa了很多次,但是把数组开成全局的并且使用宏定义替换了全局常量就ac了,被坑的很惨。优化: 第一次写筛选法的时候,TLE了,后来参考了高手的文章“筛法求质”http://blog.csdn.net/redraiment/原创 2013-11-14 17:54:59 · 480 阅读 · 0 评论 -
POJ_2965
1. 解题思路: 首先,还是要理解这种类型的题,每个格子操作的次序是不重要的。 如果想改变一个开关的状态,并且其他开关保持不变,则可以操作一次这个开关,然后将和这个开关同行同列的其他开关也操作一次。 因此,想将所有的开关都打开,可以依次用上面的方法操作所有的+开关。用一个矩阵记录所有开关的操作次数,将矩阵元素%2,因为操作两次等于不操作。最后1的为所求。2. 其他原创 2013-11-27 15:22:56 · 417 阅读 · 0 评论 -
POJ_1753
1. 位运算+BFS2. 枚举:只要有一种枚举不满足,则其他枚举也不满足,反之,只要有一种枚举满足,则所有枚举都满足,因为同一个方块反转两次,整体不变,猜测所有的可行解都是可以相互转换,并且都始于全黑/白,终于全黑/白。3. 高斯消元法原创 2013-11-26 16:35:54 · 739 阅读 · 0 评论 -
POJ_1083
思路:1. 将corridor抽象为一个计数器数组,一对房间的corridor为一个元素,然后计算每个过道元素被经过几次,整个数组被经过最多的过道元素即为最少搬运组数。//132k 0ms#include #include #include int main() { int T, N, st, en; char corridor[200]; scanf("%d原创 2013-11-12 14:30:38 · 584 阅读 · 0 评论 -
POJ_2739
#include #include #include #include using namespace std;int main() { bool is_prim[10001]; memset(is_prim, true, 10001); for (int i = 2; i < 10001; ++i) { if (!is_prim[i]) contin原创 2013-11-08 19:28:17 · 546 阅读 · 0 评论 -
POJ_题目分类
OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法.转载 2013-11-19 17:33:35 · 960 阅读 · 0 评论 -
POJ_1001
#include #include #include char res[151], base[7];int exp, dec;void Reverse() { for (char *st = base, *end = base + 5; st < end; ++st, --end) *st ^= *end, *end ^= *st, *st ^= *end; retu原创 2013-11-18 17:28:56 · 617 阅读 · 0 评论 -
POJ_2159
//164k 16ms#include #include #include #include #include using namespace std;int main() { char cc[26], mc[26]; memset(cc, 0, 26); memset(mc, 0, 26); char input[101]; scanf("%s", in原创 2013-11-07 16:04:18 · 403 阅读 · 0 评论 -
POJ_3094
解题: 水。summary:c输入一行 1. char * gets(char * buffer),从stdin读一行,/n或EOF结束, 返回buffer指针,如果在读到任何字符前EOF,则返回null。 需要注意, 如果超过buffer的size,则会buffer overflow。 2. char * fgets(char * str, i原创 2013-11-18 16:18:53 · 671 阅读 · 0 评论 -
POJ_2255
解题: 比较直接,由二叉树pre-order和in-order求后序, 可以重构树再遍历,更好的方法是找到三种序列的关系,直接求解。注意: 1. 从效率考虑,应该用栈迭代,而不要用递归。 2. 最后遍历结果栈的时候,犯了很2的错误,debug好9,一定吸取教训。//144k 0ms#include #include #include #in原创 2013-11-18 14:47:25 · 734 阅读 · 0 评论 -
POJ_3006
解题: 果然是水题, 还是直接线性打表, 然后查找。 不过,1million之内的素数表,只用了16ms,这个应该是已知最快的了吧?哈哈~//1108k 16ms#include #include #include #define MAX 1000000char prime[MAX];int main() { memset(prime, 1, MAX)原创 2013-11-15 14:56:02 · 372 阅读 · 0 评论 -
POJ_3299
//412k 0ms#include #include #define HUM(d, t) (6.11 * exp(5417.7530 * ((1 / 273.16) - (1 / (d + 273.16)))) - 10.0) * 0.5555 + t#define DEW(h, t) (1 / ((log(((h - t) / 0.5555 + 10.0) / 6.11) / 5原创 2013-11-01 13:55:29 · 474 阅读 · 0 评论 -
poj_1635
有根树同构问题有两种解法: 1. 树的最小表示,用一系列括号表示一棵树,一对括号内是一颗子树,由于子树没有次序,因此可以将树的所有子树的最小表示(树的递归结构)按照字典序排序,即为树的最小表示,比较两颗树的最小表示,相同则同构。详细可参考:www.byvoid.com/blog/directed-tree-bracket-sequence/ 算法的复杂度应该是O原创 2014-04-24 17:17:56 · 631 阅读 · 0 评论