5251: [2018多省省队联测]劈配 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 33  Solved: 22[Submit][Status][Discuss] Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayid顺利地通过了海选,接下来的环节是导师盲选,这一阶段的规则是这样的: 总共n名参赛选手(编号…
https://www.lydsy.com/JudgeOnline/problem.php?id=5251 https://loj.ac/problem/2477  <-可以看数据 https://www.luogu.org/problemnew/show/P4382 题面太长,请自行读完之后再看本题. 考试的时候让我伤心的一道题,分明想的就是正解结果sb般第二问没二分丢了15分. 如果b=1就是一个显然的匈牙利匹配了. 考虑b!=1也只不过就是让一个导师可以多匹配几个人而已,额外记录这个导师是…
劈配,匹配,网络流.那么考虑怎么跑网络流. 先看第一问.首先套路的建出超源超汇.不用想也知道导师向汇连容量为战队人数上限的边.特别地,给出局也建一个点,向汇连容量inf的边(似乎没有必要).对于一个新学员,假设我们已经知道了之前的学员的最优选择,可以把之前的每名学员和可以选择的导师连边,并由源向学员连容量为1的边.然后对于该名新学员,先只连最优选择的边,如果此时跑出的最大流不等于学员数,则表明这名学员无法选择最优,那么删掉最优边(此时这些边里一定没有流量,可以通过容量改为0实现)并连上次优边,次…
luogu 我记得我第一次做这道题的时候屁都不会qwq 先考虑第一问,暴力是依次枚举每个人,然后从高到低枚举志愿,枚举导师,能选就选.但是可以发现前面的人选的导师可能会导致后面的人本来可以选到这个志愿,但是不能选.这个问题是不是有点眼熟?你可以理解成二分图匹配问题,就是对于每个人,枚举志愿,然后把这个志愿对应的一些导师连边,如果跑匹配能跑出来那么他就是这个志愿,否则撤销刚才的操作 第二问类似,暴力枚举某个人到了前面的哪一名,然后把前面其他人在第一问中的方案的图先建好,然后把对应志愿\(\le s…
Description 一年一度的综艺节目<中国新代码>又开始了.Zayid 从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. Input 轻车熟路的Zayid 顺利地通过了海选,接下来的环节是导师盲选,这一阶段的规则是这样的: 总共n 名参赛选手(编号从1 至n)每人写出一份代码并介绍自己的梦想.接着 由所有导师对这些选手进行排名.为了避免后续的麻烦,规定不存在排名并列的情况. 同时,每名选手都将独立地填写一份志愿表,来对总共 m 位导师(编号从 1 至 m)…
BZOJ 洛谷 对于每个人,每次枚举一个志愿看是否能增广即可. 对于第二问,可以保留第一问中\(n\)次增广前后的\(n\)张图,二分,在对应图上看是否能增广即可. 貌似匈牙利的某种写法比网络流优多了...懒得看... 写的常数莫名大... 增广失败的话原图流量不会变啊,不用特意删掉新加的边,把表头head改了即可,而且判断是否能增广只需要判断BFS()是否返回1. Dinic: //195228kb 6676ms #include <cstdio> #include <cctype&g…
洛谷题目传送门 说不定比官方sol里的某理论最优算法还优秀一点? 所以\(n,m\)说不定可以出到\(1000\)? 无所谓啦,反正是个得分题.Orz良心出题人,暴力有70分2333 思路分析 正解的思路很巧妙,其实我并不觉得这是个正儿八经的网络流或者二分图匹配的题目,主要还是个思维+建图模型+乱搞...... \(C=1\)时我们就可以对于每个人直接匹配而不会影响到后面的选择了.但是\(C>1\)的话,可能某一个人可以选多个导师,当他随便选了其中一个以后,可能影响到后面某个人使其选不到本来的最…
题目链接 题意分析 受到了\(olinr\ \ julao\)的影响 写了匈牙利算法 首先 我们对于每一个人 从高到低枚举志愿 如果当前志愿的老师有剩余的话 那么我们就选 否则的话 我们看看谁的那个志愿选了这个老师 我们跑匈牙利算法 看看是否更优 如果当前可以在接受范围内匹配上的话 我们就选择 否则的话 我们就看看 匈牙利增广中遇到的编号最大的人是谁 如果我们增广过程中碰到了争夺的人 那么一定是排名靠前的人 我是这么思考的 我们是在增广的过程中找到了ta 那么取代ta之后 其他争夺的人一定会把我…
[九省联考2018]秘密袭击coat 研究半天题解啊... 全网几乎唯一的官方做法的题解:链接 别的都是暴力.... 要是n=3333暴力就完了. 一.问题转化 每个联通块第k大的数,直观统计的话,会枚举每个点作为第k大,看看有多少个连通块.但是这样要点分治.而且在d[x]相同的时候可能算重 所以必须以连通块来统计 考虑在连通块的最浅的点统计 但是第k大不一定是这个点 考虑一个套路:用许多次分别统计,最后实际上凑出答案的想法. 而且本题权值范围和n同阶. 外层枚举每一个i∈[1,w],DP找到所…
[BZOJ5250][九省联考2018]秘密袭击(动态规划) 题面 BZOJ 洛谷 给定一棵树,求其所有联通块的权值第\(k\)大的和. 题解 整个\(O(nk(n-k))\)的暴力剪剪枝就给过了... #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAX 1700 #define MOD 64123 inline int read() { int x…
「九省联考 2018」IIIDX 这什么鬼题,送的55分要拿稳,实测有60? 考虑把数值从大到小摆好,每个位置\(i\)维护一个\(f_i\),表示\(i\)左边比它大的(包括自己)还有几个数可以选 这个最开始直接处理好,就是>=数值\(i\)的数字个数 如果我们从小到大安排,发现我们需要给当前数安排一个数值,根据贪心,这个数值要尽可能大,但又要满足一个条件,就是这个数值右边的\(\min \{f_i\}\ge siz_{now}\) 安排完了以后,需要给子树再安排一下,就把右边区间的\(f_i…
[BZOJ 5252][LOJ 2478][九省联考2018] 林克卡特树 题意 给定一个 \(n\) 个点边带权的无根树, 要求切断其中恰好 \(k\) 条边再连 \(k\) 条边权为 \(0\) 的边重新连成一棵树, 最大化新树上某条路径的权值和. \(0\le k<n\le 3\times 10^5\). 边权的绝对值不超过 \(1\times 10^6\). 提示: 题目并不难 题解 当时场上做这题的时候根本不知道有wqs二分这种高端套路...看到提示之后果断跑路了qaq... 首先切断…
#2473. 「九省联考 2018」秘密袭击 链接 分析: 首先枚举一个权值W,计算这个多少个连通块中,第k大的数是这个权值. $f[i][j]$表示到第i个节点,有j个大于W数的连通块的个数.然后背包转移. 复杂度是$O(n^2k)$,时限5s,然后卡卡常就过了. 代码: #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath&g…
P4363 [九省联考2018]一双木棋chess 题目描述 菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束. 落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且这个格子的左侧及上方的所有格子内都有棋子. 棋盘的每个格子上,都写有两个非负整数,从上到下第\(i\)行中从左到右第\(j\)列的格子上的两个整数记作\(A_{i,j},B_{i,j}\) .在游戏结束后,菲菲和牛牛…
[BZOJ5248][九省联考2018]一双木棋(搜索,哈希) 题面 BZOJ Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何棋子, 两人轮流在格子上落子,直到填满棋盘时结束.落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且 这个格子的左侧及上方的所有格子内都有棋子. 棋盘的每个格子上,都写有两个非负整数,从上到下第i行中从左到右第j列的格子上的两个整数记作Aij.Bij.在 游戏结束后,菲菲和牛牛会分别计算自己…
P4364 [九省联考2018]IIIDX 题目背景 Osu 听过没?那是Konano 最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI 内工作,离他的梦想也越来越近了. 这款音乐游戏内一般都包含了许多歌曲,歌曲越多,玩家越不易玩腻.同时,为了使玩家在游戏上氪更多的金钱花更多的时间,游戏一开始一般都不会将所有曲目公开,有些曲目你需要通关某首特定歌曲才会解锁,而且越晚解锁的曲目难度越高. 题目描述 这一天,Konano 接到了一个任务…
Loj #2479. 「九省联考 2018」制胡窜 题目描述 对于一个字符串 \(S\),我们定义 \(|S|\) 表示 \(S\) 的长度. 接着,我们定义 \(S_i\) 表示 \(S\) 中第 \(i\) 个字符,\(S_{L,R}\) 表示由 \(S\) 中从左往右数,第 \(L\) 个字符到第 \(R\) 个字符依次连接形成的字符串.特别的,如果 \(L > R\) ,或者 \(L < [1, |S|]\), 或者 \(R < [1, |S|]\) 我们可以认为 \(S_{L,…
题目:https://loj.ac/problem/2473 https://www.luogu.org/problemnew/show/P4365 参考:https://blog.csdn.net/xyz32768/article/details/82952313 https://zhang-rq.github.io/2018/05/04/%E4%B9%9D%E7%9C%81%E8%81%94%E8%80%832018-%E7%A7%98%E5%AF%86%E8%A2%AD%E5%87%BBC…
5249: [2018多省省队联测]IIIDX Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 32  Solved: 17[Submit][Status][Discuss] Description [题目背景] Osu听过没?那是Konano最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在 ,他在世界知名游戏公司KONMAI内工作,离他的梦想也越来越近了.这款音乐游戏内一般都包含了许多歌曲,歌曲 越多,玩家越不易玩腻…
前言 今年省选还有 15 天.每天针对性刷题学知识点有点枯燥,想到真题还没刷,就对着 pdf 做了一遍. A. 一双木棋 去年省选得了 25,应该是 \(n=2,m=2\) 的贪心和 \(m=1\) 的递推. 差不多暑假的时候把 DP 做法弄出来了. 然后 WC2019 试机题的传统题是这道题.当时写+调一共 1h20min 1A 了. 这会想半天写不出来--一直在想 dp 怎么转移. 实际上轮廓线是状态啊!就是 dp 数组的下标作为状态,然后针对这个转移,这才是 dp 的本质. 此外,我好像只…
5250: [2018多省省队联测]秘密袭击 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 3  Solved: 0[Submit][Status][Discuss] Description [题目背景] We could have had it all. . . . . . 我们本该,拥有一切 Counting on a tree. . . . . . 何至于此,数数树上 Counting on a Tree( CoaT)即是本题的英文名称. […
5248: [2018多省省队联测]一双木棋 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 43  Solved: 34[Submit][Status][Discuss] Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何棋子, 两人轮流在格子上落子,直到填满棋盘时结束.落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且 这个格子的左侧及上方的所有格子内都有棋子. 棋盘…
题目分析: 首先跑个暴力,求一下有多少种状态,发现只有18xxxx种,然后每个状态有10的转移,所以复杂度大约是200w,然后利用进制转换的技巧求一下每个状态的十进制码就行了. 代码: #include<bits/stdc++.h> using namespace std; int n,m; ][],B[][]; ][]; // after number ],arr[]; ]; int calc(){ ; ;i<=n;i++){ans += kk[i][sit[i]-];} ; } in…
题目描述 这一天,Konano接到了一个任务,他需要给正在制作中的游戏<IIIDX>安排曲目的解锁顺序.游戏内共有n首曲目 ,每首曲目都会有一个难度d,游戏内第i首曲目会在玩家Pass第trunc(i/k)首曲目后解锁(x为下取整符号)若tru nc(i/k)=0,则说明这首曲目无需解锁.举个例子:当k=2时,第1首曲目是无需解锁的(trunc(1/2)=0),第7首曲 目需要玩家Pass第trunc(7/2)=3首曲目才会被解锁.Konano的工作,便是安排这些曲目的顺序,使得每次解锁出的…
传送门 对抗搜索都不会,我真是菜死了qwq 首先根据题目条件,可以发现从上到下每一行的棋子数是单调不增的,然后n m都比较小,如果把状态搜出来,可以发现合法状态并不多,所以可以用一个11进制数表示状态,然后对应的值存在map里.然后状态之间的转移就看这个状态应该是谁下,如果是先手就取max,否则取min转移 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define LL long long #define il inline using…
BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已解锁的节点\(x\)(已解锁是指父节点已经处理完的点,刚开始就是\(fa[x]=0\)的\(x\)),为其子树预定\(sz[x]\)大小的位置. 把\(d_i\)从小到大排序依次枚举,每次要尽量往\(1,2,...,n\)这个序列中尽量靠后的位置填(填到\(p\)表示\(Ans_p=d_i\)).…
题解: 水题吧 首先很显然的是状压或者搜索 考虑一下能不能状压吧 这个东西一定是长成三角形的样子的 所以是可以状压的 相邻两位之间有几个0代表他们差几 这样最多会有2n 然后就可以转移了 由于之前对博弈dp的理解非常傻逼 刚开始正着dp以为可能是一样的然后就挂了 当然是要,倒着dp才对.. 代码: #include <bits/stdc++.h> using namespace std; #define INF 1e9 <<],dp2[<<],a1[][],b1[][]…
正解:记搜+hash 解题报告: 传送门! 因为看到nm范围特别小,,,所以直接考虑爆搜(bushi 先考虑爆搜之后再想优化什么的嘛QwQ 首先对这种都要最优的,就可以直接把答案设为针对某一方,然后题目就会变成,轮流的,一次最大一次最小这样子(,,,好像表述得不太好,,,不管了QAQ 所以直接对每一步枚举所有状态,因为这样最优性的问题显然有每个状态对应唯一确定答案,所以直接对每个状态算出这个状态的答案,然后取最大/最小值就好 然后继续考虑,这样显然是会T的? 所以就记搜一下 只是考虑记搜怎么存,…
原题传送门 这道题珂以轮廓线dp解决 经过推导,我们珂以发现下一行的棋子比上一行的棋子少(或等于),而且每一行中的棋子都是从左向右依次排列(从头开始,中间没有空隙) 所以每下完一步棋,棋盘的一部分是有棋子的,另一部分是没棋子的 那么,我们就珂以用一条轮廓线来表示有棋子的部分和没棋子的部分的分界线 我们珂以用一个二进制数表示轮廓线,长\(n+m\)位,含有\(n\)个\(1\)和\(m\)个\(0\),轮廓线从右上走到左下,二进制中一位\(1\)表示向下\(1\)格,\(0\)表示向左\(1\)格…
思路 容易发现只能在轮廓线的拐点处落子,所以棋盘的状态可以用一个n+m长度的二进制数表示 转移就是10变成01 代码 #include <cstdio> #include <algorithm> #include <cstring> #include <map> // #define int long long using namespace std; int A[20][20],B[20][20],n,m; //map<int,int> M,v…