自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

beginend

只要在路上,就没有到不了的远方

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

原创 hackkerrank Jogging Cats 枚举

题意给出n个点m条边的无向图,求四元环数量。 n,m<=100000分析首先有一个很棒的结论,就是如果我们枚举每个度数比某个点大的所有点,那么复杂度就为O(m−−√)O(\sqrt m) 证明:我们设一个点与它相连且度数不小于它的点数为x,那么该点的度数和这x个点的度数必然都不大于x,那么最好的情况就是其所有点的度数都为x,那么有x2<=2mx^2<=2m,从而有x<=2m−−−√x<=\sqr

2017-03-31 20:14:05 412

原创 hackerrank DAG Queries 定期重构+bitset

题意给出一个有向无环图,一开始每个节点为0,要求资瓷三个操作: 1 u x表示将u可以到达的节点权值变为x 2 u x表示将u可以到的的节点y的权值变为min(val[y],x) 3 u表示询问u的权值。 n,m,q<=100000分析对于操作1我们可以考虑定期重构,但我们需要很快的询问两个节点间是否可以到达,那么就可以用bitset来完成。注意到bitset空间会爆炸,于是就要把节点按序号

2017-03-30 21:53:01 645

原创 bzoj 3995: [SDOI2015]道路修建 线段树

题意给出一个2行n列的图,只有相邻的点有连边,要求资瓷两个操作: Q l r查询第l列到第r列的最小生成树 C x1 y1 x2 y2 w修改边权 n,m<=60000,w<=10000分析第一想法是lct来xjb维护一下,发现不会做。。。想了一下,想到了一个用set维护待修改莫队的方法。。。然后又想了一下,想到了一个n*m的做法。。。 毕竟太弱。。。 直接线段树维护即可。 考虑合并区间

2017-03-29 21:49:35 601

原创 bzoj 4784: [Zjoi2017]仙人掌 树形dp+双连通分量

题意给出一个仙人掌,无重边自环,问有多少种加边方案使得其还是一个仙人掌(可以不加)。 n分析显然一开始可以特判掉不是仙人掌的情况,然后输出0.这个可以用树上差分来实现。然后将所有的环都找出来,将环上的边标记为不可走,那么剩下的边就组成了一个森林,我们就可以愉快的树形dp啦! 考虑一棵树,我们设强制每颗子树必然要加一条连到其祖先的边(根节点特判),显然这样的边只能有一条。若本

2017-03-29 19:23:54 955

原创 bzoj 3991: [SDOI2015]寻宝游戏 dfs序+虚树+set

题意给出一棵树,每次操作会把一个点放入宝藏或把宝藏拿走,每次操作完后问从任意一个点开始遍历所有宝藏点最后回到起点的最短路径。 n,m<=100000分析一开始想到树剖上面去了。。。其实那个距离就是虚树中任意两点间的距离和*2 同时等于把虚树所有点按照dfs序排好之后相邻两点的距离和加上起点到终点的距离和。 用一个set暴力维护即可。代码#include<iostream>#include<c

2017-03-28 21:19:15 363

原创 bzoj 3993: [SDOI2015]星际战争 二分答案+最大流

题意3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战。在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai。当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了。X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值。激光武器的攻击是连续的。这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人。Y

2017-03-28 15:01:19 376

原创 bzoj 3994: [SDOI2015]约数个数和 莫比乌斯反演

