09 2016 档案
摘要:bzoj1593[Usaco2008 Feb]Hotel 旅馆 题意: 给个长度为n的全为0的序列,m种操作,1 di表示求序列中最早出现的长度为di的值为0的连续子序列,并把这个连续子序列赋为1;2 xi,di表示将[xi,xi+di-1]置为0。n,m≤50000。 题解: 用一个线段树,维护三
阅读全文
摘要:bzoj1574[Usaco2009 Jan]地震损坏Damage 题意: n点m边无向图,知道p条信息ai,表示ai没被损坏但它和点1不联通(损坏的点不能通行),问有多少点和1联通(不包括损坏的点)。n≤30000,m≤100000。 题解: 有一个结论,最优删点方案应该是对每个信息ai,将所有a
阅读全文
摘要:bzoj1753[Usaco2005 qua]Who's in the Middle 题意: 输入N个数,输出升序排列后中间那个数。n≤10000。 题解: 本来想交个python的结果莫名奇妙RE了~ 代码: 20160926
阅读全文
摘要:bzoj1707[Usaco2007 Nov]tanning分配防晒霜 题意: n头牛,第i头适应spf值在ai到bi之间的防晒霜。m种防晒霜,每种spf值为ci,有di瓶,问最多多少奶牛能得到合适的防晒霜。n,m≤2500。 题解: 贪心,把牛按上限从小到大排序,然后对于每只奶牛,应该选它可以用的
阅读全文
摘要:bzoj1643[Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 题意: 给出n,问4个整数的平方和为n有多少种方案,顺序不同也算。n≤10000。 题解: 神犇们都用dp,我不会……故直接三重循环枚举1到sqrt(n)判断第四个数是不是整数,结果排名倒数
阅读全文
摘要:bzoj1649[Usaco2006 Dec]Cow Roller Coaster 题意: n条钢轨,第i条起点pi,长度为wi,价钱ci,有趣度fi,要求从0修到l使得总价钱不超过b的前提下有趣度和最大。n≤10000,l≤1000,b≤1000。 题解: 首先把钢轨组织成链表。接着dp:f[i]
阅读全文
摘要:bzoj1635[Usaco2007 Jan]Tallest Cow 最高的牛 题意: n头牛,知道所有牛身高不超过h,给出r条关系(a,b)表示第a+1到b-1头牛都比a,b牛矮,且a牛不必b牛高,问每头牛的最高身高。n≤10000,r≤10000。 题解: 那个“a牛不必比b牛高”的条件没什么用
阅读全文
摘要:bzoj1589[Usaco2008 Dec]Trick or Treat on the Farm 采集糖果 题意: n个节点,每个节点有一个后继节点,问从每个节点出发能到多少个没去过的节点。n≤100000。 题解: 因为每个节点只有一个后继节点,所有tarjan缩点后就会变成一堆链,对每条链df
阅读全文
摘要:bzoj1672[Usaco2005 Dec]Cleaning Shifts 清理牛棚 题意: n头奶牛,第i头愿意在时刻si到ti打扫牛棚,费用为ci,求打扫S到T时刻的最小费用。n≤10000,时刻≤90000。 题解: 最短路,si和ti+1连边,长度为ci,以及所有时刻ai和ai-1连边,长
阅读全文
摘要:bzoj1691[Usaco2007 Dec]挑剔的美食家 题意: m种牧草,每种都有一个价钱和鲜度,n头奶牛,每头都有一个牧草价钱下限和牧草鲜度上限,要求从每头奶牛从m种牧草中选取一种符合要求的牧草,使得总价钱最小,两头奶牛选的种类不能相同。n,m≤100000。 题解: 贪心。先将所有牧草按鲜度
阅读全文
摘要:bzoj1637[Usaco2007 Mar]Balanced Lineup 题意: n头牛,第i头牛位置为ai,种族为bi(只能为0,1),求一个区间(按数轴位置),使得区间两端牛距离差最大且两种种族牛数相等。n≤50000。 题解: 按位置排序。然后利用前缀和sum[i][0]-sum[j-1]
阅读全文
摘要:bzoj1486[HNOI2009]最小圈 题意: 定义图中一个环的平均值为环上边权和除以(浮点除法)边数,求一个图中的最小环平均值,保留8位。n≤3000,m≤10000,有负权边。 题解: 这就是比较明显的01分数规划了,见bzoj1690。同时根据题解二分60次就行了。 代码: 2016092
阅读全文
摘要:bzoj1690[Usaco2007 Dec]奶牛的旅行 题意: n点m边有向图,点有点权,边有边权,奶牛想要从某点出发,走一些路使得经过的点权和除以(浮点数除法)边权和最大,求这个小数(保留两位)。n≤1000,m=5000。 题解: 01分数规划!太神了,然而我看不懂证明,所以直接给出算法。假设
阅读全文
摘要:bzoj1592[Usaco2008 Feb]Making the Grade 路面修整 题意: 某条路n段,每段高度hi,现在要将路修成不上升或不下降序列,问最小费用,把高度a修成b费用为|a-b|。n≤2000。 题解: 有个结论,每段路修成的高度必定是原序列中已经出现过的高度(因为修好的路是非
阅读全文
摘要:bzoj1827[Usaco2010 Mar]gather 奶牛大集会 题意: n点树(有边权),找出一个点,使得其它所有点到它的距离和最小。n≤100000。 题解: 类似bzoj1131,但维护深度和改为维护距离和。 代码: 1 #include <cstdio> 2 #include <cst
阅读全文
摘要:bzoj1708[Usaco2007 Oct]Money奶牛的硬币 题意: n种硬币面值,求凑m元多少种方案。n≤25,m≤10000。 题解: 完全背包。f[0][0]=1,f[i][j]=sum(f[i-1][j],f[i][j-a[k]])。 代码: 1 #include <cstdio> 2
阅读全文
摘要:bzoj1682[Usaco2005 Mar]Out of Hay 干草危机 题意: 给个图,每个节点都和1联通,奶牛要从1到每个节点(可以走回头路),希望经过的最长边最短。 题解: 求最小生成树即可。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #
阅读全文
摘要:bzoj1108[POI2007]天然气管道Gaz 题意: n个钻井,n个站,要求两两配对,但站必须在钻井的右下方。配一对的费用为两点的曼哈顿距离,求最小总费用。n≤50000。 题解: 发现满足条件站必须在钻井的右下方的所有配对方案的总费用是相同的,所以直接用站横坐标的和减钻井横坐标的和加上钻井纵
阅读全文
摘要:bzoj3709[PA2014]Bohater 题意: n只怪物,打死第i只要耗ai血,打死后补bi血。如果你血≤0就会死。你现在有z血,问怎样的顺序可以打死所有怪。n≤100000。 题解: 先打bi大于ai的怪攒血,此时按ai升序排序。因为先杀耗血少的再杀耗血多的,则为下一步提供了更高的可能性。
阅读全文
摘要:bzoj1131[POI2008]Sta 题意: 给出一个n个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大。n≤1000000。 题解: 两次dfs。第一次dfs维护子树的大小、节点的深度、以子树的根为根的子树深度和。第二次dfs维护以某节点为根除了以1为根时它的子树之外的所有节点
阅读全文
摘要:bzoj1529[POI2005]ska Piggy banks 题意: n个存钱罐,每个罐子的钥匙都在另外某个存钱罐里,问最少打破几个存钱罐,才能得到所有存钱罐里的钱。n≤1000000。 题解: 因为每个存钱罐只有一把钥匙,所以整幅图都是由一些互不连接的连着一个环的链组成,而打破存钱罐的个数正是
阅读全文
摘要:bzoj1627[Usaco2007 Dec]穿越泥地 题意: 网格中有一些障碍物,求从起点到终点最小步数。-500≤坐标≤500 题解: bfs。所有坐标均加上500,就可以只考虑第一象限了。 代码: 20160919
阅读全文
摘要:bzoj1651[Usaco2006 Feb]Stall Reservations 专用牛棚 题意: 有N头牛,每头牛有个喝水时间段,这段时间它将专用一个棚。现在给出每头牛的喝水时间段,问至少要多少个棚才能满足它们的要求。n≤50000,时刻≤1000000。 题解: 时间段左端点对应的sum元素+
阅读全文
摘要:bzoj2023[Usaco2005 Nov]Ant Counting 数蚂蚁&&bzoj1630[Usaco2007 Demo]Ant Counting 题意: t个族群,每个族群有ni只蚂蚁,同族群蚂蚁没有区别。问从所有蚂蚁中选出s到b只蚂蚁有多少方案。t≤1000,ni≤100。 题解: dp
阅读全文
摘要:bzoj1618[Usaco2008 Nov]Buying Hay 购买干草 题意: n种物品,每种无限个,重量为pi,费用为ci,要求总重量超过h的前提费用最小。求最小费用。n≤100,m≤50000。 题解: dp。f[i][j]=min(f[i-1][j],f[i][j-p[i]]+c[i])
阅读全文
摘要:bzoj1622[Usaco2008 Open]Word Power 名字的能量 题意: n个名字,m个能量字符串,每个名字的能量为其中含有能量字符串的种数(含有指有一个不连续子串与能量字符串相等),问每个名字的能量。n≤1000,m≤100。 题解: 暴力可过(似乎数据弱)。 代码: 201609
阅读全文
摘要:bzoj1572[Usaco2009 Open]工作安排Job 题意: n个工作,每个需要的时间都为1,最晚完成时间为ti,价值为vi,问最多能得到的价值。n≤100000。 题解: 先把所有工作按最晚开始时间排序,然后把能做的工作先做掉(如果前面的工作时间有空隙可以填上),处理剩下的工作时,比较之
阅读全文
摘要:bzoj1232[Usaco2008Nov]安慰奶牛cheer 题意: 给出n个节点的带权图,第i个节点ci。现在你要在这个图中选出一棵树和一个起点,然后你要从起点出发到达所有的节点(不能跳点)再回到起点,经过边的时间为边权,每经过一个点就要花等同于点权的时间(即使这个点已经过)。问如何使时间最短。
阅读全文
摘要:bzoj1621[Usaco2008 Open]Roads Around The Farm分岔路口 题意: n头牛在路上走,每当它们走到岔路,如果这些牛可以分为数量相差刚好为k的两群,那么它们就会分成这样的两群往前走,否则就会停下来吃草。问最后有多少群在吃草。n≤10^9,k≤1000。 题解: 暴
阅读全文
摘要:bzoj1724[Usaco2006 Nov]Fence Repair 切割木板 题意: FJ需要n块木板,第i块木板长度为ai。但他只有一块长度为sigma(i,1,n)ai的木板。每切一次的代价为所切割木板的长度,问最小代价。n≤20000 题解: 等价于合并石子(把单块木板的长度看作石子)。故
阅读全文
摘要:bzoj1611[Usaco2008 Feb]Meteor Shower流星雨 题意: 给个网格,有m个流星,每个流星在ti时刻打在(xi,yi)的格子上,并把该格子和相邻的格子打烂。有个人从(0,0)出发,问最短逃离时间(格子被打烂之后就不能走)。 题解: bfs一发,如果某格子被打烂的时间小于到
阅读全文
摘要:bzoj1603[Usaco2008 Oct]打谷机 题意: 给个树,每个边都有边权0和1。0表示两个端点同色,1表示两个端点不同色。点1为黑色,问点n哪种颜色(颜色只有两种:黑和白)。树大小≤1000。 题解: dfs一发。 代码: 20160917
阅读全文
摘要:bzoj1599[Usaco2008 Oct]笨重的石子 题意: 三个不同的骰子,分别有S1,S2,S3个面。求出出现几率最大的和是多少。如果有很多种和出现的几率相同,那么就输出小的那一个。2≤S1≤20,2≤S2≤20,2≤S3≤40。 题解: 枚举。 代码: 20160917
阅读全文
摘要:bzoj1230[Usaco2008 Nov]lites 开关灯 题意: 一个01序列,初始全部元素为0,两种操作:l到r全部元素取反、询问l到r1的个数。序列长度≤100000,询问个数≤100000。 题解: 线段树维护区间和,区间修改就让区间和变为区间长度减原区间和。 代码: 20160917
阅读全文
摘要:bzoj4002[JLOI2015]有意义的字符串 题意: 给出b,d,n。求 题解: 蒟蒻太弱只能引用神犇的题解 构造数列an=b∗an−1+d−b2/4*an−2 ,其中a0=2,a1=b,然后我们求出这个数列的通项公式,得到an=(b+d√2)n+(b−d√2)n 即(b+d√2)n=an−(
阅读全文
摘要:bzoj1613[Usaco2007 Jan]Running贝茜的晨练计划 题意: 贝茜进行N分钟的晨跑。在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息,如果贝茜选择在第i分钟内跑步,她可以在这一分钟内跑Di米,并且她的疲劳度会增加 1。贝茜的疲劳度上限为M。如果贝茜选择休息,那么她的疲劳度就
阅读全文
摘要:bzoj1602[Usaco2008 Oct]牧场行走 题意: n点树(有边权),q个询问求两个点之间的最短距离。n,q≤1000。 题解: 倍增求lca。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #
阅读全文
摘要:bzoj1715[Usaco2006 Dec]Wormholes 虫洞 题意: 判一个图是否有负环。点数≤500,边数≤3000。(我看不懂原题,后来看了题解,就直接这样说了) 题解: SPFA中如果一个点被更新了n次以上,那么这个图中存在负环。 代码: 20160912
阅读全文
摘要:bzoj2442[Usaco2011 Open]修剪草坪 题意: 从一个序列中选n个数,要求这些数中不能有超过k个数在原序列中位置是连续的。求最大的取数之和。n≤100000。 题解: f[i]表示不选i,1到i-1可以得到的最大取数之和。则f[i]=max(f[j]+sum[i-1]-sum[j]
阅读全文
摘要:bzoj3374[Usaco2004 Mar]Special Serial Numbers 特殊编号 题意: 求比一个数大的最小的一半以上的数位相同的数。数位数≤100。 题解: 模拟题。从低位枚举到高位,对于每一位枚举比原数该位大的数,同时枚举这一位之后要由0和哪一个数组成,最后得到一个最小的数输
阅读全文
摘要:bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四 题意: 平面直角坐标系有n个点,从(0,0)出发,从一个点上可以跳到所有与它横纵坐标距离都≤2的点上,求最少步数使得纵坐标为T。 题解: 先用set存下所有的点。在做dp的时候把所有横纵坐标与当前节点距离≤2的节
阅读全文
摘要:bzoj3382[Usaco2004 Open]Cave Cows 3 洞穴里的牛之三 题意: n个点,求最远曼哈顿距离。n≤50000。 题解: 曼哈顿距离转切比雪夫距离(点(x,y)变为点(x+y,x-y)),然后输出最大横坐标-最小横坐标与最大纵坐标-最小纵坐标的较大值即可。 代码: 2016
阅读全文
摘要:bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 题意: RMQ问题。序列长度≤25000,问题数≤25000。 题解: 倍增。 代码: 20160912
阅读全文
摘要:bzoj3380[Usaco2004 Open]Cave Cows 1 洞穴里的牛之一 题意: 给一个无向图,每一条边都有一个阈值,有一些点有草。牛从点1出发,每当它到达有草的点可以选择吃或不吃,如果吃的话体重加1。对于边如果它的阈值小于牛的体重,则此边不可通过。求牛走一圈回到点1的最大体重。有草节
阅读全文
摘要:bzoj3375[Usaco2004 Mar]Paranoid Cows 发疯的奶牛 题意: 依次给出n只奶牛的产奶时间段,求最大的k使得前k只奶牛不存在一个时间段被另一个时间段完全覆盖的情况。n≤100000。 题解: 设当前在处理第i只奶牛,前i-1只奶牛都合法。那么如果前i-1只奶牛中时间段左
阅读全文
摘要:bzoj3538[Usaco2014 Open]Dueling GPS 题意: 给你一个N个点的有向图,设定初始位置为1,结束位置为n。有两个GPS定位系统,分别认为经过边i的时间为Pi,和Qi.每走一条边的时候,如果一个系统认为走的这条边不是它认为的最短路,就会受到警告一次。如果走的这条边都不在两
阅读全文
摘要:bzoj3891[Usaco2014 Dec]Piggy Back 题意: 给定一个N个点M条边的无向图,其中Bessie在1号点,Elsie在2号点,它们的目的地为N号点。Bessie每经过一条边需要消耗B点能量,Elsie每经过一条边需要消耗E点能量。当它们相遇时,它们可以一起行走,此时它们每经
阅读全文
摘要:bzoj3892[Usaco2014 Dec]Marathon 题意: 在二维平面上有N个点,从(x1,y1)到(x2,y2)的代价为|x1-x2|+|y1-y2|。求从1号点出发,按从1到N的顺序依次到达每个点的最小总代价。你有K次机会可以跳过某个点,不允许跳过1号点或N号点。n≤500。 题解:
阅读全文
摘要:bzoj3893[Usaco2014 Dec]Cow Jog 题意: 在一条无限长的跑道上有N头牛,每头牛有自己的初始位置及奔跑的速度。牛之间不能互相穿透。当一只牛追上另一只牛时,它不得不慢下来,成为一个群体。求T分钟后一共有几个群体。n≤100000,t≤1000000000 题解: 如果慢车经过
阅读全文
摘要:bzoj3524[Poi2014]Couriers 题意: 给一个长度为n的序列a。1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。n,m≤500000。 题解: 先建主席树,之后在查找时,只走s
阅读全文
摘要:bzoj4390[Usaco2015 dec]Max Flow 题意: 给定一棵有N个点的树,所有节点的权值都为0。有K次操作,每次指定两个点s,t,将s到t路径上所有点的权值都加一。请输出K次操作完毕后权值最大的那个点的权值。n≤50000,k≤100000。 题解: 先链剖把树变为链。然后用数组
阅读全文
摘要:bzoj4393[Usaco2015 Dec]Fruit Feast 题意: 奶牛一开始饱胀值为0,上限为T。每个柠檬派提供a点饱胀值,每个橘子派提供b点饱胀值,有一次机会喝水,使得饱胀值div2。柠檬派和橘子派有无限个,求最大饱胀值。T≤5000000。 题解: dfs。f[i][1/0]表示当前
阅读全文
摘要:bzoj4397[Usaco2015 dec]Breed Counting 题意: 给定一个长度为N的序列,每个位置上的数只可能是1,2,3中的一种。有Q次询问,每次给定两个数a,b,请分别输出区间[a,b]里数字1,2,3的个数。n≤100000,q≤100000。 题解: 裸前缀和。 代码: 2
阅读全文
摘要:bzoj4396[Usaco2015 dec]High Card Wins 题意: 一共有2n张牌,Alice有n张,Bob有n张,每一局点数大的赢。知道Bob的出牌顺序,求Alice最多能赢几局。n≤50000。 题解: 贪心。将Alice和Bob的牌按点数大小排序,然后如果Alice当前牌能赢B
阅读全文
摘要:bzoj4395[Usaco2015 dec]Switching on the Lights 题意: n*n个房间,奶牛初始在(1,1),且只能在亮的房间里活动。每当奶牛经过一个房间,就可以打开这个房间里控制其它房间灯的开关。问奶牛最多可点亮多少个房间。n≤100。 题解: 因为只要一个房间灯亮了,
阅读全文
摘要:bzoj1725[Usaco2006 Nov]Corn Fields牧场的安排 题意: n*m的土地,有的土地不能种草。求有多少种种草方案使得没有两块草地相邻。n,m≤12。 题解: 先预处理出存在草地左右相邻的不合法状态,然后状压dp。f[i][S]表示当前处理第i行上一行状态为S,则f[i][S
阅读全文
摘要:bzoj1231[Usaco2008 Nov]mixup2 混乱的奶牛 题意: n头奶牛,每头有一个编号,求有多少种排列顺序使得相邻两头奶牛的编号差不超过k。n≤16。 题解: 状压dp。f[i][S]表示已选状态为S,上一个选的是i,满足要求的方案数,则f[i][S]=sum(f[j][S|j])
阅读全文
摘要:bzoj3396[Usaco2009 Jan]Total flow 水流 题意: 求无环图的最大流。边数≤700。 题解: 管它有没有环。注意本题的节点标号既有大写字母,也有小写字母。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <
阅读全文
摘要:bzoj3312[Usaco2013 Nov]No Change 题意: K个硬币,要按顺序买N个物品。当选定买的东西物品序列后,付出钱后,货主是不会找零钱的。现希望通过改变硬币的顺序使买完所需要的东西后,留下的钱越多越好,如果不能完成购买任务,输出-1。k≤16,n≤100000。 题解: 状压d
阅读全文
摘要:bzoj2060[Usaco2010 Nov]Visiting Cows 拜访奶牛 题意: 给棵树,要求如果取了某个节点就不能取与它相邻的节点,问最多可取几个节点。树的大小≤50000。 题解: 树形dp。令f[i][0]不取i节点,f[i][1]为取i节点,则方程为f[i][0]=sum(max(
阅读全文
摘要:bzoj1726[Usaco2006 Nov]Roadblocks第二短路 题意: 求无向图点1到n的次短路(长度严格小于最短路)。点数≤5000,边数≤100000。 题解: 求源点为1的单源最短路和源点为n的单源最短路。然后枚举每个点,如果某点到点1和点n的距离和不等于1到n的最短路距离且最小则
阅读全文
摘要:bzoj3781小B的询问 题意: 给定一个长度为n的序列,序列里的数≤k,m个询问l,r:求sigma(i,1,k)c[i]^2,c[i]为i在[l,r]的出现次数。n,m,k≤50000。 题解: 莫队算法直接上。 代码: 20160906
阅读全文
摘要:bzoj2850巧克力王国 题意: n个巧克力,每个有牛奶含量,可可含量和美味值。m个人,每个有三个权值a,b,c,如果某个巧克力的牛奶含量*a+可可含量*b<c就可以接受。问每个人能接受的巧克力美味值之和。n,m≤50000。 题解: 对所有巧克力建kd树,树上节点除了维护子树横纵坐标最大最小值还
阅读全文
摘要:bzoj2648SJY摆棋子 bzoj2716[Violet 3]天使玩偶 题意: 棋盘上有n个棋子,现在有m个操作,一种是加棋子,一种是查询离某个点最近的棋子。n,m≤500000。 题解: 先将已有的棋子建kd树,然后加棋子就直接向kd树插入节点。因为本题数据弱,所以直接插节点不会T,如果是一些
阅读全文
摘要:bzoj1941[Sdoi2010]Hide and Seek 题意: 平面上n个点,求一个点使得离它最近的点和最远的点离它的曼哈顿距离差最小(若选的点处已有点,则改点不算)。n≤500000 题解: 第一次写kd树,感觉眼睛又瞎了(玄学复杂度)。首先先把所有点横坐标和纵坐标轮流为关键字排序建一个平
阅读全文
摘要:bzoj2292【POJ Challenge 】永远挑战 题意: 有向图,每条边长度为1或2,求1到n最短路。点数≤100000,边数≤1000000。 题解: 有人说spfa会T,所以我用了dijkstra。不过这不是正解,神犇ZS告诉我正解应该是把所有边长度为2的边拆成两条,orz…… 代码:
阅读全文
摘要:bzoj2295【POJ Challenge】我爱你啊 题意: 求一个字符串中有多少个"luvletter"(不包括引号)。字符串长度≤100000。 题解: 连kmp都不用…… 代码: 20160905
阅读全文
摘要:bzoj2296【POJ Challenge】随机种子 题意: 求一个≤10^16的数,使这个数包含123456789且为x的倍数。x≤1000000。 题解: 16-6刚好等于10。因此我们可以直接让所求的数的前10位为1234567890,则只要求出1234567890000000加上什么≤10
阅读全文
摘要:bzoj2287【POJ Challenge】消失之物 题意: 给出n,m,求用除了第i(1≤i≤n)个之外的物品填满容量为j(1≤j≤m)的背包的方法数。n,m≤2000。 题解: 令f[n][j]为所有物品可用填满j的方案数,F[i][j]为题目所求,则当j<a[i]时F[i][j]=f[n][
阅读全文
摘要:bzoj2288【POJ Challenge】生日礼物 题意: 给一个序列,求不超过m个连续的部分,使元素和最大。序列大小≤100000 题解: 先把连续的正数和负数合并起来,接着如果正数个数小于m则全选,否则需要确定去掉那个正数或合并哪个正数。初始ans设为所有正数和,将所有的数按绝对值大小放入堆
阅读全文
摘要:bzoj1150[CTSC2007]数据备份Backup 题意: n个地方,在其中找k对地方,每个地方只属于一对。定义一对的费用为两个地方的距离,求最小费用总和。 题解: 把所有相邻地方距离放入一个集合中,每次取出最小的那个距离x,然后将相邻两边的距离l,r合并成l+r-x。如果这个x缺一边相邻,则
阅读全文
摘要:bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和。集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数。每次读入一个元素,则bs^=bs<<a[i],意思是将之前所有的子集和加上这个新的元素,然后与已有的子集和异或
阅读全文
摘要:bzoj1782[Usaco2010 Feb]slowdown 慢慢游 题意: n只奶牛各有一个目的地。它们按顺序从根节点到达自己的目的地,如果当前奶牛经过了其它已经到达的奶牛的目的地,就要放慢一次脚步。求每只奶牛要放慢多少次脚步。n≤100000。 题解: 对树dfs,求每个节点的进栈时间和出栈时
阅读全文
摘要:bzoj2789[Poi2012]Letters 题意: 给出两个长度相同且由大写英文字母组成的字符串A、B,保证A和B中每种字母出现的次数相同。现在每次可以交换A中相邻两个字符,求最少需要交换多少次可以使得A变成B。长度≤1000000 题解: 把A串中所有字母替换成该字母在B串中的位置,如果有相
阅读全文
摘要:bzoj3940[Usaco2015 Feb]Censoring 题意: 有一个S串和一大堆T串,不断地在S串里找最早出现的T串,然后将其删除。S串≤100000,T串总长度≤100000。 题解: 对所有T串建AC自动机,然后同bzoj3942。注意,本题的AC自动机必须利用所有fail函数建成一
阅读全文
摘要:bzoj1754[Usaco2005 qua]Bull Math 题意: 求两个正整数的积,每个数≤40位。 题解: 为什么C++不能支持高精度呢…… 代码: 20160831
阅读全文
摘要:bzoj1015[JSOI2008]星球大战starwar 题意: 给个无向图和一个删点序列。求每次删完一个点后(将该点所连所有边也删掉)剩余联通块个数。点数≤400000。 题解: 离线,先将所有点删掉,然后将剩余的边两端点合并入一个联通块,接着按删点序列倒序加点,将删掉的边加下去,把加入的边两端
阅读全文
摘要:bzoj1116[POI2008]CLO 题意: n点m边双向图,问能否将一些边变成单向使得每个点只有一个入度。n≤100000,m≤200000。 题解: 结论:当图中每个点都与至少一个环相连时满足条件。故用并查集不断加边,如果两个顶点已在一个集合中,则将该集合根节点打标记,如果不在,若其中一个顶
阅读全文
摘要:bzoj1370[Baltic2003]Gang团伙 题意: n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1、 我朋友的朋友是我的朋友; 2、 我敌人的敌人是我的朋友; 所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,求这个城市最多可能有多少
阅读全文
摘要:bzoj3791作业 题意: 对一个01序列进行染色,每次能将一个区间染上色(可覆盖之前染的),共能染k次,求最大正确染色个数。n≤100000,m≤50。 题解: 结论:染k次最多能把序列分成2*k-1段。故dp即可: f[i][j][0]=max(f[i+1][j+1][1]+a[i]==1,f
阅读全文
摘要:bzoj2017[Usaco2009 Nov]硬币游戏 题意: 初始时,一个有N枚硬币的堆栈放在地上,每枚硬币都有一个价值。开始玩游戏时,第一个玩家可以从堆顶拿走一枚或两枚硬币。之后每一轮中,当前的玩家至少拿走一枚硬币,至多拿走对手上一次所拿硬币数量的两倍。当没有硬币可拿时,游戏结束。 两个玩家都希
阅读全文
摘要:bzoj3714[PA2014]Kuglarz 题意: n个杯子排成一行,花费c_ij元,可以知道杯子i,i+1,…,j底下藏有球的总数的奇偶性。求问至少需要花费多少元才能保证猜出哪些杯子底下藏着球。 题解: 令杯子1..i的和为sum[i],那么当知道sum[i]和sum[i-1]即可推算出i下是
阅读全文
摘要:bzoj2096[Poi2010]Pilots 题意: 给一个序列和一个最大值,要求找一个最长连续子串,使里面任意两个数相差不超过这个最大值。序列大小≤3000000 题解: 用两个单调队列,分别维护当前区间的最大值和最小值,然后用双指针法。 代码: 20160829
阅读全文
摘要:bzoj2348[Baltic 2011]Plagiarism 题意: n个数,如果其中两个数fi≤fj且fi≥0.9*fj,则它们要被比较。求多少对数要被比较。n≤100000。 题解: 排序然后双指针法。 代码: 20160829
阅读全文
摘要:bzoj3401[Usaco2009 Mar]Look Up 仰望 题意: 约翰的N头奶牛站成一排,奶牛i的身高是Hi。对于奶牛i,如果奶牛j满足i<j且Hi<Hj,我们可以说奶牛i可以仰望奶牛j。求出每只奶牛离她最近的仰望对象。n≤100000. 题解: 用一个单调栈维护即可。 代码: 20160
阅读全文
摘要:bzoj2021[Usaco2010 Jan]Cheese Towers 题意: John要建一个奶酪塔,高度最大为T。他有N种奶酪,每种无限个,第i种高度为Hi(一定是5的倍数),价值为Vi。一块高度>=K的奶酪被称为大奶酪,一个奶酪如果在它上方有大奶酪(多块只算一次),它的高度就会变成原来的4/
阅读全文
摘要:bzoj3767A+B Problem加强版 题意: 求两个数的和,每个数绝对值≤10^(10^7)。 题解: 又用Python水过了…… 代码: 20160828
阅读全文