自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 BZOJ 3891 USACO 2014 Dec Piggy Back 搜索 最短路

第一个人从1出发边权A,第二个人从2出发边权B,走到一起边权C,求最短方案使两人走到n。分别从1,2,n跑一次最短路,然后枚举走到一起的点计算答案即可。没开快速读入 104ms,开快速读入84ms,第二页和第一页的区别,然而很小。。#include #include #include const int N = 40001, M = 80001;using namespace

2016-01-31 17:01:19 375

原创 BZOJ 1064

#include #include #include const int N = 200000, M = 4000000;using namespace std;int d[N], h[N], p[M], v[M], w[M], vis[N], cnt = 0;void add(int x, int y, int z) { v[++cnt] = y; w[cnt] = z;

2016-01-30 23:29:06 394

原创 BZOJ 2783 JLOI 2012 树 搜索

#include const int N = 100001, M = 200000;int p[M], h[N], v[M], cnt = 0;void add(int x, int y) { p[++cnt] = h[x]; v[cnt] = y; h[x] = cnt;}void dfs(int x, int fa) { q[r++] = a[x]; sum += a[x];

2016-01-30 15:02:59 501

原创 BZOJ 1024 SCOI2009 生日快乐 暴力搜索

奇怪以前做了却没写题解..强行爆搜保平安。#include #include using namespace std;double dfs(double x, double y, int t) { if (t == 1) return max(x / y, y / x); double mi = 1e18; for(int i = 1; i <= t /

2016-01-30 12:34:36 423

原创 BZOJ 1603 [Usaco2008 Oct]打谷机 暴力搜索

一些齿轮之间有正着连接和反着连接,问最后一个齿轮的方向。dfs即可。写不写快速读入就是40ms和4ms的区别。。还真是资格赛。#include const int N = 1001, M = 2001;int read() { int s = 0, f = 1; char ch = getchar(); for (; ch '9'; ch = getchar(

2016-01-29 21:11:02 503

原创 BZOJ 4292 [PA2015]Równanie 水题

惊了,暴力大法好,大力出奇迹。自信在线写代码提交。而且C好像有内存加成?同样代码C 756KB,C++ 804KB。毕竟C++特性比较多?好吧我瞎猜的。由于最大的f(n)很小。。所以枚举就好啦。#include int main() { long long k, a, b, cnt = 0, i, n, v, u; scanf("%lld%lld%lld", &k,

2016-01-29 20:16:45 597

原创 BZOJ 3894 文理分科 最小割

以前写的代码,准备重新写一遍。。#include <cstdio>#include <cstring>#include <queue>#define FOR(i,1,n) for(i=1;i<=n;i++)#define M 30300#define S 0#define T 30299#define INF 0x3f3f3f3f#define P(i,j) ((i)*n-n+(j)

2016-01-19 14:18:11 429

原创 BZOJ 3774 最优选择 最小割

惊了我竟然排Rank 2,咸鱼有朝一日也能翻身。1A 先留个坑#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 5005, M = N * 10, inf = 0x3f3f3f3f;namespace Graph { int head[N], next[

2016-01-18 23:06:06 424

原创 BZOJ 3996 TJOI 2015 线性代数 最小割

