自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

morejarphone~

从爱好,到梦想

  • 博客(23)
  • 收藏
  • 关注

原创 POJ 2337 (有向图欧拉通路)

题目链接:点击这里题意:给出n个单词,求出最小字典序的头尾连接方案。欧拉通路板子题。把每个单词当做边,头字母和尾字母当做节点,建完跑欧拉通路即可。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#include <stack>

2016-11-30 23:50:02 323

原创 ACdream 1211 (无源汇上下界网络流)

题目链接:点击这里题意:给出一个无源汇有上下界网络流,求出一种可行流。板子题,建立超级远点S,超级汇点T,对于每一条边<u,v,l,r><u,v,l,r>,u-T连边,流量为l;S-v连边,流量为l;u-v连边,流量为r-l。然后跑最大流输出即可。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#in

2016-11-29 23:49:30 312

原创 HDU 5992 (kdtree)

题目链接:点击这里题意:给出n个酒店,每个酒店有一个花费和坐标。然后给出m个询问,输出离询问最近并且花费在询问要求内的酒店。第一个想法是两种东西按照花费排序,每次插入新酒店。但是这个插入比较麻烦,在kdtree退化的时候需要及时重构(套个替罪羊树啥的)。 还有一种就是直接建三维kdtree,然后对于每一个询问,如果一个节点范围内最小第三维比询问大,那么可以直接忽略。计算的时候只要算上两维的距离即可

2016-11-22 00:21:43 1859 1

原创 BZOJ 3053 (kdtree)

题目链接:点击这里k维坐标系下的最近点对问题。直接对于每一个询问都在kdtree中询问m次最近点,每次找到一个最近点对需要把它记录下来,当下次再找到它的时候距离直接设置成无穷大即可。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm

2016-11-19 22:49:07 434

原创 HDU 2966 (kdtree板子题)

题目链接:点击这里题意:给出n个不同的点,求出离每个点欧几里得距离平方最近的其他点。只需要一点小技巧即可:当当前kdtree节点坐标和询问坐标一致时,距离改成无穷大(因为不能选择自己)。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorit

2016-11-19 15:08:14 1144

原创 BZOJ 2648 (kdtree)

题目链接:点击这里题意:给出n个点,接下来m个操作,每次插入一个点,或者询问离询问点的最近曼哈顿距离。直接暴力插点询问即可。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#include <stack>#define Cl

2016-11-19 15:05:31 517

原创 Kattis taboo (AC自动机 拓扑排序 DP)

