- 博客(93)
- 收藏
- 关注
原创 Archlinux 安装记录(一)
好像好久不写blog blahblah 之类的东西了,但愿这次会坚持的久一点。楼主最近想找一台slave 机来玩(本机Ubuntu 13.04),想装一个other linux 发行版,脑抽的问了stonekyx,他在使archlinux,然后我就呵呵呵。。。Zacky原创,转载请注明出处。
2014-11-30 12:06:18 1794
原创 SOJ Binary Numbers dp + 逼近思想
题意:给定k(k题解:看到题就想到是构造,由于问的是第k大,那么逐步逼近。 预处理出dp[ i ][ j ][ 0 ]表示末 i 位中有 j 个1且当前位为0的方法数,dp[ i ][ j ][ 1 ]表示末 i 位中有 j 个1且当前位为1的方法数, 然后从高位到低位扫一遍即可。但是由于n = 1的时候可以直接得到答案,所以n = 2为极限情况,所以预
2012-11-26 19:03:29 696
原创 POJ 1011 Sticks 经典dfs + 剪枝
题意:给n(n题解:经典dfs+剪枝。总结起来三个剪枝,具体见代码。Sure原创,转载请注明出处#include #include #include #include using namespace std;const int maxn = 70;int stick[maxn];bool vis[maxn];int sum,n,cur;bool cmp(
2012-11-12 00:01:52 648
原创 POJ 2750 Potted Flower 动态最大子段和
题意:给定n(4 但是要求不能所有的数字都被选择。题解:最大子段和的维护,因为是环形,需要同时维护最小子段和,至于能不能全选,维护最小值判断下即可。Sure原创,转载请注明出处#include #include #include #define MIN(a , b) ((a) < (b) ? (a) : (b))#define MAX(a ,
2012-11-10 18:53:52 840
原创 HDU 2416 Treasure of the Chimp Island bfs 最短路
题意:给最大100*100的地图,$代表财宝,*表示不可达,. 表示走过不需要花费,1~9表示走过需要花费1~9,边界格子为* ,#(表示从此进入可以带0个 炸药)或A~Z(表示从此进入可以带1~26个炸药),现在一个人可以从边界非*处进入,最小到达$位置的最小花费是多少。题解:如果考虑枚举起点的话,最坏情况边界全部为起点,这样至少100*100*100*100的复杂度就悲
2012-11-01 23:54:09 953
原创 HDU 2480 Steal the Treasure 并查集+想法
题意:给n(1 偷,想使得所有小偷得到的钱最多(小偷要沿着边的方向走并且只能走到相邻的一条边),问最多能得到多少财宝。题解:想法贪心,把所有边按照边权从大到小排序,对于单向边如果当前起始点的小偷还可以偷,那么就偷这条边,那么双向边如何处理呢?想象一个由x个点 x-1条双向边组成的连通块,如果此时规定一个点指出去的方向那么其他点的方向就能定下来,并查集维
2012-11-01 14:24:19 1525 2
原创 HDU 4445 Crazy Tank 三分+枚举+二分
题意:在高为H的台上有一个坦克向右打炮,[L1.R1]为敌军范围,[L2,R2]为友军范围,现在有n(0 角度使得任意一个不打在友军的范围内同时打在敌军最多。题解:对于不同的炮弹打的最远的角度是不一样的,因为这个我wa的很惨。对于每个炮弹三分找出能打最远的角度,然后枚举打的点分别为L1.R1,L2,R2, 二分得到两个角度更新答案。
2012-11-01 00:54:52 1699 1
原创 ural 1928 Another ecology problem 博弈dp
题解:两个公司从教育部轮流申请资金,如果库中钱充足的话那么就会拨给这个公司,如果一旦库中没有钱那么停止,如果申请的钱多余库中的那么教育部长会 把手中的m元钱给他之后申请结束,开始库中有n元钱,每个公司每次申请资金的范围是[1 , k],问先手的公司最多能得到多少钱,在得到最多钱的情况下 能让对手得到最少的钱数。题解:开始是博弈的想法,枚举每个人决策的平衡
2012-10-28 14:26:04 948
原创 HDU 3721 Building Roads 树形dp + 枚举直径
题意:有n(1 连接的点对,形成一个新树,问形成的所有新树中P(T)的最小值。题解:首先可以肯定的是选中的边一定是直径中的一条边,否则直径不变。现在就是将选中的边放在那里的问题,枚举去掉直径上的边形成两颗子树,在两个 子树分别求直径d1,d2,然后分别求出直径上的点v(假设直径为a->b),使得ABS(len(av) - len(vb))最小,那么将当前
2012-10-26 21:22:38 906
原创 HDU 4125 Moles 笛卡尔树 + kmp
题意:有n(1 也要按照鼹鼠的出场顺序挖洞,在形成的二叉树按照中序遍历顺序奇数偶数(1,0)得到01序列,问01序列中给定的序列出现多少次。题解:笛卡尔树,k(SBT)为鼹鼠的权值,a(堆)为鼹鼠的编号,排序后O(n)建树之后kmp即可。递归会RE,手动模拟栈。Sure原创,转载请注明出处#include #include #include #
2012-10-25 11:40:59 1010
原创 SGU 396 Dance it up! 状态压缩dp
题意:一个人要跳由LRUD组成的序列的舞,然后由题目描述中不同的动作变换需要花费不同的值,问最少需要多少花费能跳完整支舞。题解:dp[ i ][ j ]表示跳到第 i 位置时候状态为 j 的最小花费,其中注意的是每种状态有三种子状态,分别是左脚踩,右脚踩和双脚都不踩, 那么一共有36种状态(注意RL状态是不合法的),然后path[ i ][ j ]记录路径即可。
2012-10-23 10:10:00 685
原创 SGU 394 Berhatton Bit 维护 Manhattan 距离
题意:平面图上有n(2 问那些点能被删除。题解:对于一个点能覆盖住的是一个以它为中心的菱形,将坐标轴逆时针旋转45度后每个点的覆盖关系不变,维护上下两条线的加减关系,Bit实现即可。Sure原创,转载请注明出处#include #include #include #include using namespace std;const int
2012-10-22 14:17:09 943
原创 SGU 384 Country 三角形
题意:有n(3 若不存在输出-1,DELETE x表示删除第x条边。对于每个LENGTH 询问输出答案。题解:想想会发现图的一个性质,所有三角形挂在同一个点上,这样首先处理下找出中心后,维护非中心点的同在一个三角形内的另一个点的编号, 像中心方向的边和非中心方向的边是否删除即可。Sure原创,转载请注明出处#include #i
2012-10-19 16:43:06 752
原创 POJ 3714 最近点对问题 分治法
题意:station和agent分别有n(1题解:http://blog.csdn.net/w397090770/article/details/7295797 这里讲的很好。#include #include #include #include #include #define MAX(a , b) ((a) > (b) ? (a) : (b))#define M
2012-10-19 10:49:39 1073
原创 Codeforces 231E - Cactus
题意:给定n(2cycle中,定义simple path为u->v经历的路径不同即不同, k(1v的simple路径的个数。题解:缩点+倍增lcaSure原创,转载请注明出处#include #include #include #define MIN(a , b) ((a) < (b) ? (a) : (b))using namespace st
2012-10-17 21:33:32 741
原创 SGU 257 Debt 贪心 + 模拟
题意:有一个人欠三个人分别p o s(1 价值(1块或者2块),现在问是否存在一种分配方案使得能还清3个人的钱。题解:首先给不同的crystal排优先级,然后枚举满足三个人的优先级后贪心。Sure原创,转载请注明出处#include #include #include #include #define MAX(a , b) ((a) > (b)
2012-10-10 16:33:44 717
原创 HDU 1754 I Hate It 树状数组求区间最值
题意:给n(1 具体参看:http://www.cnblogs.com/ambition/archive/2011/04/06/bit_rmq.htmlSure原创,转载请注明出处#include #include #include #define MAX(a , b) ((a) > (b) ? (a) : (b))using namespace
2012-10-06 11:16:14 2510
原创 SGU 264 Travel 稳定婚姻匹配 Gale-Shapley算法
题意:旅行公司决定夏天带n(1个男人N个女人被选上去参加这个旅行。旅行公司有N辆车,并且每一辆车只能坐两个人,旅行社顾客服务部门 的领导决定让每辆车里坐一男一女, 这就是为什么他们决定让顾客列出自己的喜好。 假设我们已经把男人和女人进行了一次匹配,让每一个男人和一个女 人配对,每一个女人也只和一个男人配对。我们把这样的配对叫做“完美匹配”。如果在完美匹配当中
2012-10-06 00:00:58 1736
原创 SGU 364 Lemmings Dijkstra
题意:有n(1 问最后最多有多少小鼠能够到达目的点和最后一个小鼠的到达时间。题解:简单的Dijkstra最短路被我写的好丑,维护每个模板下方模板的编号,由于n小可以暴力。Sure原创,转载请注明出处#include #include #include #include #include #define ABS(x) ((x) >= 0 ? (x
2012-10-05 20:08:42 698
原创 SGU 366 Computer Game 预处理 + POJ1015 dp
题意:有n(1 如果存在多种解找到sum a + sum b最大的输出方案。题解:因为a b很小,那么每个a-b只保留钱k个a+b最大的选手,这样一共最多有2000个选手,然后类似POJ1015搞一个dp即可。Sure原创,转载请注明出处#include #include #include #include #define ABS(x) ((x)
2012-10-03 20:24:43 968
原创 SGU 363 Baggage room 模拟排队
题意:有m(1 输出每个人选择的窗口和结束业务的时刻。Sure原创,转载请注明出处。#include #include #include #include using namespace std;const int inf = 1 << 29;const int maxn = 102;struct info{ int ki,ti
2012-10-03 19:20:27 927
原创 SGU 365 Ships of the Desert 简单数位dp
题意:给定s(1题解:dp[ i ][ j ]表示形成 i 位长 以 j 数字结尾的不降的串的个数,然后枚举不降与不升的分界点(在该点一定是降,否则会算重)即可,最后加上全0的情况。Sure原创,转载请注明出处。#include #include #include using namespace std;const int maxn = 22;__int64 dp
2012-10-03 19:04:13 1201
原创 Codeforces 229D Towers 贪心 + dp
题意:有n(1题解:开始想贪心,因为要保证最后面的一个区域内的塔高和最小,贪心到最后可能会有剩余塔高不足的情况,这样如果把它们放到最后一堆就wa了。 想tower[i]表示到达 i 塔时最后一堆的最小高度,dp[i]表示对应的最小花费。Sure原创,转载请注明出处#include #include #include using namespace
2012-10-02 20:01:32 1334
原创 Codeforces 229C Triangles 想法题
题意:给定n(1题解:总体想法是C(3,n)- 被破坏的三角形的个数,如果一个三角形被破坏了,那么一定有其中一条边在一个图另两条边在另外的图中,统计每个点在m条边 组成的图中的度数,这样可以算出以当前点为三角形中的一个点时被破坏的三角形的个数,加起来之后除以2(因为一个被破坏的三角形被计算了两次)得 到被破坏的个数。Sure原创,转载请注明出
2012-10-02 19:10:15 1191
原创 SGU 319 Kalevich Strikes Back 线段树维护lazy 建树 + dfs
题意:有n(1题解:矩形并=线段树,对于这个题,由于任意两个矩形没有一个交点,着眼于lazy的性质,如果一个矩形能被另一个矩形包围起来,那么当前矩形的lazy一定 比另一个lazy小,遇到矩形的右边的时候再把lazy还原成father,这样搞出来一棵树,然后dfs即可。Sure原创,转载请注明出处#include #include #include
2012-10-02 16:55:54 1253
原创 Codeforces 229B Planets 简单最短路
题意:有编号1~n(2 一定的时间,但是在某时刻会在某星球有旅客到达,这时要一定等到没有旅客到达的时候才能出发,问从1走到n最少花费时间是多少。题解:对于每一个星球的每一个到达的人的时刻预处理出来下一个可行的时刻,然后进行Dijkstra即可,注意最后到达n的时候不需要等到下一个可行时刻了唉。Sure原创,转载请注明出处#include #includ
2012-10-02 14:55:43 1168
原创 Codeforces 229A Shifts 数据处理
题意:给定n*m(1 最小值。题解:预处理 l [][] , r [][]数组分别代表右面和左面第一个1的位置,然后得到 i j 位置满足条件的最小移动值,最后枚举得到的答案。Sure原创,转载请注明出处#include #include #include #define MIN(a , b) ((a) < (b) ? (a) : (b))#define
2012-10-02 14:47:38 661
原创 HDU 3698 Let the light guide us 线段树求区间优化dp
题意:有一个n*m(2 (如(i , j),(i+1 , k))满足abs(j - k) 题解:很容易想到dp[ i ][ j ] = MIN(dp[ i ][ k ] + cost[ i ][ j ]),这样的时间复杂度是O(n*m*m)会T,i-1行的灯塔的照耀范围是一个区间,i 行的灯塔 也是一个区间,这样就转化为求区间最小值了,想到线段树维护区间最
2012-10-01 20:25:46 1152
原创 SGU 322 The Great Union dfs模拟
题意:给定两棵树,每次能够连接一棵树的一条边,并且删除当钱形成环的其中一条边,问经过最少多少次能够使得两棵树的边是一样的。题解:没想到什么高级的东西,就模拟吧。第一棵树不动,在第一棵树中存在 && 在第二棵树中不存在的边的个数就是需要修改的次数,每次加在第一棵树中 存在 && 在第二棵树中不存咋的一条边,这样能保证在环中一定有一条边在第一棵树中不存在,模拟之即可。
2012-10-01 16:40:47 682
原创 SGU 323 Aviamachinations 最小生成树变形
题意:有n(1 m(1 但是需要花费相应的费用,问最少需要花费多少费用。题解:这个题需要对最小生成树的边的性质有很好的理解,在最小生成树中任意一条边都是连接两个集合边权最小的一条边。首先枚举航空公司是肯定的, 那么怎样高效枚举出其他边呢?首先搞出最小生成树,然后然后枚举航空公司,然后再枚举在最小生成树中不属于当前航空公司的边即可
2012-10-01 14:56:02 1141
原创 SGU 317 Fast Ride 贪心 + dp
题意:有n(1 (匀速),问一个人从起点0走到b(1题解:首先对每一个驿站的马进行排序,相同d的取v大的,如果一匹马比当前的马d大而且v大那么当前的马就是死马,这里体现的是贪心的思想,然后对于 每一个驿站维护出可行的好马区间,接下来是dp的过程,枚举每一个驿站,用一个指针扫描马,对于以后的驿站扫描到的最后一个能到达当前驿站的 一定是速度最大
2012-10-01 14:36:34 828
原创 SGU 321 The Spy Network 树的贪心
题意:给定n(1 根节点发的路径,现在想问最小改变那些边可以使得所有的点到根节点的路径上1的个数>=一半。题解:首先dfs一遍得到每一个节点还需要1的个数,维护每个节点的及其子节点最多需要1的个数,然后再dfs如果当前节点及其子节点还需要那么当前的边 如果是0变成1记录下来,这里体现的是贪心的过程,因为改变边的状态的深度越小影响越大。Sure
2012-10-01 10:02:38 993
原创 SGU 320 The Influence of the Mafia
题意:给n*m(1=k那么称为大黑帮, 如果一个点被一个大黑帮完全包围或者在大黑帮的势力范围内,那么则该点是危险的,问有多少危险的点。题解:dfs搜到每一块黑帮,如果是大黑帮那么扩大一步,找到没被当前黑帮包围的点,将剩下的点(包括被当前黑帮包围的点)标记下来,最后统计之。Sure原创,转载请注明出处。#include #include #includ
2012-09-30 22:14:05 630
原创 ZOJ 3652 Maze 优先队列 模拟
题意:有n*m(1 控制的范围内,一个人从给定的源点走到终点,每回合能走l移动值(1 如果走到一个编号问k且k号怪物还没死的空地,那么移动值立刻减为0,问最少要几个回合能走到终点。题解:比赛的时候已经想到了四维记录状态[i][j][k][l]表示到达i j 位置打死怪物的状态为 k 剩余步数为 l 的最小回合数,但是更新时候的一个状态被我搞没了,
2012-09-30 01:32:46 1024
原创 ZOJ 3649 Social Net 最大生成树 + 并查集维护
题意:给定一个n(2v路径上顺序 得到的ci cj(i 题解:kruskal搞掉最大生成树,并查集维护up[] dw[] ma[] mi[] 分别表示从当前点走到lca的最优值,从lca走到当前点的最优值,从当点走到lca的最大值, 从lca走到当前点的最小值即可。 PS:比赛的时候把并查集搞错了唉,但是还是搞到了这个fb。
2012-09-29 18:08:50 1247
原创 POJ 1240 Pre-Post-erous! 由前序后续遍历顺序推m-叉树的个数
题意:给定m-叉树(1题解:中序+前序 -> 唯一的后序,中序 + 后序 -> 唯一的前序,但是前序 + 后序 -x> 中序,因为根是不固定的,明白这个就很容易想出这个问题了。 首先dfs确定每棵子树在前序和后序中对应的范围,然后统计子树个数,通过组合数求解即可。Sure原创,转载请注明出处。#include #include #include
2012-09-29 09:46:59 2741
原创 POJ 1043 What's In A Name? 二分图推理
题意:有n(1 什么绰号发送的电报,问能否推出每个人对应的绰号是什么,如果推理不出来输出"???"。题解:很容易想到二分匹配,但是正常思维构图之后会发现很难搞,因为一些明明矛盾的边的关系也搞进去了,类似于建反图的方法,每次把一定不会满足条件 的边去掉,最后剩下的边是可能满足的关系对,之后枚举每一个二分图中的必须边,如果删除后匹配数减少那么当前的匹配是正确
2012-09-28 20:08:12 2046
原创 Codeforces 228E The Road to Berland is Paved With Good Intentions 枚举dfs判断可行性 || 并查集
题意:有n(1 他不仅把与 i 点相连的0变成1同时也把1变成0,问能不能找到一种方法使得所有0都变成1,spj。题解:1 可以清楚的意识到一个点至多搞一次,枚举第一个点的状态然后同一个连通块的点的状态就可以定下来,dfs判定可行性即可。 但是图可能是不连通的唉。 2 并查集,维护当前集合中根节点不取的时候其他节点与根节点的关系即可。Sure
2012-09-28 15:03:07 881
原创 POJ 1208 The Blocks Problem 简单栈模拟
题意:有n(0move a onto b 在将a搬到b上之前,先把a和b上的积木放回原來的位置move a over b在将a搬到b所在的那堆积木上前,先把a上的积木放回原來的位罝pile a onto b 将包括a本身和上方的积木一起放到b上,在放之前b上方的积木放回原来的位置pile a over b 将包括a本身和上放的积木一起搬到到b所在的那堆上 quit结束命令,前
2012-09-27 13:57:23 887
原创 Codeforces 226D The table 贪心
题意:给定n * m(n m 和都>=0,问任意一组能满足条件的行列翻转方法。题解:cf 上好像每次比赛都有贪心的样子。因为n m 两次因为贪心能保证这样的性质,随后再搞一下就好了。Sure原创,转载请注明出处。#include #include #include #include using namespace std;c
2012-09-26 18:25:50 619
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人