bzoj
qq_20340417
这个作者很懒,什么都没留下…
展开
-
[bzoj1003] 物流运输
题意(原题): 一个图,每天都要设计一条从起点到终点的路线,当天费用就是路径长度。如果今天路径和昨天不一样,就要花费额外费用。某些点在某些天不可用。 思路: 最短路+简单的dp。 代码: #include #include #include #define LL long long using namespace std; struct node { int next,y,c; }原创 2018-01-21 11:30:11 · 181 阅读 · 0 评论 -
[bzoj1001] 狼抓兔子
题意(原题): 给出一个网格(有斜向边),左上角为源点,右下角为汇点,每条边有流量,请问截留所有流量的代价为多少(截留一条边的代价与该边实际使用最大流量相等(应该没理解错))。 思路: 最大流:每条边每单位时间允许经过一定流量,源点流量无限,则为每单位时间汇点所能接受的最大流量。 最小割定理:把一个图源点汇点分开,代价等于该图最大流。 因此我们使用网络流解决这一问题。我使用的是dinic模版(貌似有原创 2017-12-29 15:36:39 · 198 阅读 · 0 评论 -
[bzoj1002] 轮状病毒
题意(原题): 给出一个环,上有n个点,每相邻两个点都连边,每个点与环中央一个点也有连边。求此图生成树个数。 思路: 关于图的生成树计数问题,我们可以使用Matrix-Tree定理。 阮行止的博文 我的博文 但是据说这么做会被卡精度? 那么暴力打表找规律。 1 5 16 45 121 320 841… 可以看出: 若n为奇数位,则f(n)=n^2 若n为偶数位,则f(n)=n^2*5原创 2017-12-29 16:02:45 · 733 阅读 · 0 评论 -
[bzoj3343] 教主的魔法
题意(原题): 给个序列,支持两种操作:区间加法,区间询问大于某个数的元素有多少个。n<=1000000,q<=3000。 思路: Pro2 代码: #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm...原创 2018-03-24 16:34:28 · 176 阅读 · 0 评论 -
[bzoj2453] 维护队列
题意(原题): 给出一组数列,有两种操作:单点改值;询问区间内有多少不同的值。n,m<=10000。修改少于1000次。 对了这题和2120一模一样。 思路: a[i]为i的值,b[i]为在i前面且最靠近i的且值等于a[i]的元素,,c[i]为b[i]在每个区块内排序后的值。 每次修改: 更新i后面的第一个值等于a[i]的元素的b[j],b[j]=b[i](这时a[i]还是原来的值)。 更...原创 2018-03-26 11:08:27 · 240 阅读 · 0 评论 -
[bzoj2002] D飞绵羊
题意(原题): 一只绵羊,在i会被D飞到i+a[i]。操作有询问从i出发被D多少次以后出了数列,或者改a[i]。n<=200000,m<=100000。 思路: 分块,每个块大小sqrt(n)+1。jump[i]表示从i开始跳,直到跳出i所在的块后的位置。jumpNum[i]表示跳出i所在的块要跳多少次。对于询问就每次加上jumpNum[i]然后跳到jump[i],直到跳出去;对于修...原创 2018-03-22 09:18:30 · 104 阅读 · 0 评论