题目链接:点击这里题意:给出n个01串,要构造一个最长的串使得这个串不包含所有出现过的串,无解输出-1.首先把所有的点扔进自动机,因为出现过的串不能在我们构造的串中出现,所以事先把某些”坏点”标记,坏点指的就是每个串的结束节点以及沿着结束节点fail指针走下去的节点. 如果剩下的图中能够沿着根走出一个环那么必然就无解了, 判环可以用一遍拓扑确定. 排除无解情况剩下就是一个DAG了, 用dp[i][j

2016-11-17 20:18:26 983

原创 Kattis peaktram (树状数组 DP)

题目链接:点击这里题意:给出n个物体的高度以及将他们高度改变1单位的花费,一个观测点从最左端从0往上走,一直平视. 问至少能观测到k个物体的最小花费.因为高度比较大,所以需要将高度离散化,那么需要离散化哪些高度呢?容易发现对于每一个建筑,只要把它+-70范围内的高度离散化就好了,这样最多就是70*140种高度.然后用dp[i][j][k]dp[i][j][k]表示到i物体,最大高度是j,一共看到k个

2016-11-17 20:06:08 635 2

原创 codeforces 734F (数学)

题目链接:点击这里题意:给出两个数组b,c,构造a数组满足条件.首先需要知道一个推论:a AND b+a OR b=a+ba\ AND\ b+a\ OR \ b=a+b,这个按位比较很显然是相等的. 然后把原式的bib_i和cic_i加起来就得到了: ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪b.1+c1=na1+∑ab2+c2=na2+∑a⋮bn+cn=nan+∑a\begin{equation}

2016-11-17 09:42:47 596

原创 codeforces 734E (树的最大直径)

题目链接:点击这里题意:给出一个树,每个节点有一种颜色.每次能够选中一个节点,其他的点如果到它的路径上都是这种颜色那么可以一起改变颜色.问最少需要改变几次颜色.先按照颜色缩点, 然后答案就是缩点之后树的最大直径, 直接DP即可.#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cma

2016-11-17 09:33:39 630

原创 BZOJ 3876 (流量有下界费用流)

题目链接:点击这里需要经过题目给出的边至少一次,也就是流量下界是1.另外有一类边:所有的点连向1,流量是无穷大费用是0. 对于有流量下界的点,就是经典的构造方法:对于#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#inclu

2016-11-16 00:07:58 308

原创 HDU 5517 (二维树状数组)

题目链接:点击这里题意:给出一个pair(a,b)集合A,triple(c,d,e)集合B,然后如果b和e相等可以把新的triple(a,c,d)扔到集合C.求C中的(a,b,c)个数使得C中不存在(u,v,e)满足{(a,b,c)≠(u,v,e),a≤u,b≤v,c≤e}\left\{ (a,b,c)\neq (u,v,e) ,a \leq u,b \leq v, c \leq e \right

2016-11-09 15:30:27 304

原创 HDU 2888 (二维RMQ)

题目链接:点击这里题意:给出一个矩阵,每次询问一个子矩阵中的最大元素,以及最大元素是不是和子矩阵的某个角相等.二维RMQ的板子~#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#define Clear(x,y) memset

2016-11-08 18:07:15 295

原创 POJ 3621 (最优比率环 二分+SPFA)

题目链接:点击这里题意:找出一个环, 最大化∑vi∑Ei\frac{\sum v_i}{\sum E_i}.假设答案是ans.那么有∑vi∑Ei=ans\frac{\sum v_i}{\sum E_i}=ans也就是∑vi−ans∑Ei=0\sum v_i-ans\sum E_i=0.因为是一个环,所以环上每个点都被算了两次,所以可以给每条边对应一个FiF_i表示边上两个节点权值和的一半,所以所求就

2016-11-08 15:32:59 411

原创 codeforces 519E (LCA)

题目链接:点击这里题意:给出一个树,q个询问,每次询问给出两个点#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (int a = b; a >= c; a--)#defin

2016-11-07 20:56:06 503

原创 HDU 4155 (博弈 记忆化搜索)

题目链接:点击这里题意:有1,2,3,4,5,6各四张牌,AB轮流出牌,谁先使得总和超过31就输.告诉你已经出牌的序列,求最优策略下谁赢.经典的博弈题了.先把游戏结束的状态挖出来,然后记忆化搜索一遍即可.#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a =

2016-11-07 15:30:28 412

原创 HDU 5970 (循环节)

题目链接:点击这里打个表可以发现对于给定的j,f(i,j)的循环节长度为j。有了这个性质以后可以处理不向下取整的。题目需要向下取整,谕示考虑f(i,j)的含义,它表示辗转相除次数c和gcd(i,j)的平方的乘积。因为(i+kj, j)和(i,j)的辗转次数相等,所以考虑延长循环节,把cj看成是循环节,这样的话就只需要求出循环节内部分,并且重复循环节就行了。在两个循环节之间是等差数列,瞎搞搞就出来了。

2016-11-06 18:36:54 982

原创 HDU 5964 (平面几何)

题目链接:点击这里 trick:卡常熟卡的蛋疼~~#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (int a = b; a >= c; a--)#define fi f

2016-11-06 18:05:31 972

原创 HDU 5963 (博弈)

题目链接:点击这里一个情况下的状态只和连接根的1的边数量有关。直接树上维护边。#include <bits/stdc++.h>using namespace std;#define maxn 40005long long n, m;struct node { int v, next, w;}edge[maxn<<1];int head[maxn], cnt;int scan ()

2016-11-06 16:25:41 317

原创 HDU 5961 (bitset)

题目链接:点击这里题意:给出两个图,他们的并是竞赛图。判断这两图是不是同时是传递的。直接忽略竞赛图的性质暴力bitset。#include <bits/stdc++.h>#define Clear(x,y) memset (x,y,sizeof(x))#define FOR(a,b,c) for (int a = b; a <= c; a++)#define REP(a,b,c) for (i

2016-11-06 16:14:45 752

原创 codeforces 733F (树链剖分 RMQ)

题目链接:点击这里题意:给出一个图,每条边有权值和花费c,每次花费c能使的权值-1。给出一个预算,求减完权值后的一个最小生成树。观察到最优的策略必然是只减少一条边的权值。于是首先先将初始权值做一次最小生成树。然后枚举所有的边,如果这条边是生成树的边,求出预算都花在这条边上的结果;如果非树边,就在这条边两个点到他们的LCA路径上求出树边的最大值,然后求出扣掉这个最大树边,加进去这条边的最终结果。中间过

2016-11-03 21:33:10 929

原创 codeforces 733E (数学)

题目链接:点击这里题意:n个台阶,每个台阶上有上或者下,每经过一次都会改变方向。求从每个台阶出发,从最下方或者最上方走出去的步数对于每一个开始的台阶,只有他下方的U和他上方的D会影响最后的步数。如果要从下方出去就需要把下面都变成D,同样的,要从上面出去就要把上面都变成U。观察一下发现交换初始台阶上下方的D和U的步数花费就是两者距离的一半,最后加上开始台阶从下方或者上方走出的步数。 trick:结果

2016-11-03 21:24:42 535

原创 codeforces 733D (水题)

题目链接:点击这里题意:给出n个长方体,两个长方体如果有一个面完全一样就能拼起来,或者只选择一个。求一个最佳的方案使得内接球直径最大。直接暴力把所有的面扔进一个数组,排序之后找到第三条边最大的,维护一下最大值就好了。#include <cmath>#include <iostream>#include <cstring>#include <algorithm>#include <vector

2016-11-03 21:13:16 330

空空如也

空空如也

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

TA关注的人

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