- 博客(12)
- 收藏
- 关注
原创 poj2528 线段树+离散化
题意:n(n 求出最后还能看见多少张海报。输入:151 42 68 103 47 10解法:离散化,如下面的例子(题目的样例),因为单位1是一个单位长度,将下面的 1 2 3 4 6 7 8 10 — — — — — — — — 1 2 3 4 5 6
2012-03-22 22:32:10 11126 13
原创 poj3258 二分及一些思考
题意:牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值。用二分做,但是开始写了三个版本的二分,全都wa。无赖看了别人的二分,还是不理解,为什么他们写的就能过。反复思索后,终于明白了:关键在于题目求的是什么。做题思想:二分
2012-03-18 14:50:12 5186 1
原创 poj3273 二分,以及关于二分的一些思考
题意:给定n个元素的一个序列,要求用隔板法将其分为m段,编程求出分成m段后,将每一段的数相加所得的最大值最小为多少做法,枚举可能的数值,然后判断分段的段数,跟给定段数m进行比较,接着不断逼近即可。#include #include using namespace std;int money[100005], n, k;int BSearch(int l, int h, in
2012-03-17 19:58:38 639
转载 各类背包问题
今天刷了男人八题中的1742,是一道多重背包,一开始把1276代码改了之后交上来,发现TLE了,于是去disscuss区看了说,说用二进制优化的多重背包也是过不了的,要用更加优化的多重背包,于是上网搜了下,根据别人代码修改了自己的代码,于是AC了,不过实在看不出别人代码为什么会比自己那个优化那么多。写完后就搜了下背包问题,找到一篇介绍各类背包以及优化方法,觉得不错就贴上来了它是在1978年由M
2012-03-17 16:42:04 999
原创 poj2115 扩展欧几里德算法小结
以下是学习扩展欧几里德算法的资料的整合,有的转自别处,如百度百科。扩展欧几里德算法源于欧几里德算法。欧几里德算法:gcd(a,b)= gcd(b,a%b)。证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有d|a, d|b, 而r = a - kb,因此d|r 因此d是(b,a mod
2012-03-17 15:43:18 2449 1
原创 poj3292
http://poj.org/problem?id=3292筛选法:p【i】 == 0表明4i+1为h-prime, p【i】 == 1表明4i+1为非h-semi-prime的h-composites, p【i】 == 2表明4i+1为h-semi-prime如何筛选看代码#include #include using namespace st
2012-03-08 12:44:54 672
原创 poj1019 递推 number sequence
按这样的方式将字符串分组:1,12,123,...,123...n,... 用 f【】表示每一组的长度(数字的个数),所以: 1 ~ 9 : f【i】= f 【i - 1】+ 1; 10 ~ 99 : f【i】= f 【i - 1】+ 2; 100 ~
2012-03-07 18:51:31 669
原创 poj1416 dfs 碎纸机
题意:将一个数字m(不超过六位)剪成几段,要求得到的新的几个数之和不超过另外一个给定的数n,求可以得到的最接近n的数,具体输出看题。记录路径输出。#include #include #include #include using namespace std;#define M 6int d[M], tar, val, len, num[M][M];bool flag;
2012-03-06 22:26:10 2127
原创 poj3414 Pots
倒水游戏,两个水壶互相倒水,直到某个水壶中的水量到达目标值,若不能到达,输出impossible这个题完全自己做出来还是感觉很开心的,因为以前在一次比赛上做过,但是没做出来,现在做出来说明还是成长了广搜,以及路径记录,最后递归输出路径。#include #include #include #include using namespace std;#define M 105
2012-03-02 21:10:17 977
原创 poj2531 暴搜
给定无向图,将顶点分成两个集合,使得两个集合间的所有边权最大。#include #include #include using namespace std;int c[22][22], n, ans, set[22]; //最初所有节点都默认在集合0void DFS(int id, int sum){ int i, t; set[id] = 1;
2012-03-02 21:04:16 1208
原创 poj2676 Sudoku 数独
记录所有空位置,三个数组(row[M][M], col[M][M], mat[3][3][M])hash判断当前空位置是否可以填某个数,然后直接DFS,注意从后往前搜索,时间比正向搜快很多。#include #include #include using namespace std;#define M 11struct point { int x, y; } p[100];
2012-03-02 20:52:18 1549
原创 poj1129 dfs
题意:给定无向图,对点着色,使得相邻的结点颜色不同。直接搜索,没有用四色原理,用四色原理也是暴力,没有什么影响。#include #include #include using namespace std;#define M 26int n, ans, color[M]; bool map[M][M], isFind;bool ok(int x, int c) {
2012-03-02 20:43:07 3255 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人