Solution
莫得简介?
SharpnessV
这个作者很懒,什么都没留下…
展开
-
BZOJ1001 狼抓兔子 题解
裸的最小割,转化成最大流即可。#include <bits/stdc++.h>int n,m;int S,T;int mincost;int head[6001000],tot=1;int cur[6001000];int deep[1001000];int vis[1001000];std::queue<int>q;struct qwq{ int t...原创 2020-04-27 20:45:05 · 241 阅读 · 0 评论 -
[NOI2017]游戏 题解
考虑把有111种车不适合跑这样的条件转化一下111种不适合跑⟶\longrightarrow⟶222种适合跑,并且只能选一种车去跑可以看到这就是一个2−SAT2-SAT2−SAT模板了。考虑一下限制。对于每场比赛拆成222个点,xxx以及x′x'x′,表示这场比赛使用了哪辆适合的车若iii图选择hih_ihi,jjj图选择hjh_jhj:如果hih_ihi不适合在iii用,直接略...原创 2020-04-27 14:26:50 · 204 阅读 · 0 评论 -
[JSOI2011]分特产 Solution
考虑至少有xxx个人没分到特产的方案:那就是把a[i]a[i]a[i]个特产分给n−xn-xn−x个人,方案数就是Cn−x−1n−x+a[i]−1C_{n-x-1}^{n-x+a[i]-1}Cn−x−1n−x+a[i]−1。选定这xxx个人的方案数是CinC_{i}^{n}Cin。那么总方案数就是这两个东西相乘。那么就可以容斥去求解了。code:code:code:#include &l...原创 2020-03-11 16:24:34 · 145 阅读 · 0 评论 -
[网络流二十四题]深海机器人问题 Solution
给一张网格图,图上有一些机器人,它们要到指定的地方,它们都只能往东和北移动,每条边都有价值,但是只能计算一次,问可以达到的最大价值。因为只能计算一次,所以可以这样建边:每个点往这个点北方的那个点连两条边,一条流量为111,费用为价值,另一条流量∞\infty∞,费用为000。之后:让源点和机器人出发的地方连边,流量为机器人个数,费用为000。机器人停下的地方向汇点连边,流量为机器人...原创 2020-01-20 10:41:15 · 251 阅读 · 0 评论 -
[网络流二十四题]最长不下降子序列 Solution
求最长不下降子序列,每个数只能取一次时最多能拼出多少最长不下降子序列,第111个数和第nnn个数能用无限次其它的只能用一次时最多能拼出多少最长不下降子序列。第一问就略过吧。因为每个数只能用一次,所以可以把点拆开,设原点为iii,那么现在拆出iai_aia和ibi_bib。考虑到最长上升子序列长度固定,我们又算出了f[i]f[i]f[i],所以我们可以根据f[i]f[i]f[i]来分层。...原创 2020-01-19 13:57:54 · 159 阅读 · 0 评论 -
[USACO07OPEN]吃饭Dining Solution
有FFF种食物和DDD种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料。现在有nnn头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。(1≤f≤100,1≤d≤100,1≤n≤100)(1\leq f\leq 100,1\leq d\leq 100, 1\leq n \leq 100)(1≤f≤100,1≤d≤100,1≤...原创 2020-01-16 21:38:05 · 133 阅读 · 0 评论 -
[HEOI2016/TJOI2016]游戏 Solution
给一个地图,每个位置可以是空地,软石头和硬石头,炸弹只能放空地上,能炸穿无限个软石头但是不能炸穿硬石头,问最多放多少炸弹。考虑一个炸弹能影响的范围,是一个区间,那么我们要做的就是把这样的区间提取出来,这个不难做到,对于一个炸弹,把它对应的横向联系的区间和纵向联系的区间连接起来就可以了。code:code:code:#include <bits/stdc++.h>int n,m;...原创 2020-01-15 10:28:47 · 103 阅读 · 0 评论 -
[SCOI2015]小凸玩矩阵 Solution
一个n×m(n≤m)n\times m(n\leq m)n×m(n≤m)的矩阵,现在要从中取出nnn个数字,满足任意两个数字不在同一行或同一列,请问取出来的nnn个数字的第kkk大最小是多少。首先考虑二分,转换为判定问题。只要能取出n−k+1n-k+1n−k+1个小于等于它的数,那么它就可以作为第kkk大。下面就是建边方法,很显然首先把源点和所有行连起来把所有列和汇点连起来对于矩阵中...原创 2020-01-15 09:30:57 · 127 阅读 · 0 评论 -
[WC2007]剪刀石头布 Solution
题意:给一张竞赛图,图中部分边的方向已经确定,现在要给那些不确定的边定向,求图中最多能有多少三元环。显然三元环不方便直接求。考虑如何反着求。答案最多是n×(n−1)×(n−2)6\dfrac{n\times (n-1)\times (n-2)}{6}6n×(n−1)×(n−2)。那么对于一个人,设他获胜的场数为xxx,那么整个三元环的数量就会减少x×(x−1)2\dfrac{x\times...原创 2019-12-30 16:22:39 · 104 阅读 · 0 评论 -
[JSOI2009]球队收益 Solution
题意:有nnn个球队,如果一支球队胜场为xix_ixi,负场为yiy_iyi,那么他们的奖金即为Ci×xi2+Di×yi2C_i\times x_i^2+D_i\times y_i^2Ci×xi2+Di×yi2。现在知道了这些球队现在的胜场和负场,以及一些不确定的比赛,问总奖金最少是多少。那么考虑一个球队多赢了一把奖金的变化。先假设这个球队输了所有能输的比赛,那么现在他们的胜场是x...原创 2020-01-09 13:04:03 · 129 阅读 · 0 评论 -
[SCOI2007]修车 & [NOI2012]美食节 Solution
题意:有nnn辆车待修,有mmm个修车师傅,他们修相同的车所需的时间可能不同,问修车师傅修完所有车的总时间。可以把修车师傅分成nnn个点,这样会得到一个m×nm\times nm×n的点阵,(i,j)(i,j)(i,j)这个点表示师傅iii倒数第jjj辆修的车是啥。倒过来设置是因为计算贡献方便,倒数第jjj辆修的车会让jjj后面的车都等上更长的时间。设修理这辆车的时间为ttt,这条边的权值就是...原创 2020-01-06 09:05:04 · 106 阅读 · 0 评论 -
陌上花开 Solution
题意:有nnn个元素,第iii个元素有ai,bi,cia_i,b_i,c_iai,bi,ci三个属性,设fif_ifi表示满足ai≥aj,bi≥bj,ci≥cja_i\geq a_j,b_i\geq b_j,c_i\geq c_jai≥aj,bi≥bj,ci≥cj的jjj的数量。对于d∈[0,n)d\in [0, n)d∈[0,n),求fi=df_i=dfi=d的数量。考虑...原创 2019-12-25 21:29:26 · 108 阅读 · 0 评论 -
[ZJOI2013]K大数查询 Solution
题意:给nnn个集合,最开始都为空集。有kkk个操作,操作111:每次在l−rl-rl−r这些集合里面都加入一个数;操作222:查询l−rl-rl−r这些集合的并集中的xxx大的值。考虑整体二分。把所有操作都离线下来。对于二分的答案midmidmid,检索所有的操作,如果是添加操作,如果这次加入的值大于midmidmid,...原创 2019-12-12 12:57:13 · 131 阅读 · 0 评论 -
[POI2011]MET-Meteors Solution
题意:有nnn个国家,有mmm块地,每块地属于一个国家,每个国家都有自己需要的流星数量,现在有kkk波流星雨,每次会在一个区间里面每块地上落下v[i]v[i]v[i]个流星,问每个国家收集完流星的最少时间,或者这是不可能的。考虑整体二分。区间加的过程可以用树状数组维护,二分时间,把小于时间的流星雨贡献全部加上,扫一遍每块地,看那个国家能否完成任务,能的放左边递归下去,否则放右边。需要注意的是...原创 2019-12-05 12:26:10 · 124 阅读 · 0 评论 -
[国家集训队]矩阵乘法 Solution
题意:给一个矩阵,每次询问一个子矩阵里面的第kkk小的数。如果它只有一个询问,直接排个序就行,考虑如何用树状数组来操作。也就是树状数组如何查询排名。具体实现就是:每次二分一个值checkcheckcheck,然后把小于该值的点全部加入二位树状数组里,查这个矩形的时候直接判一下前缀和即可。接下来考虑如何把如上方法转移到多组询问里。显然可以整体二分。注意二分的是位置,返回排完序的元素里面这个位...原创 2019-12-02 13:19:58 · 151 阅读 · 0 评论 -
[ZJOI 2016]旅行者 Solution
题意:给一个矩阵,QQQ个询问,每次询问两点最短路。考虑最暴力的做法,每次直接暴力跑最短路,然后计算答案。这样的不足之处显然在于最短路上面,那么如何优化这个过程?考虑计算所有的答案。也就是分治,每次选择一条边,将它切开,考虑它对哪些询问有影响。如果一个询问的两个点必须经过这条线,那么最优答案肯定在这条线上,对这条线的每个点做一遍最短路。然后去更新这些询问的答案。如果一个点的两端点不需要...原创 2019-11-27 21:43:51 · 156 阅读 · 0 评论 -
[杂题]color Solution
题意:给一棵树,每个点有一个名字,有若干个询问,每次询问给出xxx,yyy,表示xxx子树中与之深度差为yyy的点的个数,如果点名字相同则只计算一次。dsu on treedsu~on~treedsu on tree用mapmapmap维护每个深度的名字出现情况。好像被卡了常数。code:code:code:#include <bits/st...原创 2019-11-14 22:12:29 · 137 阅读 · 0 评论 -
[NOIP2016 Day2 T3]愤怒的小鸟 Solution
题意:二维平面上有nnn个点,现在需要用最少的形如ax2+bxax^2+bxax2+bx抛物线去完全覆盖这些点。首先预处理出来如果攻击这两个点能消灭的所有点的集合。表示为kill[i][j]kill[i][j]kill[i][j]然后考虑dpdpdp。设dp[i]dp[i]dp[i]表示消灭iii这个集合的点需要的最少抛物线数。转移:dp[i∣kill[x][y]]=min(dp[i...原创 2019-11-14 16:06:31 · 123 阅读 · 0 评论 -
[BZOJ3744]Gty的妹子序列 Solution
题意:给一个序列,有若干个询问,每次询问一个区间的逆序对个数,强制在线。考虑分块,求出从第一块到任意块之间的逆序对数,再求出从第一块到任意块之间小于等于一个数的个数。然后的答案就可以很方便的计算出来,对于整块之间的,已经计算完毕,对于散块,有两种方法:用树状数组维护,O(nnlogn)\mathcal{O}(n\sqrt{n}\log{n})O(nnlogn)归并排序 O(nn)\ma...原创 2019-11-13 16:29:14 · 82 阅读 · 0 评论 -
[BZOJ3289]Mato的文件管理 Solution
题意:给一个序列,若干个询问,每次询问一个区间的逆序对个数。考虑数据范围很小,就可以使用莫队,如何计算扩展的一个点的贡献?用树状数组维护即可。code:code:code:#include <bits/stdc++.h>#define int long long#define regi register intint n,q;int a[51000];int tmp[5...原创 2019-11-13 10:40:48 · 115 阅读 · 0 评论 -
[NOIP2018 Day1 T3]赛道修建 Solution
题意:给一棵树,现在要从上面划出mmm条互不相交的链(指边不能共用),问这些链中长度最短的最长可以达到多少。最短最长没什么好说的了,考虑二分。考虑如何判定?使用贪心。给每个点都开一个multisetmultisetmultiset,然后将子树拼接后剩下的最长链插入这个点的multisetmultisetmultiset里面,然后从左往右检索该multisetmultisetmultiset...原创 2019-11-12 14:29:41 · 83 阅读 · 0 评论 -
[CF1152E]Neko and Flashback Solution
题意:有一个原始序列aaa,现在构造一些序列:构造长度为n−1n-1n−1的bbb序列,满足b[i]=min(a[i],a[i+1])b[i]=\min(a[i],a[i+1])b[i]=min(a[i],a[i+1])构造长度为n−1n-1n−1的ccc序列,满足c[i]=max(a[i],a[i+1])c[i]=\max(a[i],a[i+1])c[i]=max(a[i],a[i+...原创 2019-11-07 18:59:28 · 141 阅读 · 0 评论 -
[杂题]queen Solution
题意:在n×mn\times mn×m的矩阵上面放kkk个皇后使得所有皇后都能互相攻击。不同于正常打法的一点是这里面的皇后能无视阻挡攻击。这里面的n,mn,mn,m和kkk的范围都极大无比,不可能考虑枚举。考虑到一个皇后瞄准的位置,想让所有的皇后互相攻击,按照皇后的攻击方式来看:如果kkk达到666或更高,那么显然只能让所有皇后都在一条直线上。所以就只需要考虑k≤5k\leq5k≤5的时候怎么...原创 2019-10-28 16:15:31 · 118 阅读 · 0 评论 -
[SDOI2017]数字表格 Solution
题意:定义矩阵内每个位置(i,j)(i,j)(i,j)的数为gcd(i,j)\gcd(i,j)gcd(i,j),求矩阵内所有数的乘积。∏k=1nFk∑i=1n∑j=1m[gcd(i,j)=k]\prod^{n}_{k=1}F_k^{\sum^n_{i=1}\sum^{m}_{j=1}[\gcd(i,j)=k]}k=1∏nFk∑i=1n∑j=1m[gcd(i,j)=k]左上角的东...原创 2019-10-28 12:01:52 · 88 阅读 · 0 评论 -
[ZROJ-961]路径长度 Solution
给你一个有向无环图,QQQ次询问,每次问111到kkk是否有一条路径长度sss满足k≤s≤1.1×kk\leq s\leq1.1\times kk≤s≤1.1×k。如果直接暴力背包,是得不到满分的,好像空间也存不下,考虑如何优化?哪些点存下来是没有必要的呢?考虑这种情况:11.1x≤y≤x\frac{1}{1.1}x\leq y\leq x1.11x≤y≤x,这种情况下yyy是没有存在的必要的...原创 2019-10-13 17:30:29 · 161 阅读 · 0 评论 -
[ZROJ-962]动态矩阵最短路 Solution
题意:给一个矩阵,每次操作之前矩阵内所有数都会加111,操作有如下三种:把一行的数全部改为000把一列的数全部改为000询问在可以走向所有大小不超过kkk的方块时,从一个点能否到另一个点,如果可以求出最短路。把每次加一操作都可以当做没有操作,用时间轴来表示,设上次某一行操作的时间为ttt,如果现在时间为timetimetime,那么对于一个询问的kkk,如果time−t<=kti...原创 2019-10-13 15:12:12 · 206 阅读 · 0 评论 -
[ZROJ-960]最长01子序列 Solution
给一个010101序列,现在你需要找到一个子序列,使这个子序列满足以下条件:第一个111与序列开头的距离等于所有111之间的距离等于最后一个111与末尾的距离。我们可以枚举距离,然后直接计算答案。注意到这样是n2n^2n2的,过不了,于是发现在判定过程中下一个位置可以二分。这样就能通过这道题了。code:code:code:#include <bits/stdc++.h>#de...原创 2019-10-13 14:36:02 · 320 阅读 · 0 评论 -
[ZROJ-958]散步 Solution
给你nnn个点,每个点有两种边,AAA和BBB,给出所有点AAA边连向哪个点以及BBB边连向哪个点,(每个点往外只能连一条AAA和一条BBB)找到一条从111到nnn的路径,使得:这条路径上连续经过的AAA路径或者BBB路径最长长度最短。看到最后一句话其实就知道这题正解了。二分。二分最长长度之后呢?让我们从最低档分开始爬。对于n≤500n\leq 500n≤500的范围怎么办?把所有点拆...原创 2019-10-12 21:13:30 · 260 阅读 · 0 评论 -
[ZROJ-957]字符串 Solution
给你两个序列s1,s2s1,s2s1,s2,设他们长度分别为n,m(n≥m)n,m(n\ge m)n,m(n≥m),找到第一个序列的任意一个优秀的子序列。设这个优秀子序列下标为a1,a2,a3……ama_1,a_2,a_3……a_ma1,a2,a3……am优秀的子序列定义:s1a1=s21,s1a2=s22,s1a3=s23……s1am=s2ms1_{a_1}=s2_1,s1_{a...原创 2019-10-11 16:28:08 · 80 阅读 · 0 评论 -
[ZROJ-956]集合 Solution
给你一个序列,请完成以下操作:插入一个数xxx。删除一个数xxx。所有数+1+1+1,对2302^{30}230取模。所有数异或上xxx。思考一下加法的实质。把一个数拆成低位到高位的形式,a1 a2 a3 a4……a_1~a_2~a_3~a_4……a1 a2 a3 a4……,那么我们实际上就是要找到一个最小的iii,...原创 2019-10-11 13:48:06 · 107 阅读 · 0 评论 -
[ZROJ-955]折纸 Solution
题意:给一个字符矩阵,你可以折它,就像玩折纸那样,行列都可以折叠,要求是折叠线的两边对称,折叠线上不能有字符。如111111折叠后可以变成111。111111111111折叠后可以变成111111,而不能变成111111111。...原创 2019-10-10 19:22:08 · 131 阅读 · 0 评论 -
[ZROJ-954]分组 Solution
题意:给n个人,每个人有自己的意愿以及工作经验,111表示能当组长,222表示能当组员,333表示既能当组长又能当组员,并且有雇佣他的花费,现在需要将这些人分成kkk组,每组222个人,2×k≤n2\times k\leq n2×k≤n,每个组有111个组长和111个组员,要求组长的工作经验不小于组员的工作经验,请问组成kkk个队的最小花费,或者这是不可能的。考虑DP,首先要满足组长经验不小于...原创 2019-10-10 14:29:46 · 113 阅读 · 0 评论 -
[CF316E3]Summer Homework Solution
题目描述:给你一个序列,实现以下操作:单点修改:a[i]←xa[i]←xa[i]←x区间查询∑i=0r−lf[i]×a[i+l]\sum_{i=0}^{r-l}f[i]\times a[i+l]∑i=0r−lf[i]×a[i+l],其中f[i]f[i]f[i]表示斐波那契第iii项。区间修改:对于l≤i≤r,a[i]←xl\leq i\leq r,a[i]←xl≤i≤r,a[i]←x首...原创 2019-10-09 21:41:00 · 128 阅读 · 0 评论