
搜索
文章平均质量分 58
Baoli1008
233
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces Round #256 (Div. 2) C. Painting Fence
题目链接:点击打开链接使用了分治的思想,将问题分解为相同的子问题处理,对于原创 2014-07-26 08:45:35 · 490 阅读 · 0 评论 -
Codeforces 333D Characteristics of Rectangles
二分。收获:二分判断函数中,不一定非要解合法才返回真,只要它能单调的逼近真正的解即可。比如这道题中一些值在矩阵中不一定存在但是判断函数仍然返回1,最终得到的答案一定是存在的。代码:#include #include #include #include using namespace std;int a[1005][1005];int N,M;bool vis[1原创 2015-01-29 20:58:17 · 843 阅读 · 0 评论 -
CodeForces 430C Xor-tree(DFS)
首先翻得顺序一定是按照树的深度,由上至下,每遇到一个不一样的就要翻,然后更新这个子树。但是这样显然是超时的。实际上在一棵子树中,按照层次的奇偶性可以分成两个集合,设为a,b,如果根节点在a集合,并且要修改,那么修改的就是b集合,反正一样。于是就从根节点开始DFS,每向下搜一层,层次的奇偶就发生了互换,所以交换a1,a2。输入给的边不一定是什么方向的,邻接表要全都添加,然后DFS时开原创 2015-02-02 17:39:39 · 812 阅读 · 0 评论 -
POJ 1003 Hangover(二分搜索)
#include #include #include #include using namespace std;#define eps 1e-7int BS(double c){ int l=0,r=280,mid; double k=0; while(l<r-1){ k=0; mid=(l+r)/2; for(int i=2;i<=mid+1;i++){ k+原创 2015-03-25 19:26:17 · 795 阅读 · 0 评论 -
POJ 1006 I Think I Need a Houseboat(二分)
二分满足条件的年数。代码:#include #include #include #include using namespace std;#include #define eps 1e-8#define pi acos(-1.0)int BS(double k){ int l=0,r=100000; int mid; while(l<r-1){ mid=(原创 2015-03-25 20:28:21 · 471 阅读 · 0 评论 -
UVa 11525 Permutation(二分+树状数组)
题中的展开实际就是康托展开。可以这样理解:假设确定了排列的第一位,那么还剩下K-1个数,全排列数为(K-1)!因此答案第一个数一定是S1+1以此类推,可以得知第i位的答案就是在未选的数中第Si小的。问题就转化成了如何确定未选的数中第k小的数是多少。用树状数组c,维护数i之前有多少个数被取走了。这属于单点修改,区间查询。这样如果i-c[i]>=k,那么i这个位原创 2015-03-21 12:13:30 · 610 阅读 · 0 评论 -
POJ 1011 Sticks(搜索剪枝)
有以下几个剪枝,按难度排序:下文‘部分’代表切割后的小棒子1.做假设的长度一定可以整除所有部分长度之和2.当选择一个部分刚好能把现在组合的这根棒子补全,而之后的棒子无法补全时,直接返回false,不需要试其他部分。因为如果不选这个部分,想把当前棒子补全,需要选其他几个长度和等于这个部分的小棒子,这样留下的局面比直接选初始的那个部分更差。3.当刚开始拼接一个棒子时,如果选择某个部原创 2015-03-31 12:21:32 · 635 阅读 · 0 评论 -
POJ 1033 Defragment(搜索)
用a[n]来表示位置n的数应该在哪个位置。这样有两种情况:一是正常情况:沿着n->a[n]->a[a[n]]这条路径一直走,直到出现一个空位,然后逆序把之前路径上的每一个节点和下一个节点(它应该在的位置)交换二是有环的情况:在上面那条路走的过程中又回到n了,那么就要把n之前最后一个节点挪到后面一个空位上,记录这个空位的位置,之后和一一样操作,最后在把那个空位的数放回n注意不需要移动原创 2015-04-02 21:15:13 · 711 阅读 · 0 评论 -
UVa 10047 The monocycle (BFS)
bfs开标记空间时,一个状态不但要标记所在的位置,还要标记颜色,方向。因此可以开一个4维数组。每个状态可以转移到3个状态。代码:#include #include #include #include #include using namespace std;int M,N;int ox,oy;int dis[30][30][6][4];char Map[30]原创 2015-03-24 15:02:34 · 539 阅读 · 0 评论 -
UVa 11624 Fire!(BFS)
首先预处理出每个位置被大火烧到的时间,这个也是用bfs计算火的路径。然后再正常对Joe逃跑路径bfs。代码:#include #include #include using namespace std;#define maxn 1005#include int R,C;int F[maxn][maxn];char M[maxn][maxn];bool vis[原创 2015-03-24 15:05:21 · 429 阅读 · 0 评论 -
POJ 1064 Cable master(二分)
把实数乘100转化成整数再二分,乘之前要加一个eps代码://// main.cpp// 1064 Cable master//// Created by Baoli1100 on 15/4/11.// Copyright (c) 2015年 Baoli1100. All rights reserved.//#include #include #incl原创 2015-04-11 22:35:10 · 536 阅读 · 0 评论 -
POJ 1166 The Clocks(状压BFS)
用一个数状压9个表的状态,每个表4种情况,最多才4^9,标记空间开得下。记录路径时,用pre[i]表示i状态之前的状态是哪个,chs[i]表示这一次用的哪种操作到的i状态。BFS过程中每次第一次到达某状态就确定这两个值,最后递归得到路径,再排个序即可。代码:#include #include #include #include using namespace std;原创 2015-05-14 21:31:25 · 652 阅读 · 0 评论 -
HDU 5289 Assignment (二分+RMQ) 2015多校训练一 1002
假设右端点r固定,那么如果能找到离得最远的一个l,使l到r满足要求,那么[l+1~r],[l+2~r].....都满足要求。所以可以枚举右端点,去找最远的满足条件的左端点,使满足条件,答案就是把这些长度求和。因为序列是静态的,所以可以用ST算法在log n时间求出任意区间内的最大,最小值,然后用这些值二分求解最远的l。代码:#include #include #includ原创 2015-07-22 11:19:13 · 515 阅读 · 0 评论 -
HDU 5288 OO’s Sequence (二分)2015多校训练一
本题可以转化为对于每个数,求它向左向右分别能延伸多远直到遇到它的第一个因子,这个数的贡献就是这两个数相乘。数字最大只有10000,用10000个vector记录每个数字的位置。然后遍历原始序列,对于第i个数,枚举它的所有因数(这个预处理),二分分别搜索这个因子在i左边最近的和右边最近的两个位置lp,rp。然后对于所有因子产生的这些lp,rp,求一个最小的区间交,就是第i个数左右能延原创 2015-07-22 11:10:55 · 534 阅读 · 0 评论 -
POJ 2112 Optimal Milking (网络流+二分)
首先floyd求出任意两点间最短路。然后二分路径长度的最大值。 每次二分中:1对于所有长度小于等于这个最大值的 从奶牛到机器的路径,建一条流量为无限的边。2.再从源点到每头牛建一条流量为1的边。3.从每个机器到汇点建一条流量为M的边最后看看最大流是否等于C,等于则这个最大值合法。注意: 若输入数据中不同两点间距离为0,表示的是到达不了。代码:#inc原创 2015-07-23 11:49:09 · 463 阅读 · 0 评论 -
hdu 4771 Stealing Harry Potter's Precious(bfs+枚举)
注意,宝藏数最多只有4个,所有我们可以先用bfs搜索出宝藏原创 2014-11-02 15:49:25 · 539 阅读 · 0 评论 -
hdu 4770 Lights Against Dudely(暴力搜索)
本题的一个关键点在于需要照亮的fa原创 2014-11-02 15:41:41 · 651 阅读 · 0 评论 -
poj 3258 River Hopscotch(二分搜索)
又是一道二分搜索题,二分搜索思路就是原创 2014-09-26 23:05:09 · 577 阅读 · 0 评论 -
poj 2386 Lake counting(深度优先搜索)
题目链接:点击打开链接遍历zheng原创 2014-09-25 20:53:05 · 766 阅读 · 0 评论 -
poj 2785 4 Values whose Sum is 0(双向搜索)
思路:朴素的枚举是n原创 2014-09-25 23:01:54 · 483 阅读 · 0 评论 -
acdream 1207 qj的寻找爱情之旅
题目链接:点击打开链接二分骚原创 2014-09-22 10:54:41 · 840 阅读 · 0 评论 -
Codeforces Round #256 (Div. 2) D. Multiplication Table
逆向思维,二分查找答案,原创 2014-07-26 09:26:13 · 725 阅读 · 0 评论 -
poj 3669 Meteor Shower(广度优先搜索)
题目链接:点击打开链接用des数z原创 2014-09-25 20:48:41 · 586 阅读 · 0 评论 -
poj 2976 drop texts(二分搜索)
题目链接:点击打开链接原创 2014-09-18 13:22:45 · 535 阅读 · 0 评论 -
poj 3061 Subsequence(尺取法)
题目链接:点击打开链接原创 2014-09-25 21:02:31 · 439 阅读 · 0 评论 -
hdu 4474 Yet Another Multiple Problem(BFS)
答案会爆long long ,所以要逐位搜索。原创 2014-11-11 20:28:21 · 654 阅读 · 0 评论 -
三分法——求凸性函数极值
转自:点击打开链接转载 2014-10-26 12:45:01 · 1343 阅读 · 0 评论 -
zoj 3635 Cinema in Akiba(树状数组+二分)
用树状数组维护第i个位置前面有多少空位,然后原创 2014-10-08 20:52:39 · 498 阅读 · 0 评论 -
hdu 4435 charge-station(几何+bfs)
最后输出的答案实际上从右wangzuo第i位就代表第i个城市原创 2014-10-28 10:56:31 · 512 阅读 · 0 评论 -
poj 1088 滑雪(记忆化搜索)
记忆化搜索典型题。原创 2014-10-31 12:52:36 · 776 阅读 · 0 评论 -
poj 2104 K-th Number(线段树)
求区间第K大数。线段树每个区间维护一个有序的数组。原创 2014-10-10 18:52:14 · 812 阅读 · 0 评论 -
HDU 1401 Solitaire (双向搜索)
每一步有4*4=16个决策,单向搜索的话有16^8种状态,双向搜索只有32^4种状态,缩小了解空间。双向搜索用来解决起点和终点确定的搜索问题。方法就是从起点和终点轮流走,分别有各自的队列和标记数组。起点每到一个新的状态,就到终点的标记数组中查询,判断是否有交点。终点也是做一样的操作。注意:Hash时如果像我一样8进制压缩,每个数必须是0~7的,也就是输入的坐标要减1原创 2015-08-17 14:25:06 · 665 阅读 · 0 评论