自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 后缀数组模板

const int N = 1e6+10;int n;namespace SA { int sa[N], rank[N], height[N], s[N<<1], t[N<<1], p[N], cnt[N], cur[N]; int MIN[N][30]; #define pushS(x) sa[cur[s[x]]--] = x #define pushL(x) s

2017-09-27 22:12:16 280

原创 hihocoder 1068 RMQ-ST算法

题目链接:RMQ-ST算法题目大意:给你一个区间,查询区间最小值题目思路:直接RMQ#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include <cstdlib>#inc

2017-09-23 21:59:07 389

原创 poj 3264 Balanced Lineup

题目链接:Balanced Lineup题目大意:给定区间,求区间最大值和最小值的差值题目思路:因为是单纯的查询区间最值,直接RMQ就好了#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <vector>#include <cstdio>#include <cstri

2017-09-23 21:56:57 325

原创 计蒜客 16959 Our Journey of Dalian Ends(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 J)

题目链接:Our Journey of Dalian Ends题目大意:一张无向图,每两个城市之间有一条花费为cost的双向边,现在问能不能从西安到大连,途径香港,如果可以,输出最小花费,否则输出-1题目思路:题目可以转化为从源点连接西安和大连,汇点上海,最大流量是否为2,是的话求最小费用最大流,把每个点都拆成两个点x⋅,xx^·,x,x⋅,xx^·,x之间的容量为1,费用为0(为上海的时候需要注意

2017-09-20 18:03:54 389

原创 计蒜客 16957 Skiing(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 H)

题目链接:Skiing题目大意:给你一个n个点m条边的DAG,求最长路题目思路:DAG上的最长路,直接拓扑排序做一下就好了#include &lt;map&gt;#include &lt;set&gt;#include &lt;cmath&gt;#include &lt;queue&gt;#include &lt;stack&gt;#include &lt;vector&...

2017-09-20 17:53:59 341

原创 计蒜客 16956 Query on a string(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 G)

题目链接:Query on a string题目大意:有一个原串和模式串,有下面两种操作Q X Y,查询原串里面X到Y这跟区间模式串出现了多少次,C X Y,把X位置的这跟字符修改为Y题目思路:我们可以预处理一下原串,如果这个点往后延伸得到了模式串,那么我们将这个点置为1,否则为1,然后查询的时候区间求和就好了,修改暴力去修改就好了,因为模式串只有10的长度,所以修改的长度很小,修改的时候被影响的地

2017-09-20 17:50:45 331

原创 计蒜客 16955 Islands(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 F)

题目链接:Islands题目大意:给你一个n个点m条边的DAG,求最长路题目思路:DAG上的最长路,直接拓扑排序做一下就好了#include <map>#include <set>#include <cmath>#include <stack>#include <queue>#include <vector>#include <cstdio>#include <string>#inc

2017-09-20 17:43:57 719

原创 计蒜客 16954 Half-consecutive Numbers(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E)

题目链接:Half-consecutive Numbers题目大意:有这样一些数 :11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545,公式是 ti=12i(i+1)t_i=\frac{1}{2}i(i+1) 给你一个n,问满足trt_r为完全平方数并且r大于等于n的最小的r是多少题目思路:打表,筛一下满足的r有哪些,我们可以想到,要满足tit_i是个

2017-09-20 17:39:19 414

原创 计蒜客 16952 Coconut(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 C)

题目链接:Coconut题目大意:一个人初始饮料数为0,他每天喝x瓶饮料,在每个城市获得ai瓶,聪某个城市到另一个城市需要bi瓶,问他能不能够保证每天都有足够的饮料喝的情况下聪城市1走到城市n题目思路:直接按题意模拟就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include

2017-09-20 17:30:11 267

原创 计蒜客 16950 Banana(2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 A)

题目链接:Banana题目大意:有一些个猴子,一些种水果,n个条件:x编号的猴子可以喜欢y水果;m个条件:x水果可以产自y产地,现在输出每个猴子喜欢的所有水果的所有产地,先按猴子输出,同一个猴子,产地按字典序题目思路:两重映射,vector+set做一下就好了#include <map>#include <set>#include <cmath>#include <queue>#includ

2017-09-20 17:18:56 359

原创 树状数组及其离散化模板

1)、单点增减+区间求和 思路:C[x]表示该点的元素:sum(x)=C[1]+C[2]+……C[x]int arr[MAXN];inline int sum(int x){int res=0; while(x) res+=arr[x],x-=lowbit(x);return res;}inline void add(int x,int n){while(x

2017-09-20 17:07:12 236 1

原创 Tarjan

//记得每次清边vector<int>Edge[maxm];stack<int>S;int Dfn[maxn],Low[maxn],sccno[maxn],tclock,sccnt;//sccno代表某个点所在的强连通分量编号void tarjan(int u){ Dfn[u] = Low[u] = ++tclock; S.push(u); for(int i = 0;i

2017-09-18 22:14:06 1029

原创 hdoj 5934 Bomb

题目链接:Bomb题目大意:现在有一些炸弹,有他的坐标,爆炸半径范围以及爆炸缩需要的价值,问要引爆所有的炸弹最少需要多少花费题目思路:因为A能引爆B导致B引爆C,所以A能引爆C,但是A引爆B不代表B能引爆A,因为爆炸半径不一样嘛,所以建有向边,强连通分量缩点,然后找入度为零的联通快,必须引爆,不然没办法全部炸掉,引爆的花费是这个联通块的里面所有点的最小价值,然后加起来就好了#include <map

2017-09-18 22:03:52 500

原创 poj 2186 Popular Cows

题目链接:Popular Cows题目大意:有n个奶牛,m个关系,如果a认为b是受欢迎的,b认为c是受欢迎的,那么a认为c是受欢迎的,问有几个奶牛被其他所有的奶牛都认为是受欢迎的题目思路:先建有向图,那么问题可以转化为有多少个点被其他所有点访问到,我们可以先缩点,然后看出度为0的连通块有多少个,只能有1个,否则不可能存在这样的奶牛,然后看这个出度为0的连通块里面有多少个点,输出就好#include

2017-09-18 20:51:22 414

原创 hdoj 3836 Equivalent Sets

题目链接:Equivalent Sets题目大意:要证明两个集合A、B等价,需要得到X是Y的子集并且Y也是X的子集,现在有N个集合,M个条件,代表a是b的子集,问最少需要再添加多少条件使得所有N个集合都是等价的题目思路:X是Y的子集,也就是Y到X有一条有向边,那么题目就转换为了给你一个有向图,问最少添加多少条边使得所有的点都能到达任何另外的点,tarjan缩点,找出度为0和入度为0的最小值就可以了#

2017-09-18 20:28:03 499

原创 hihocoder 1175 拓扑排序·二

题目链接:拓扑排序·二题目大意:有一张无环的有向图,刚开始有一些结点有病毒,他会把他所有的病毒传染到后继结点,问最后所有点的病毒总数题目思路:拓扑排序,从入度为零的结点开始,删的时候传递结点病毒数就好了#include &lt;map&gt;#include &lt;set&gt;#include &lt;cmath&gt;#include &lt;queue&gt;#i...

2017-09-16 20:47:19 362

原创 hihocoder 1174 拓扑排序·一

题目链接:拓扑排序·一题目大意:有一些课程,一些课是另一些课的前置技能,问是不是所有的条件都成立题目思路:把前置条件看成一条有向路,所有的成立,只需要图中不出现环即可,拓扑排序一下,然后看是不是剩下零个点就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vecto

2017-09-16 20:43:50 369

原创 hdoj 5980 Find Small A

题目链接:Find Small A题目大意:有n个数,问里面有多少个字节的97,转化成二进制然后8个字节算一次就好了题目思路:直接暴力算,比较每八个位和97的八位是不是相同就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include <

2017-09-15 21:43:54 241

原创 hdoj 5979 Convex

题目链接:Convex题目大意:有一些围绕原点的距离为d的n个点,他们之间有n-1个度数给出来,现在求这个多边形的面积题目思路:当n-1三角形来算面积,加起来就好,三角形套正弦公式就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#inclu

2017-09-15 21:42:08 299

原创 hdoj 5978 To begin or not to begin

题目链接:To begin or not to begin题目大意:有1个红球和k个黑球,问先手的优势大还是后手优势大或者两个相同题目思路:多模拟几组情况就可以推出来情况了,奇数概率相同,否则概率相同#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>

2017-09-15 21:38:57 292

原创 hdoj 5976 Detachment

题目链接:Detachment题目大意:给你一个n,拆分成不等的一些数,要求乘积最大,算最大乘积题目思路:我们可以先手动拆一下,发现,不管我们怎么拆,我们是在2,3,4,5…这样的顺序上去拆,然后在上面的数进行操作,比如我们假设这个数拆成了2,3,4,然后剩下3个数,那么我们想的是把3全部加到2上面,这样一定最优,但是要求不能重复,如果剩下的数加到2上会有重复,所以我们要不能重复且要贡献最大,不能加

2017-09-15 21:25:19 263

原创 hdoj 5974 A Simple Math Problem

题目链接:A Simple Math Problem题目大意:给你一个a和b,现在要求x+y = a,lcm(x,y) = b,输出x,y题目思路:数据范围太大,暴力不可解,我们假设s=gcd(x,y)s = gcd(x,y) 则 i∗s+j∗s=a,(i∗s∗j∗s)/s=bi*s+j *s = a,(i*s*j*s)/s = b即(i+j)∗s=a,(i∗j)∗s=b(i+j )*s = a,(

2017-09-15 21:10:54 277

原创 hdoj 5971 Wrestling Match

题目链接:Wrestling Match题目大意:现在有N个人,M个对立的关系,有X个已知的好人,Y个已知的坏人,问能不能把所有的人都分成两堆某一堆里面,并且所有的限制条件都成立题目思路:题意真傻逼,完全是猜题意,先把所有跟好人对立和坏人对立的关系全部扔出来,然后对还没有分到某一个阵营的枚举好人或者坏人两种情况,最后看有没有都对立或者还没有分到某一个阵营的人就好了#include <map>#i

2017-09-15 20:57:30 271

原创 hihocoder 1432 JiLi Number

题目链接:JiLi Number题目大意:现在有一个范围n,现在需要你去统计这个范围内的吉利数,吉利数的定义是,这个当统计到这个数的时候数位1的数量刚好等于当前统计到的这个数字时,那么他就是吉利数,统计贡献题目思路:题目给的数据有一组是边界条件83个,打个表,统计到1e10,然后打完了82个,就好了,因为在我们可以发现1增加的速度在最后会远远超过本身的数字,所以打好边界的表就好了#include

2017-09-13 21:27:45 612

原创 hihocoder 1427 What a Simple Research

题目链接:What a Simple Research题目大意:给你包含A、C、D、E、G五个字符,现在需要你统计五个字符的数量,按从大到小的数量排序,如果数量相同,按字典序排,如果没有,不输出题目思路:写个结构体,排一下就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#inc

2017-09-13 21:22:15 494

原创 hihocoder 1426 What a Ridiculous Election

题目链接:What a Ridiculous Election题目大意:有三种操作: 1、交换相邻两个数 2、对某一个数位上的数,数值加一,对十求余,这个操作最多用3次 3、对某一个数位上的数,数值乘二,对十求余,这个操作最多用2次 现在问你能不能从12345变成给定的数字(五位数),能的话输出最少的操作数题目思路:BFS预处理一下,res数组记一下数字,剩余的操作2,剩余的操作3,然后模拟

2017-09-13 21:12:56 540

原创 hihocoder 1425 What a Beautiful Lake

题目链接:What a Beautiful Lake题目大意:给你一个长度为n的数组长度,求环形道路的最长上升子序列或最长下降子序列题目思路:直接dp做一下就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include <cstdlib>

2017-09-13 21:04:36 462

原创 hdoj 6066(2017 Multi-University Training Contest - Team 3) RXD's date

题目链接:RXD’s date题目大意:算大于等于35的有多少个数题目思路:RT#include <bits/stdc++.h>using namespace std;int main(){ int n,x; while(cin>>n){ int cot = 0; while(n--){ cin>>x;

2017-09-09 21:13:15 314

原创 hdoj 6063(2017 Multi-University Training Contest - Team 3) RXD and math

题目链接:RXD and math题目大意:给你一个式子,∑nki=1μ2(i)×⌊nki−−√⌋\sum_{i = 1}^{n^k}{\mu^2(i) \times \lfloor \sqrt{\frac{n^k}{i}} \rfloor}(mu(i)是莫比乌斯函数),给出n和k,算出这个数%1e9+7题目思路:注意到一个数字xx必然会被唯一表示成a2​​×ba^2​​ ×b的形式.其中|μ(b)

2017-09-09 21:11:43 270

原创 hdoj 6060(2017 Multi-University Training Contest - Team 3) RXD and dividing

题目链接:RXD and dividing题目大意:有n-1个数2到n,现在需要你去切分这n-1个数为k个区间,区间可以为空,给出n-1条边,有边权,使得这些点组成一棵树,现在要你去算你分的每个区间的贡献,res res=∑ki=1f({1}⋃Si)res = \sum_{i = 1}^{k}{f(\{1\}\bigcup S_i)} f代表要使得所有的点都能直接或者间接相连,问需要那些边的边权

2017-09-09 21:06:02 206

原创 hdoj 6058(2017 Multi-University Training Contest - Team 3) Kanade's sum

题目链接:Kanade’s sum题目大意:给你一个n个数的数列,数列是n个数的某一个排列,枚举l,r,每个[l,r]区间里面第k大的数作为这个贡献,也就是算∑nl=1∑nr=lf(l,r,k)\sum_{l=1}^{n}\sum_{r=l}^{n}f(l,r,k)这个玩意,n的范围是5e5题目思路:暴力肯定T,没得说,因为是一个全排列,我们可以想到去算每个数是第k大的时候有多少次,然后这个东西怎么

2017-09-09 20:53:08 279

原创 Codeforces Round #433 (Div. 2) D. Jury Meeting

题目链接:Jury Meeting题目大意:有0到n这样n+1个城市,有m个航班,给出出发的时间(当天出发,当天到),出发的城市,到达的城市(要么是从0到某城市,要么是从某城市到0),后面是花费,然后除了0之外的所有城市都有1个科学家,现在所有家要一起在0呆k天,然后回到自己所在的城市,问最小花费题目思路:贪心去做,我们先去找出发的最小花费,再找到达的最小花费,两个相加,预处理一下前缀和就好了(代码

2017-09-07 20:46:00 291

原创 Codeforces Round #433 (Div. 2) C. Planning

题目链接:Planning题目大意:有n架飞机,所有的飞机至少得在k+1分钟后才能飞行,第i架飞机每分钟延迟的费用是a[i],每分钟只能起飞一架飞机,问最小延迟费用是多少题目思路:按样例模拟,我们可以看到对于延迟花费最大的,我们应该让他在最接近的时候走,然后贪心做,用过的时间不能再用,所以要扔出去,用一个set维护就好了,思路比较乱,看代码一眼就能看懂了#include <map>#include

2017-09-07 20:28:20 252

原创 Codeforces Round #433 (Div. 2) B. Maxim Buys an Apartment

题目链接:Maxim Buys an Apartment题目大意:给你一个n和k,n代表总共有n个房子排成一排,k代表有k个房子有人居住,但是不知道具体位置,与有人居住的房子相邻并且这个房子是空的,这个房子就是ok的,问最少和最多有多少个房子是ok的题目思路:最少就是前面的全部按着,只有1个房子是空的(没满的情况下),最多就是按照一个有人居住的房子在中间,左右两边都是空的,这样是最大利用的,然后模拟

2017-09-07 20:22:18 315

原创 Codeforces Round #433 (Div. 2) A. Fraction

题目链接:Fraction题目大意:给你一个n,计算最大的a/b使得a与b互质且a < b,a+b = n题目思路:枚举就好了,a要尽量大,b尽量小就好了,在n/2附近去取#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio

2017-09-07 20:17:12 287

原创 网络流模板

最大流Dinic模板const int MAXN = 1000+100;const int MAXM = 1000000+10;const int INF = 1000000+10;struct Edge{ int from, to, cap, flow, next;}edge[MAXM];int dist[MAXN], vis[MAXN], cur[MAXN], top, head[

2017-09-06 20:25:29 247

原创 hdoj 5988 Coding Contest

题目链接:Coding Contest题目大意:有n个区域和m条路,每个区域有a[i]个人和b[i]个食物,然后是m条路连接两个区域,这条路容量为cap,这条路断掉的概率为p,第一个经过的时候一定不会断,后面的人有概率p会断,现在需要所有人都吃上饭并且破坏网络的概率最小题目思路:我们是不能直接算破坏网络的,破坏了会对网络流产生影响,所以我们需要去算不能破坏的概率,我们知道一条路里面都不被破坏的概率是

2017-09-06 20:22:00 607

原创 poj 3068 "Shortest" pair of paths

题目连接:“Shortest” pair of paths题目大意:给你一个有向图,有边权,现在需要你找出两条从0到n-1的路径并且两条路径无公共点而且需要使得边权和最小,不存在输出No possible,存在输出两条路径的边权和题目思路:这题我们可以想到去跑网络流,然后看最大流是不是2,我只给2的流量从超级源点流出,为了方便起见,我们将所有点位置加1,变成求1到n的最小费用最大流,超级源点为0,连

2017-09-06 18:00:16 310

原创 hdoj 1533 && poj 2195 Going Home

题目连接:Going Home题目大意:现在有一张图,有n个房间和n个人,现在每个人移动的代价是1,只能上下左右移动,不能有相同的人在一个房间,问所有的人都进入房间的最小花费是多少题目思路:这种有限制而且还有花费的,我们不妨转化为最小费用最大流,我们用一个超级源点连接所有的人,容量为1,单位花费为0,然后用一个超级汇点被所有的房间连接,容量为1,单位花费为0,然后每个人和所有房间相连,容量为1,单位

2017-09-06 17:31:50 267

原创 hihocoder 1378 网络流二·最大流最小割定理

题目链接:网络流二·最大流最小割定理题目大意:给你一张有向图,算最小割,最小割集的点数个数和个数编号题目思路:跑一边最大流可以得到最小割,这个是显而易见的,要找最小割集,我们只需要最后再跑一遍BFS就好了,这个时候一定是找不到增广路的,所以这时候访问到的点就是最小割集了,记录一下就好了#include <map>#include <set>#include <cmath>#include <q

2017-09-05 17:02:33 373

空空如也

空空如也

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

TA关注的人

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