题意设d(x)为x的约数个数,给定N、M,求∑ni=1∑mj=1d(ij)\sum_{i=1}^n\sum_{j=1}^m d(ij) n,m,T<=50000分析一开始推了半天还是停留在原来的式子,于是无奈地点开了题解。。。首先模一下PoPoQQQ大佬%%% 要把这个讨厌的d(ij)给去掉的话,怎么换元或交换主题都没用,得先知道一个神奇的结论: d(nm)=∑i|n∑j|m[gcd(i,j

2017-03-28 14:15:44 412

原创 bzoj 4567: [Scoi2016]背单词 字典树+贪心

题意意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置 n<=100000,sigma(len)<=510000分析一开始的想法是用后缀数组来建图,要真打起来的话估计会T。而且也没想到要怎么贪心。。。还是太弱。其实只要一颗字典树就可以处理好建图问题啦。 然后谈心的话。。。每次找size较小的子树去贪即可。证明嘛。

2017-03-27 19:34:53 761

原创 bzoj 4515: [Sdoi2016]游戏 树链剖分+线段树

题意给出一棵树,边有边权,一开始每个节点上都有一个权值123456789123456789,要求资瓷两个操作 1 s t a b对s到t路径上的每个节点x加入一个a*w+b的权值,w为x到s的距离 2 s t求s到t路径上的最小值 n,m<=100000分析据说这道题的序列形式叫做李超树,就是每次在区间加入一条线段,然后查询区间的最小值。 但是这是一棵树,那很明显就要上个树剖然后用线段树维护

2017-03-26 21:50:03 583

原创 bzoj 4569: [Scoi2016]萌萌哒 ST表+并查集

题意给出若干个限制l1 r1 l2 r2表示区间[l1,r1]和[l2,r2]相同,问有多少个不含前导0的n位数可以满足所有限制,答案模10^9+7. n&lt;=100000分析一开始全往大数据结构上面想了,根本没有想到用ST表来做。题解这个想法非常的棒棒,用f[i,j]表示以i开头长度为2^j的区间 若f[i,j]和f[k,j]属于统一集合则表示区间[i,i+2j−1]...

2017-03-25 11:49:32 348

原创 bzoj 4514: [Sdoi2016]数字配对 费用流

题意有 n 种数字,第 i 种数字是 ai、有 bi 个,权值是 ci。 若两个数字 ai、aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci×cj 的价值。 一个数字只能参与一次配对,可以不参与配对。 在获得的价值总和不小于 0 的前提下,求最多进行多少次配对。 n≤200,ai≤10^9,bi≤10^5,∣ci∣≤10^5分析设f(

2017-03-23 21:53:12 650

原创 bzoj 4516: [Sdoi2016]生成魔咒 后缀数组

题意给你一个字符串,问该字符串的每一个前缀中分别有多少个不同的子串。 n<=100000分析一种很暴力的方法就是构建SAM,然后在更新fa的时候暴力维护答案。我用的是sa来做。我们考虑将字符串反过来,构建sa,那么一个原串的一个前缀就变成了当前的一个后缀。 设当前处理到i,1到i-1已经处理完毕,且答案为ans,那么我们只要统计原串中以i结尾的后缀与以j(1<=j<=i-1)结尾的后缀的最长公共

2017-03-23 20:34:34 631

原创 bzoj 1113: [Poi2008]海报PLA 分治

题意N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. 1<=n<=250000分析看到题我的第一想法就是分治。。。 每次在区间[l,r]中找到一个最小的,然后左右递归即可。 复杂度由于要求rmq,就是nlogn的。 还有O(n)的做法,就是用单调栈来做。代码#include<iostream>#include<cstdio>#include<cstdlib>#incl

2017-03-23 19:15:52 324

原创 bzoj 1875: [SDOI2009]HH去散步 动态规划+矩阵乘法

题意给出一个无向图,问从点s出发到点e经过t条边有多少种不同的路径,不能走回头路。 n<=20,m<=60,t<=230n<=20,m<=60,t<=2^{30}分析一开始看:我擦这不就是个傻逼矩阵乘法题吗。 再一看:我擦居然不能回头,不会了2333但是我们可以注意到边数并不多,于是有个很棒棒的idea就是对边进行dp然后矩阵乘法优化即可。代码#include<iostream>#includ

2017-03-23 15:48:26 442

原创 bzoj 2096: [Poi2010]Pilots 单调队列

题意Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值。耍畸形一个人是不行的,于是他找到了你。 0<=k<=2000,000,000,1<=n<=3000,000分析本来想写一波set的,结果发现会RE。。。维护两个单调队列即可。代码#include<iostream>#include<

2017-03-23 14:14:25 396

原创 bzoj 4173: 数学 欧拉函数

题意 n,m&lt;=1015n,m&lt;=1015n,mnmodk+mmodk&gt;=k可以变形成⌊n+mk⌋−⌊nk⌋−⌊mk⌋=1nmodk+mmodk&gt;=k可以变形成⌊n+mk⌋−⌊nk⌋−⌊mk⌋=1n\mod k+m\mod k>=k可以变形成\lfloor\frac{n+m}{k}\rfloor-\lfloor\frac{n}{k}\rfloor-\lfloor\fr...

2017-03-23 13:40:04 341

原创 bzoj 2081: [Poi2010]Beads 哈希

题意Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串),每块有k(k>0)个珠子,如果这条珠子的长度不是k的倍数,最后一块小于k的就不要拉(nc真浪费),保证珠子的长度为正整数。 Zxl喜欢多样的项链,为她应该怎样选择数字k来尽可能得到更多的不同的子串感到好奇,子串都是可以反转的,换句话说,子串(1,2,3)和(3,2,1)是

2017-03-22 21:13:24 374

原创 bzoj 3309: DZY Loves Math 莫比乌斯反演

题意对于正整数n,定义f(n)为n所含质因子的最大幂指数。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。 给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b)。 T<=10000,1<=a,b<=10^7分析%%%PoPoQQQ大佬题解本蒟蒻自己一直推到了最后一步,然后就是不会求那个前缀和

2017-03-20 21:22:54 371

原创 bzoj 2226: [Spoj 5971] LCMSum 数学+欧拉函数

题意求∑ni=1lcm(i,n)\sum_{i=1}^n lcm(i,n) T<=300000 n<=1000000分析ans=∑ni=1lcm(i,n)ans=\sum_{i=1}^nlcm(i,n)=∑ni=1i∗ngcd(i,n)=\sum_{i=1}^n\frac{i*n}{gcd(i,n)}=∑d|n∑gcd(i,nd)=11<=i<=ndn∗i=\sum_{d|n}\sum_{1<=

2017-03-20 20:11:22 373

原创 bzoj 1025: [SCOI2009]游戏 动态规划

题意 windy学会了一种游戏。对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应。最开始windy把数字按 顺序1,2,3,……,N写一排在纸上。然后再在这一排下面写上它们对应的数字。然后又在新的一排下面写上它们 对应的数字。如此反复,直到序列再次变为1,2,3,……,N。 如: 1 2 3 4 5 6 对应的关系为 1->2 2->3 3->1 4->5 5->4 6->6

2017-03-20 13:21:30 368

原创 bzoj 2186: [Sdoi2008]沙拉公主的困惑 数论

题意求[1,n!]内有多少个数与m!互质 n,m<=10000000分析这么弱的题我居然都没想到。。。 首先肯定满足若x与m!互质,则x+m!和x-m!必然也与m!互质,那么答案就是ϕ(m!)∗n!/m!\phi(m!)*n!/m! 剩下乱搞即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>

2017-03-18 14:40:23 306

原创 bzoj 3450: Tyvj1952 Easy 期望dp

题意某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o。 比如ooxxxxooooxxx,分数就是2*2+4*4=4+16=20。 Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地

2017-03-18 14:27:06 538

原创 bzoj 3239: Discrete Logging BSGS

题意给出b,p,n,求一个l,使得bl=n(modp)b^l=n(\mod p)分析离散对数模板题,当复习一波。 思路是把l分块,然后扔进map里。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<map>#d

2017-03-16 20:09:30 290

原创 bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力

题意“Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了使这一次 Madoka 不再与 QB签订契约,Homura 决定在刚到学校的第一天就解决 QB.然而,QB 也是有许多替身的(但在第八话中的剧情显示它也有可能是无限重生的),不过,意志坚定的 Homura 是不会放弃的——

2017-03-15 21:52:12 354

原创 bzoj 3301: [USACO2011 Feb] Cow Line 康托展开

题意给出n和操作数k,要求资瓷: P x求n的第x个排列 Q 一个n的排列 求这是第几个排列 n<=20分析康托展开模板题代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#define N 25#define LL long longusing nam

2017-03-14 19:51:21 488

原创 bzoj 4537: [Hnoi2016]最小公倍数 并查集按秩合并+分块

题意给出n个点m条边的无向图和q个询问,每条边有两个权值a和b,每个询问给出x y a b,问有没有一条x到y的路径(不一定是简单路径)满足max(e_a)==a且max(e_b==b) n,q<=50000,m<=100000分析对于一个询问,我们可以把所有e_a<=a且e_b<=b的边都加进来,并看x和y所在的联通块内最大的a和最大的b是否与给出的a和b相等即可。 但如果每次暴力维护的话显然

2017-03-14 16:42:06 540

原创 bzoj 4538: [Hnoi2016]网络 树链剖分+线段树

题意给出一棵树,要求资瓷m个操作: 0 x y v表示点x和点y有一个交互请求,权值为v 1 t表示第t个操作的请求被取消 2 x表示询问没有覆盖x的交互请求的最大权值 n<=100000,m<=200000分析一开始没有看到删除操作,以为是一道傻逼题。。。首先树剖,然后对于一个请求,显然其能影响到的点为不在该链上的点,那么就把区间取反,然后插入即可。但由于有删除操作,于是我们在线段树的每个

2017-03-13 21:10:45 318

原创 bzoj 4542: [Hnoi2016]大数 莫队算法

题意有一个很大的数 S,长度达到了 N 位;这个数可以看成是一个串,它可能有前导 0,例如00009312345 。有一个素数P。现在,提出了 M 个询问,每个询问求 S 的一个子串中有多少子串是 P 的倍数(0 也 是P 的倍数)。例如 S为0077时,其子串 007有6个子串:0,0,7,00,07,007;显然0077的子串007有6个子串都是素数7的倍数。 N,M<=100000,P为

2017-03-13 19:28:12 360

原创 bzoj 4517: [Sdoi2016]排列计数 排列组合+动态规划

题意求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的 满足条件的序列可能很多,序列数对 10^9+7 取模。 T=500000,n≤1000000,m≤1000000分析设f[i]表示i的排列的错排方案,显然f[i]=f[i−1]∗(i−1)+f[i−2]∗(

2017-03-11 15:59:58 414

原创 bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序 数学

题意农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动。因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序。每一头牛的脾气都是一个在1到100,000之间的整数并且没有两头牛的脾气值相同。在排序过程中,JOHN 可以交换任意两头牛的位置。因为脾气大的牛不好移动,JOHN需要X+Y秒来交换脾气值为X和Y的两头牛。 请帮JOHN计算把所有牛排好序的最短时间。分析我们

2017-03-11 11:11:48 679

原创 bzoj 1004: [HNOI2008]Cards burnside引理+dp

题意有n张卡片,m个置换,要给每张卡片染上三种颜色,每种颜色的个数固定,求有多少种本质不同的染色方案。分析瞎几把乱搞就行,不需要理会置换群,全是我瞎逼逼的代码没有,我也不会做总结我太神了

2017-03-11 10:06:54 320

原创 bzoj 3163: [Heoi2013]Eden的新背包问题 多重背包

题意有n种物品,每种物品有费用,价值和数量三个值。 有m个询问x y,求有x元且不选第y种物品的情况下最多可以获得多少价值。 n,y<=1000,m<=300000分析我打的水法:求一次前缀背包和后缀背包,对于每个询问分别枚举前缀价格和后缀价格即可。 复杂度O(nq)正解:分治,设solve(i,j)表示不选i到j种物品时能获得的最大价值。显然solve(l,r)可以更新到solve(l,mi

2017-03-10 21:56:46 514

原创 bzoj 4477: [Jsoi2015]字符串树 可持久化线段树

题意给出一棵树,每条边上都有一个长度不超过10的字符串。给出m个询问x y ch,求x到y的路径有多少个字符串的前缀是ch。 n,m<=100000n,m<=100000分析将每个字符串用一个map离散化,然后在树上建可持久化线段树即可。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#includ

2017-03-09 15:34:25 648

原创 bzoj 4332: JSOI2012 分零食 fft

题意把正整数M分解成至多N份且每份不为0(注意1+2+3与2+3+1是不一样的即存在顺序性),一份x的价值是f(x)=a2∗x∗x+a1∗x+a0,总价值为每一份价值的乘积。求所有情况下总价值的和,答案模mo。把正整数M分解成至多N份且每份不为0(注意1+2+3与2+3+1是不一样的即存在顺序性),一份x的价值是f(x)=a2*x*x+a1*x+a0,总价值为每一份价值的乘积。求所有情况下总价值的和

2017-03-08 21:31:32 736

原创 bzoj 2956: 模积和 分块+数学

题意求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j。 n,m<=109n,m<=10^9分析一开始没看到i≠j的条件,然后就直接把原式拆成(∑(nmodi))∗(∑(mmodj))(\sum (n mod i))*(\sum (m mod j)),分别计算后直接加起来即可。 但是有了i≠j这个条件,我们可以选择容斥,就是用上述式子减去∑(nmodi)∗

2017-03-08 17:16:26 444

原创 bzoj 2707: [SDOI2012]走迷宫 期望dp+强连通分量+高斯消元

题意给出一个有向图问从起点到终点期望走多少步。满足每个强连通分量的大小不大于100. n<=10000,m<=1000000分析之前做过一道类似的题,是一个无向图而且n<=100,那么显然有递推式f[i]=1+∑jf[j]∗1d[i]f[i]=1+\sum_j f[j]*\frac{1}{d[i]} 满足i能到达j,d[i]表示i的度数。 那么显然可以用高斯消元搞。 对于这题而言,我们可以用

2017-03-07 21:39:06 450

原创 bzoj 3566: [SHOI2014]概率充电器 概率dp+树形dp

题意有一棵树,每个节点有一个自身通电的概率,每条边有一个能够导电的概率,求期望通电的节点个数。 n<=500000分析在某些题库上提交居然爆栈了。。。别人口中的傻逼题我居然做了辣么久,看来在期望这方面我还是有所欠缺啊。。。一开始的想法是设f[i]表示i能够通电,i的子树的期望通电节点数,g[i]表示i不能通电的期望节点数。然后就推了半天没推出来。。。正解是这样哒: 大体思路就是求出每个节点通电的

2017-03-07 16:46:21 317

原创 bzoj 1485: [HNOI2009]有趣的数列 卡特兰数

题意我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件:我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列ai; (1)它是从1到2n共2n个整数的一个排列{ai}; (2)所有的奇数项满足a1<a3<…<a2n−1,所有的偶数项满足a2<a4<…<a2n; (2)所有的奇数项满足a1<a3<…<a2n-1

2017-03-07 15:10:13 854

原创 bzoj 2502: 清理雪道 有源汇最小流

题意滑雪场坐落在FJ省西北部的若干座山上。 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向。 你的团队负责每周定时清理雪道。你们拥有一架直升飞机,每次飞行可以从总部带一个人降落到滑雪场的某个地点,然后再飞回总部。从降落的地点出发,这个人可以顺着斜坡向下滑行,并清理他所经过的雪道。 由于每次飞行的耗费是固定的,为了最小化耗费,你想知道如何用最少

2017-03-07 14:34:48 336

原创 bzoj 3771: Triple 快速傅里叶变换+容斥原理

题意给定n个物品,可以用一个/两个/三个不同的物品凑出不同的价值,求每种价值有多少种拼凑方案(顺序不同算一种)分析显然搞一波母函数然后直接上fft即可。 问题是怎么处理重复的。 设x为只选一个,y为选两个相同的,z为选三个相同的,那么答案就是x+(x*x-y)/2+(x*x*x-3*x*y+z*2)/6解释一下,x就是只选一个,(x*x-y)/2表示选两个减去重复的再除以排列,(x*x*x-3*

2017-03-04 15:07:32 392

空空如也

空空如也

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

TA关注的人

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