LuoguP4365 [九省联考2018]秘密袭击】的更多相关文章

https://zybuluo.com/ysner/note/1141136 题面 求一颗大小为\(n\)的树取联通块的所有方案中,第\(k\)个数之和. \(n\leq1,667,k\leq n\) 解析 这题可以当作暴力踩标算的范本题目...(其实是因为高级算法嵌套起来有时不如暴力快) 但这个暴力我是想不到的... 我们可以单独讨论每个点对答案的贡献,并把大于该点权值的点权值设为\(1\),其它设为\(0\).接下来,我们就可以用\(O(nk^2\))的树形DP暴搞了. 但是,复杂度\(O(…
[九省联考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…
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)即是本题的英文名称. […
$ \color{#0066ff}{ 题目描述 }$ Access Globe 最近正在玩一款战略游戏.在游戏中,他操控的角色是一名C 国士 兵.他的任务就是服从指挥官的指令参加战斗,并在战斗中取胜. C 国即将向D 国发动一场秘密袭击.作战计划是这样的:选择D 国的s 个城市, 派出C 国战绩最高的s 个士兵分别秘密潜入这些城市.每个城市都有一个危险程度did_idi, C 国指挥官会派遣战绩最高的士兵潜入所选择的城市中危险程度最高的城市,派遣战绩第二高的士兵潜入所选择的城市中危险程度次高的城…
题面 按照*Miracle*的话来说,网上又多了一篇n^3暴力的题解 可能是因为很多猫题虽然很好,但是写正解性价比比较低? 直接做不可做,转化为统计贡献:$O(n)$枚举每个权值,直接统计第k大大于等于这个权值的联通块个数的和— —这样每个权值x恰会贡献x次. 将所有大于等于当前权值的点点权赋为1,其余点点权赋为零,然后就是$O(n^2)$树形背包:设$dp[i][j]$表示以i为根的子树里选出(新)点权和为j的联通块,且联通块必须包含i自身的方案数. 一些小小的卡常:unsigned int,…
Description 题库链接 给出一棵 \(n\) 个点的树,每个点有点权.求所有联通块的权值 \(k\) 大和,对 \(64123\) 取模. \(1\leq n,k\leq 1666\) Solution 写正解是不可能的,这辈子都不可能的.只有写暴力才能维持的了生活这样子. 不妨枚举连通块内第 \(k\) 大的点.为了方便讨论,当点权相同时,点的标号越大,点优先级越高. 将优先级高于枚举的点的点权赋值为 \(1\) ,低于枚举的点的点权赋值为 \(0\) .然后就是找包含枚举的点在内的…
题目链接 洛谷. LOJ,LOJ机子是真的快 Solution 我直接上暴力了...\(O(n^2k)\)洛谷要\(O2\)才能过...loj平均单点一秒... 直接枚举每个点为第\(k\)大的点,然后\(dp\)出方案数统计答案就好了. \(f[i][j]\)\(dfs\)下去的时候表示考虑到\(i\),有\(j\)个大于\(i\)的点的方案数,此时没有考虑儿子. 然后回溯的时候从叶子节点把儿子的影响加回来就好了. #include<bits/stdc++.h> using namespac…
题目大意 有一棵\(n\)(\(n\leq 1666\))个点的树,有点权\(d_i\),点权最大值为\(w\)(\(w\leq 1666\)).给出\(k\)(\(k\leq n\)),定义一个选择连通块的方案的权值为该连通块第\(k\)大的点权,如果该连通块大小\(<k\),那么该方案的权值为0.求所有选择连通块的方案的权值之和. 题解 考虑暴力: 设\(f(S,k)\)表示连通块\(S\)中第\(k\)大的点权,那么答案就是\(\sum\limits_{i=1}^{w}i\times(\s…
luogu 这里不妨考虑每个点的贡献,即求出每个点在多少个联通块中为第\(k\)大的(这里权值相同的可以按任意顺序排大小),然后答案为所有点权值\(*\)上面求的东西之和 把比这个点大的点看成\(1\),小于等于他的看成\(0\),那么就是要求出包含枚举的那个点并且权值和为\(k-1\)的联通块个数,可以树型\(dp\),设\(f_{x,j}\)表示联通块最上面的点为\(x\)并且权值和为\(j\)的联通块数,转移树型背包即可,具体细节见代码.复杂度可以做到\(O(nk)\) 所以总复杂度为\(…
#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…
「九省联考 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... 首先切断…
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,…
前言 今年省选还有 15 天.每天针对性刷题学知识点有点枯燥,想到真题还没刷,就对着 pdf 做了一遍. A. 一双木棋 去年省选得了 25,应该是 \(n=2,m=2\) 的贪心和 \(m=1\) 的递推. 差不多暑假的时候把 DP 做法弄出来了. 然后 WC2019 试机题的传统题是这道题.当时写+调一共 1h20min 1A 了. 这会想半天写不出来--一直在想 dp 怎么转移. 实际上轮廓线是状态啊!就是 dp 数组的下标作为状态,然后针对这个转移,这才是 dp 的本质. 此外,我好像只…
题目: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内工作,离他的梦想也越来越近了.这款音乐游戏内一般都包含了许多歌曲,歌曲 越多,玩家越不易玩腻…
5251: [2018多省省队联测]劈配 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 33  Solved: 22[Submit][Status][Discuss] Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayid顺利地通过了海选,接下来的环节是导师盲选,这一阶段的规则是这样的: 总共n名参赛选手(编号…
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…