11 2016 档案
摘要:bzoj3367[Usaco2004 Feb]The Big Game 球赛 题意: n只奶牛,每只支持两个球队中的一个,它们依次上车,上到一定程度可以开走这辆车并换下一辆继续上。要求一辆车上支持不同球队的奶牛数的差≤I,或者这辆车上只有支持同一球队的牛。问通过安排换车时机所能得到的车数的最小值。n
阅读全文
摘要:bzoj3378[Usaco2004 Open]MooFest 狂欢节 题意: n只奶牛,第i只听力为vi,坐标为xi,两只奶牛聊天时音量是max(vi,vj)*abs(xi-xj)。求n(n-1)/2对奶牛的音量和。n≤20000。 题解: 首先所有奶牛按x排序,记录其位置,接着再按它们音量升序排
阅读全文
摘要:bzoj3446[Usaco2014 Feb]Cow Decathlon 题意: FJ有n头奶牛。FJ提供n种不同的技能供奶牛们学习,每头奶牛只能学习一门技能,每门技能都要有奶牛学习。 第i头奶牛学习第j门技能,FJ得到的分数S[i][j]。此外还有b个奖励,第i个奖励的格式是: Pi 、Ki 、A
阅读全文
摘要:bzoj1745[Usaco2005 oct]Flying Right 飞行航班 题意: n个农场,有k群牛要从一个农场到另一个农场(每群由一只或几只奶牛组成)飞机白天从农场1到农场n,晚上从农场n到农场1,上面有c个座位,问最多可以满足多少只牛的要求。n≤10000,k≤50000,c≤100。
阅读全文
摘要:背景: 有时分解一个很大的合数,因为可能质因子很大,导致分解时复杂度不是严格O(log2n),需要用一点技巧使其复杂度得到保证。 做法: 在筛法求质数时,不用把质数存储成一张表,而用一个数组big[i]保存每个数(不管是质数还是合数)的最大质因数,接着在分解一个数x时,令y=x,之后不断地y/=bi
阅读全文
摘要:bzoj3732Network 题意: 给一个无向图,k个询问求节点a到节点b最长边的最小值。n,k≤15000。 题解: ”最长边的最小值“经常可以用最小生成树解决,因为生成树里的每一条边都是可取的最小边,求完生成树之后就是经典的倍增应用:求lca的时候顺便维护一下边权最大值即可。 代码: 1 #
阅读全文
摘要:bzoj1510[POI2006]Kra-The Disks 题意: 一个瓶子有n个节,每个节有一个宽度。现在要从上往下扔m个盘子,如果盘子的下一个位置宽度比该盘子的宽度小则盘子会停在这个位置。问最后一个盘子会停在那个位置。n,m≤300000。 题解: 首先利用单调栈去掉那些没用的节,之后对于每个
阅读全文
摘要:bzoj2208[Jsoi2010]连通数 题意: 给一个有向图,每个点对答案的贡献为该点可达的点个数,求答案。n≤2000,m≤4000000。 题解: 听说暴力可过QAQ不过为了练tanjan还是写了常规写法。 先缩点,接着对每个入度为0的点做dp,每个点维护一个bitset。对于当前点,先将该
阅读全文
摘要:bzoj2678[Usaco2012 Open]Bookshelf 题意: 给出一个序列,有两个元素ai、bi,要求将一个序列分成几段,每段的bi和不能超过l,每段的代价为该段最大的ai,求一个方案使代价和最小。n≤100000。 题解: 首先方程为f[i]=f[j]+mx[j+1..i],sum[
阅读全文
摘要:bzoj1179[Apio2009]Atm 题意: 给个有向图,每个点有个点权,有些点有酒吧。现在求一个人从任意一点出发获得点权的最大和。要求每个点的点权只能获得一次,且路径最后必须在酒吧结束,可以重复经过点和边。n,m≤500000。 题解: tarjan缩点之后跑spfa,注意不能用dijkst
阅读全文
摘要:bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏 题意: 给一棵树,问去掉哪个点后可以使剩下的每个子树大小都小于等于节点总数的一半。n≤10000。 题解: dfs的时候求一下子树大小,以当前节点的父节点为根节点的子树大小为n-以当前节点为根节点的子树大小。 代码: 2
阅读全文
摘要:背景: 只是想来备份一下最近的代码,顺便总结一下三种最短路算法的应用。 基础代码: dijkstra: spfa(bfs+slf): spfa(dfs): floyd: 1 inc(k,1,n)inc(i,1,n)inc(j,1,n)if(map[i][k]+map[k][j]<map[i][j])
阅读全文
摘要:bzoj2346[Baltic 2011]Lamp 题意: 给出一个像下图一样的电路图,长为n,宽为m,求最少将几个"\"改成"/"或将"/"改成"\"使左上角和左下角联通。n,m<=500 题解: 如果某格是/,则左上角和右下角连边,长度为0,左下角和右上角连边,长度为1;如果某格是\,则左上角和
阅读全文
摘要:bzoj1342[Baltic2007]Sound静音问题 题意: 给出一个n个数的序列,问有多少个长度为m的区间满足该区间的最大值与最小值的差≤一个定值。n≤1000000。 题解: 两个单调队列,一个维护区间最大值,一个维护区间最小值。 代码: 20161111
阅读全文
摘要:bzoj1339[Baltic2008]Mafia 题意: 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控。对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点。n≤200。 题解: 每个点拆成两个点,边权为点权
阅读全文
摘要:bzoj4716假摔 题意: 给出一个矩阵,求这个矩阵中权值和第k小的长在xmin到n之间,宽在ymin到m之间的子矩阵。n,m≤1000,k≤250000。 题解: 首先求出长为xmin,宽为ymin的子矩阵放入优先队列,每次取出时如果该矩阵之前没有出现过(用set判重),则将其扩展并放入优先队列
阅读全文
摘要:bzoj3526[Poi2014]Card 题意: 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i]。有m个操作,第i个操作会交换c[i]和d[i]两个位置上的卡片。每次操作后,你都需要判断,通过任意翻转卡片(把正面变为反面或把反面变成正面,但不能改
阅读全文
摘要:bzoj3296[USACO2011 Open] Learning Languages 题意: n头奶牛,每头牛会一些语言,总共有m种语言。求需让某些奶牛学会的最小语言数使得任意两只奶牛直接或间接可以用同种语言聊天(比如a会语言1,b会语言1和2,c会语言2和3,d会语言3则他们两两可以交流)。n≤
阅读全文
摘要:bzoj1090[SCOI2003]字符串折叠 题意: 折叠的定义如下:1. 一个字符串可以看成它自身的折叠。记作S。2. X(S)是X(X>1)个S连接在一起的串的折叠。记作X(S)。注意括号可以嵌套。给出字符串,求折叠后字符串的最短长度。 字符串长度≤100。 题解: 区间dp。f[i][j]=
阅读全文
摘要:bzoj1596[Usaco2008 Jan]电话网络 题意: 在一棵树中选最少的点建塔,使得每个点都有塔或相邻点有塔。n≤10000。 题解: 贪心。dfs时对于每个当前点,在dfs完它的所有子节点后如果它以及它的儿子以及它的父亲没塔,则在它父亲处建塔。 代码: 20161108
阅读全文
摘要:bzoj4152[AMPPZ2014]The Captain 题意: 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。n≤200000。 题解: 结论:按某维坐标排序后,只有相邻两个点的距离才可能是这两个点的最小
阅读全文
摘要:bzoj1528[POI2005]sam-Toy Cars bzoj1826[JSOI2010]缓存交换 题意: Jasio有n个不同的玩具,它们都被放在了很高的架子上,地板上不会有超过k个玩具。当Jasio想玩地板上的其他玩具时,他会自己去拿,如果他想玩的玩具在架子上,他的妈妈则会帮他去拿,当她拿
阅读全文
摘要:bzoj2079[Poi2010]Guilds 题意: 给一个图染色,要求每个图必须染上某个色同时与另外一个色的点有边相连,问可否满足要求。n≤200000。 题解: 直接上结论:除非有点没有与别的点相连,否则肯定能满足要求。 代码: 20161107
阅读全文
摘要:bzoj2083[Poi2010]Intelligence test 题意: 给出一个序列,m个询问,每次问一个序列是否为所给序列的子序列(可以不连续)。n≤1000000,m≤1000000,询问序列总长度≤1000000。 题解: 以元素的值为第一关键字,位置为第二关键字排序。接着对于每次询问,
阅读全文
摘要:bzoj3522[Poi2014]Hotel 题意: 在一个树上求三个点两两距离相等的方案数。n≤5000。 题解: 枚举每个点作为中心点,求出每个子树的深度为i的节点大小,则目标是求某个深度的答案和。 设第i个子树在某个深度的节点数为dep[i],令a1[i]=sigma(dep[j],j<=i)
阅读全文
摘要:bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式 题意: John记录了n天的牛奶质量值。他想知道最长的出现了至少k次的模式(即一个连续子串)的长度。n≤20000。 题解: 求一个总哈希值,二分模式长度,枚举每个模式开始端点,获得它的哈希值,然后排序比较有没有至
阅读全文
摘要:bzoj1124[POI2008]枪战Maf 题意: 有n个人,每个人手里有一把手枪。一开始所有人都选定一个人瞄准(有可能瞄准自己)。然后他们按某个顺序开枪,且任意时刻只有一个人开枪。因此,对于不同的开枪顺序,最后死的人也不同。求最小死人数和最大死人数。n≤1000000。 题解: 最小死人数:先找
阅读全文
摘要:bzoj1109[POI2007]堆积木Klo 题意: n个数,第i个数为ai,现在要移走一些数,使得移走后有最多的数位于它对应的位置上。求移走的数。n≤100000。 题解: dp方程:f[i]=f[j]+1(i>j,a[i]>a[j],a[i]-a[j]>=i-j即a[i]-i>=a[j]-j)
阅读全文
摘要:bzoj1640[Usaco2007 Nov]Best Cow Line 队列变换 bzoj1692[Usaco2007 Dec]队列变换 题意: 有一个奶牛队列。每次可以在原来队列的首端或是尾端牵出一头奶牛,把她安排到新队列的尾部,然后对剩余的奶牛队列重复以上的操作,直到所有奶牛都被插到了新的队列
阅读全文
摘要:bzoj2590[Usaco2012 Feb]Cow Coupons 题意: 市场上有N头奶牛,第i头奶牛价格为Pi。FJ有K张优惠券,使用优惠券购买第i头奶牛时价格会降为Ci,每头奶牛只能使用一次优惠券。FJ想知道花不超过M的钱最多可以买多少奶牛。n≤50000,m≤10^14。 题解: 先按ci
阅读全文