自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (2)
  • 收藏
  • 关注

原创 UVA 12304 圆的各种模板混搭题(250行)

纯手敲,大概花了1小时不到,检查了一会,发现圆和直线交写搓了,改过来以后就AC了。题意:6种各自独立的询问。          询问1:给你一个三角形,求其外接圆圆心和半径。  询问2:给你一个三角形,求其内接圆圆心和半径          询问3:给你一个圆和一个点,求其所有切线的极角(规范0  询问4:给你一个点和一条直线和半径r,求所有满足半径为r且经过该点并与直线相切的

2013-09-26 21:41:32 1479

原创 hdu2815 扩展Baby step,Giant step入门

题意:求满足a^x=b(mod n)的最小的整数x。分析:很多地方写到n是素数的时候可以用Baby step,Giant step, 其实研究过Baby step,Giant step算法以后,你会发现  它能解决    “n与a互质”的情况,而并不是单纯的n是素数的情况。如果a与n不是互质的,那么我们需要处理一下原方程,让a与n互质,然后再用Baby step,Giant step解出x

2013-09-20 11:14:24 1449

原创 hdu4747 Mex 线段树 (2013网络赛)

题意:给你一个序列,让你求出对于所有区间的mex和,mex表示该区间没有出现过的最小的整数。思路:从时限和点数就可以看出是线段树,并且我们可以枚举左端点i, 然后求出所有左端点为i的区间内mex值的和。先把数插满,然后先询问后删除当前最左边的断点i。而且显然线段树里面保存的是mex值,而且这个序列是非递减的。分析:我们先预处理出对于右端点为i的所有的mex,分别插入线段树的i位置。然后

2013-09-18 13:25:54 1525

原创 可持久化线段树入门题 hdu2665 求区间第k小的数

注意:这题题意写错了,不是区间第k大,而是区间第k小, WA了一地,看了discuss才知道,坑啊参考了clj的论文《可持久化数据结构研究》,具体做法论文里很明确。其实思想还是建多颗线段树,只是把这些线段树数据不相同的部分另外建了一些节点。对于m个询问,每次要建log(n)的节点,需要 n*2+mlog(n)的内存,这题写得不好数组就开不下了#include #inc

2013-09-16 20:26:01 2686 1

原创 UVA 11594 UVA11603(与hdu4700类似) 点对点的最小割 Gomory-Hu 和Gusfield算法学习

UVA 11594:Gusfield算法题意: 给你n个点的容量网络图(n 算法概述: 原先所有点在一个集合, 每次任选一个集合进行处理, 在集合内任选2个点,求一次最小割s-t,然后用s-t割更新    被这个割所能切割的点对(点对为已经选过的所有点组合出的任意两点之间的点对),直到所有集合中点的个数为1时结束。code在下面UVA 11603:   Gomory-Hu算法题

2013-09-13 20:30:47 2245

原创 刘汝佳训练指南《网络流》专题 BY 9974

最近一直在做白书上的网络流, 做得几乎差不多了,在这小小总结一下.已经忽略很水的题。差不多按难度排序了。UVa 11248  增广小优化。UVa 1306(LA 2531)    考察建图UVa 10779                考察建图UVa12125(LA 3972)    有点权,拆点UVa1317(LA2796)     费用流UVa

2013-09-11 21:54:08 2364 3

原创 UVA 1324 LA 2957 网络流(拆点+输出解)

poj也有这题,但数据很弱,建议去UVa上去交链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36127题意:n个点m个双向边,每天每条边最大只能用一次(要么u->v运一个,要么v->u运一个),把k台电脑从S都运到T至少需要几天,并输出解。(n 思路:答案一定如何建图:抓住每条边每天只能流一次,所以我们

2013-09-11 20:48:10 1906

原创 POJ 2175 spfa费用流消圈

题意:给出n栋房子位置和每栋房子里面的人数,m个避难所位置和每个避难所可容纳人数。然后给出一个方案,判断该方案是否最优,如果不是求出一个更优的方案。思路:很容易想到用最小费用流求出最优时间,在与原方案花费时间对比判断原方案是否最优。也许是组数太多了,这种方法会超时的。 放弃该思路。看看题目没要求要最优解,而是得到一个更优的解。在原图的所有反向边中能够找到一个总费

2013-09-09 20:40:24 1434

原创 Codeforces Round #199 (Div. 2)

A题挂了,B题WA了4发, C题1A, 比赛结束, D题赛后1A了。 小号变紫了。A. 仔细看题, 所有数都小于等于7,所以只有1 2 4, 1 2 6, 1 3 6 三种情况,如果出现5,7就是-1, 否则 cnt[1] = n/3,cnt[2] - cnt[4] == cnt[6] - cnt[3] 而且 cnt[2] - cnt[4] >= 0我错在出现5,7的情况没考虑,手速太

2013-09-07 21:00:46 1279

原创 POJ 1466 最大独立集入门

题意:n个学生,给你每个学生浪漫的学生学号(男女之间浪漫),问你找出一个最大的集合保证集合内的任意两个学生之间没有相互浪漫关系,输出最大集合的人数。注意:这里的浪漫边是双向的,如果1对2浪漫, 那么2对1也浪漫,题意好像没说清楚, 但我测了一下,是双向边。思路:最大独立集和最小点覆盖集是互补的,所以 最大独立集 == 总人数n - 最小点覆盖集,如果题目给你的是二分图那么直接二分匹配一

2013-09-06 17:14:18 1212

原创 POJ1422 最小路径覆盖入门

题意:DAG求最小路径覆盖。注意:二分匹配只试用于求DAG的最小路径覆盖, 有环就不行,具体可以理解证明。对n个点进行拆点,分成左右两排点,对于边 建   。然后 最小路径覆盖 == 总点数n - 最大匹配。 简单的证明: 每匹配一对就说明u和v在同一条路径上,拿路径数就少1。#include #include #include #include using names

2013-09-06 16:17:41 939

原创 ZOJ 1516 二分匹配

题意:给你n*m的土地,有k个1*1的方块被挖掉, 现在你要卖剩下的地(思路:剩下的点按奇偶分成两列点阵(i+j为奇数就是奇点,反之就是偶点)。二分匹配可解#include #include #include #include using namespace std;const int maxn = 55;int n, m, k;bool map[103][103];int

2013-09-05 21:37:21 1624

原创 poj 2125 最小割解决 "最小点权覆盖问题" +输出解(割边集)

题意:给你一幅有向图, 对于点i删除所有进入该点的边就要支付费用W[i]+(情况1), 删除所有从该点出发的边就要支付费用W[i]-,问删除图中的所有边至少需要多少费用(情况2)。分析:首先我们根据题意,选点就能删除一些边, 那么这可以看成是“用点去覆盖边”, 这里无非是把边分成了2类,我们可以把原来的点进行拆点,那么就完完全全等价于“用点去覆盖边",如果支付费用都为1,那么这就是”最小点

2013-09-05 20:24:06 2142

原创 POJ 1469 ZOJ1140 二分匹配裸题

很裸,左点阵n,右点阵m 问最大匹配是否为n#include #include #include using namespace std;vector edge[103];int pre[303];bool vis[303];int n, m;bool dfs(int u) { for(int i = 0; i < (int)edge[u].size(); i++) {

2013-09-04 23:40:49 1273 1

原创 POJ 1325 ZOJ 1364 最小覆盖点集

题意:有A,B两台机器, 机器A 有 n个模式(0, 1, 2....n-1),同样机器B有m个模式, 两个机器一开始的模式都为0,有k个作业(id,x,y) 表示作业编号id, 该作业必须在A机器在模式x下或者B机器在模式y下完成,问你至少要切换几次机器模式。思路:很裸的最小覆盖点集,不熟悉概念的多看看蓝书吧,很容易证明 最小覆盖点集 == 最大匹配#include #include

2013-09-04 22:58:58 1342

原创 ZOJ 1654 二分匹配基础题

题意: 给你一副图, 有草地(*),空地(o)和墙(#),空地上可以放机器人, 机器人向上下左右4个方向开枪(枪不能穿墙),问你在所有机器人都不相互攻击的情况下能放的最多的机器人数。思路:这是一类经典题的衍化,如果没有墙,我们会将行和列看成两列点阵,然后就可以用二分匹配解。现在有墙怎么办呢, 把某一行或列(有墙的拆分成多个区域,可以看成多个行或列), 拆好以后更没有墙的做法一样了。#i

2013-09-04 21:25:37 1096

原创 hdu 1890 伸展树区间翻转

题意: 给你n个数,每次先输出第i大的数的位置(如果有多个,选下标小的那个),然后每次将第i个位置到第i大的数所在位置之间的数进行翻转。思路:输入的数组可能有多个相同的值,我们可以进行两次排序把数组的值变为1---n(表示第几大)。在建伸展树的时候我们可以顺便用pos[i]记录第i大的数的节点标号。对于第i次操作,我们用col[]数组记录翻转标记,每次先把第i大的节点pos[i]旋转到

2013-09-02 23:18:09 1248

原创 hdu 4638 树状数组

#include #include #include using namespace std;const int maxn = 100010;int n, m;bool vis[maxn];int c[maxn], a[maxn], pos[maxn];struct Query { int l, r, id; bool operator <(const Query

2013-09-02 19:14:42 904

原创 hdu 4601 Letter Tree 线段树

#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include using namespace std;#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1#define ls rt<<1#d

2013-09-02 18:25:15 1105

原创 Codeforces Round #198 (Div. 1)(A,B,C,D)

http://codeforces.com/contest/341赛后做的虚拟比赛,40分钟能出了3题,RP爆发。A计数问题我们可以对每对分析,分别对每对(a走到b)进行统计,那么这对产生的期望为distance(a, b)/n(把这一对选出来以后相当于一个点,那么分子distance(a, b)*(n-1)!,分母n!,     (n-1)被约掉了。)这样的算法是O(

2013-09-01 23:49:32 1427

操作系统实验

4个实验的ppt,有详细的代码,适合初学者

2013-10-23

UVALive 2218

半平面交入门题

2013-09-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除