一开始没看出来是最小割。。 听说是经典的最小割模型,是我太弱了。 max⎧⎩⎨⎪⎪∑(i,j)aiajbi,j−∑aici⎫⎭⎬⎪⎪\max \left\{ \sum_{(i,j)} a_ia_jb_{i,j}-\sum a_ic_i \right\} max{∑max{0,xi,j}⋅bi,j−∑max{0,xi,j−ai}⋅∞−∑max{0,xi,j−aj}⋅∞−∑max{0,ai}⋅ci

2016-01-18 20:46:27 720

原创 BZOJ 3144 HNOI 2013 切糕

题解首先我们不考虑其它,如果这个切糕只有1∗1∗r1*1*r,我们的线性规划式可以表示成: min{∑max{0,xi−xi−1}⋅vi+∑max{0,1−xn}⋅∞} \min \left\{ \sum \max\{0,x_i-x_{i-1}\}\cdot v_i+ \sum \max\{0,1-x_n\}\cdot \infty \right\} 令 x0=0x_0=0,即源点。 这样子可

2016-01-17 22:55:04 674

原创 BZOJ 3130 SDOI 2013 最大流

Bob:显然使流量最大的边,费用为p即可。Alice:二分最大边。#include #include #include #include using namespace std;const int N = 1005, M = 2005;namespace Graph { int head[N], next[M], to[M], vis[N], cur[N], level

2016-01-17 18:12:40 480

原创 BZOJ 1797 AHOI 2009 Mincut 最小割

我太弱了,每次排名都超后。奇怪了,好像以前看过这题但bzoj上没有记录。在残余网络上求强联通。问题1:如果一条边满流,那么这条边可能是最小割的边集。问题2:如果一条边两端点分别在S与T集,那么这条边就是割边,必须选取。#include #include #include using namespace std;const int N = 4005, M =

2016-01-17 16:55:53 457

原创 BZOJ 4276 费用流+线段树构图

为什么别人22s我37s。。#include #include #include using namespace std;const int N = 205005, M = 500005;const int inf = 0x3f3f3f3f;#define FOR(i,j,k) for(i=j;i<=k;i++)struct CostFlow { int h[N]

2016-01-16 22:29:30 706

原创 BZOJ 3218|UOJ 77|A + B Problem|最大流|可持久化线段树

吐槽A这题目真的很吸引人233。 样例不能复制真是可惜233。 题目的方格染色以及奇怪的节点让我想起了以前看过的一篇博文,讲最小割的。。 于是这道题就最小割。。。题解好吧假设我们不知道这道题要最小割,睁眼说瞎话 看着题目给的式子我们需要对它做♂点事情。 max⎧⎩⎨⎪⎪∑i黑bi+∑i白bi−∑i奇怪pi⎫⎭⎬⎪⎪ \max \left\{ \sum_{i黑}b_{i}+\sum_{i白}

2016-01-13 13:16:39 1723

原创 BZOJ 3218 a + b Problem 最大流 + 可持久化线段树

这题目真的很吸引人233。题目的方格染色以及奇怪的节点让我想起了以前看过的一篇博文,讲最小割的。。于是这道题就最小割。。。先留个坑。。为什么别人的程序都这么快。。应该不是这么写的吧。。真的是痛苦。。各种脑抽写错,程序重写了2遍。。原来SegTree的缺省构造函数里面包括了自增id,然而operator new里面定义的大数组也会自增id。

2016-01-12 20:55:05 628

原创 BZOJ 3110 ZJOI 2013 K大值查询 线段树套线段树

题目:有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。先维护权值再维护区间?反正数字最大就5W?对权值建立[1,n]的权值线段树,而且是单点修改单点查询。每个节点维护拥有该权值的区间线段树。[a,b]加数字c的话

2016-01-11 22:58:51 380

原创 POJ 2155 Matrix 二维线段树

给出一个只包含0和1的矩阵,要求支持子矩阵整体异或1和查询单点。发现异或特性,所以省的另外开个lazy标记了。直接修改seg就可以了。所谓的标记永久化?回调函数还不错233,省的复制代码看起来很恶心(应该是叫回调函数吧,逃)。#include #include bool data[2300][2300];struct SegTree { void (*modify_ca

2016-01-11 21:25:01 374

原创 POJ 2540 ZOJ 1886 Hotter Colder 半平面交

之前研究性学习写了这道题。。然而写论文的时候并没有做233,然后现在AC后发现论文里的好像就写错了。。以下是以前写的粗略的题解。孩子们的游戏Hotter Colder的游戏规则:A在B在房间内藏了什么东西的时候离开房间,到(0,0)并且访问房间内其他位置。当A到了一个新未知,如果新位置相对于原来的位置更近,则B会说"Hotter",更远"Colder",不变"Same"。你将获得B每次说"

2016-01-10 19:25:30 523

原创 BZOJ 1755 [USACO 2005 Qua] Bank Interest 快速幂

一开始没看清题,发现暴力就可以了。。写了个快速幂打了个酱油。。#include typedef long double ld;ld quickpow(ld a, int b) { ld ans = 1; for (; b; b /= 2, a = a * a) if (b & 1) ans *= a; return ans;}int main

2016-01-10 16:21:38 634

原创 POJ 1279 Art Gallery 半平面交求面积

和CQOI 2006 凸多边形就多组数据的区别。。#include #include #include using namespace std;const int N = 1502;struct Point { double x, y; Point(){} Point(double _x, double _y) : x(_x), y(_y) {} Po

2016-01-10 15:38:33 453

原创 POJ 1755 Triathlon BZOJ 3800 Saber VS Lancer 半平面交

刘汝佳的书讲的很清楚了。。不过还是很奇怪为什么删了2个solve()中的判断就WA了。改了right函数还是WA。#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 128;typedef long double

2016-01-10 15:28:48 673

原创 BZOJ 3190 JLOI 2013 赛车 半平面交

每辆赛车有起始位置和速度,问哪些赛车在比赛过程中领先。简直立了flag。。精度问题卡死我了。。由s-t图像可得使用半平面交。注意会有2两车的参数完全相同。要去重的时候把id也记录下来。而且可以两辆车同时领先。有些的斜率太相近。。结果atan2结果一样算法跪了。我的算法应该是必开long double的。下次用反三角一定要开long double。。。。。。调了好久才

2016-01-10 13:53:28 585

原创 POJ 3525 Most Distant Point from the Sea 半平面交判多边形存在

问凸多边形中某点到边界距离最远有多大。最优值问题转化判定性问题。判定就很好判定啦,将凸多边形往内缩答案,如果半平面交有解那么答案就是允许的。#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 20005;struc

2016-01-09 23:19:49 571

原创 BZOJ 1007 HNOI 2008 水平可见直线 半平面交

给出一些直线,问从正上方往下看能看到哪些直线。一道简单的计算几何题,不过我决定硬搞成半平面交233稍微改了下,因为是维护上凸壳,所以不用处理首尾半平面相交的问题了。y=ax+b的直线过定点(0,b),方向向量(1,a)。right函数改成忘记排序编号怒WA一发233.判断double没有判精度直接用==并没有WA,好神奇。之前也一直没有判精度。#include #in

2016-01-08 22:52:45 477

原创 BZOJ 2732 HNOI 2012 射箭 半平面交

题意构造一个二次函数使其能依次穿过更多的竖向线段。题解题目要求最大化 kk,我们可以转化为判定性问题。 发现对于一个线段 [(x,y1),(x,y2)][(x, y_1), (x, y_2)],二次函数解析式 y=ax2+bxy=ax^2+bx 满足y1≤y≤y2y_1\leq y\leq y_2。其中 aa 和 bb 都是变量。 问题转为线性规划判定是否有解。利用半平面交解决。 那么对于 x

2016-01-08 22:05:52 472

原创 POJ 3580 SuperMemo Splay/可持久化Treap 维护区间

可持久化Treap这么长我选择go die#include #include using namespace std;int random() { static int base = 123456789; return base += (base << 2) + 1;}class PersistantTreap {private: struct Node { int v

2016-01-08 20:51:44 790

原创 BZOJ 1038 ZJOI2008 瞭望塔 半平面交

#define FOR(i,j,k) for(i=j;i<=k;i++)#include #include #include #include using namespace std;const int N = 20005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x

2016-01-08 18:34:29 336

原创 POJ 2451 Uyuw's Concert 半平面交求面积

题意:半平面交求面积CQOI 2006 凸多边形的弱化版。好像做题的顺序搞错了。。#include #include #include using namespace std;const int N = 20005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x

2016-01-08 13:07:58 495

原创 POJ 1474 ZOJ 1248 HDU 1469 Video Surveillance 半平面交

看着网上说这个要注意那个要注意。。什么m默默地写完感觉那些注意事项然并卵。仍然是判断多边形是否存在。半平面交出来点数超过2就存在。神TM忘打空行。又一个PE。。#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point

2016-01-07 23:29:35 389

原创 POJ 3335 Rotating Scoreboard 半平面交

应该是求多边形是否存在?上半平面交。返回的点数#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point(){} Point(double _x, double _y) : x(_x), y(_y) {}

2016-01-07 23:21:26 339

原创 BZOJ 2618 CQOI 2006 凸多边形 半平面交

当成模板题来做了。。给出几个多边形求交面积。把这些多边形拆成一些半平面的交。最后算所有的半平面的交即可。代码还蛮长的。#include #include #include using namespace std;const int N = 1005;struct Point { double x, y; Point(){} Point(double

2016-01-07 23:11:05 487

原创 BZOJ 1050 [HAOI2006]旅行comf CODEVS 1001 舒适的路线 并查集

注意到M=5000,预判复杂度O(M^2)。所以我们考虑枚举最小边。最大边用类似kruskal的方法即可#include #include using namespace std;#define FOR(i,j,k) for(i=j;i<=k;i++)struct DisjointSet { int fa[501]; void init(int n) { int

2016-01-05 20:51:12 647

原创 BZOJ 2141 排队 分块

分块大法好,大力出奇迹!先离散个化。lower_bound最近很少用了。。既然静态可以用树状数组,那么我们分块,对每个块开个树状数组,保存块内的元素。对于每个查询(x,y),可以确定内部包含的块,然后直接查询块的树状数组即可,x往右和y往左的一小段没有被包在块中的由于总数不超过O(sqrt(n)),所以暴力就好啦。对于每个询问,O(sqrt(n)logn)。#include

2016-01-05 13:52:49 573

原创 BZOJ 3932 [CQOI2015]任务查询系统 可持久化线段树

以时间戳划分,每个时间点维护一个线段树,任务开始时在对应权值处+1,结束后-1就好啦。上可持久化线段树。感觉分配内存还是动态一大段一大段分比较好。。RE了才知道要调大数组。#include #include using namespace std;const int M = 100001;typedef long long ll;struct Tree { Tree *l

2016-01-04 21:35:56 499

原创 BZOJ 3207 花神的嘲讽计划Ⅰ 可持久化线段树

给出一个序列,对于每个询问,求询问序列是否在原序列某区间内出现过。由于询问序列长度均为K,所以原序列可以hash成n-k+1个数,那么问题就转化为给出一个数,问在序列某区间内是否出现过。这种问题需要可持久化线段树。离散化写的我心碎。。#include #include #include #define FOR(i,j,k) for(i=j;i<=k;i++)#defin

2016-01-02 19:54:29 442

原创 BZOJ 2741 【FOTILE模拟赛】L 可持久化Trie 分块

题意在线求a[l,r]间最大连续子串xor和。题解我的程序竟然排Rank 6,不科学。。。 a[l,r]的xor和转化为b[l-1]^b[r] 那么问题转化为求b[l-1,r]的任意2个数的xor和的最大值。 如果一个数固定,那么就可以把问题转化为BZOJ 3261。 所以我们每n−−√\sqrt n取一个数,预处理出它到后面每个数的xor的最大值,比如对于a[n−−√]a[\sqrt n]

2016-01-02 14:00:46 663

原创 BZOJ 4103 [Thu Summer Camp 2015]异或运算 可持久化Trie

对矩阵求第k大xor值。注意到数据范围长宽严重失调(误所以对于每列维护可持久化Trie。然后查询就由BZOJ 3261推广一下就好啦。#include #include #include const int N = 1001, M = 300001;using namespace std;struct Trie { Trie* c[2]; int size;

2016-01-01 17:59:23 510

原创 BZOJ 3208 花神的秒题计划Ⅰ

暴力大法好。。#include #include #define FOR(i,j,k) for(int i=j;i<=k;i++)#define N 701const int dx[] = {0, 0, 1, -1}, dy[] = {1, -1, 0, 0};int n, a[N][N], b[N][N], f[N][N];void getmax(int &a, int b) {

2016-01-01 14:54:14 442

信息学竞赛离线评测软件

最受欢迎的信息学竞赛离线评测软件,需要提供输入输出文件,该软件将可以自动帮您运行程序(需要源代码),并输出得分。

2011-07-29

空空如也

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

TA关注的人

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