JSOI2014解题报告

JSOI2014解题报告

JSOI2014 拼图

首先考虑暴力做法,就是枚举\(low\)\(upp\)然后贪心的选.

这个时候考虑优化暴力显然不是很可行,考虑根号做法.

如果\(n \leq \sqrt{100000}\),那么这个时候这样子的暴力复杂度就对是吧.

如果\(m \le \sqrt{100000}\),考虑枚举每一个白点,找到离他最近的黑色点,把这段距离当成一个\(low,upp\)即可.

JSOI2014 宅男计划

宅的天数和送餐次数应该是相关的(肯定).

然后直接退火就行了.

JSOI2014 骑士游戏

考虑令\(dp_i\)表示砍\(i\)号怪物所需要的最小魔耗,发现这是一个没有负权边的图,直接\(dijkstra\)转移\(dp\)即可.

JSOI2014 支线剧情

不难注意到这可以转换成一个上下界费用流,每条边\([1,Inf)\),直接跑即可.

JSOI2014 保龄球

比较神奇的\(dp\),个人认为是\(JSOI2014\)中最难的一题.

首先考虑怎么样最优,肯定是一个全中后面跟补中,补中后面再放全中.

如果当前是全中:

  • 后面要放失误那么肯定是放最大的.

  • 后面要放补中肯定是放第一个比较小的.

如果当前是补中:

  • 后面要放失误肯定是放第一轮最大得分的.

  • 放补中就放最大的.

注意到补中一定是按照第一个排序后放区间的,失误排个序取两次的最大值,然后就可以\(dp\)了.

但是注意到有可能有附加局,所以你放的失误可能有特例不满足上述要求,考虑枚举即可.

\(f_{i,l,r,j,k,o}\)表示放了\(i\)轮全中,补中还剩下\((l,r]\)中的可以用,失误放了前\(k\)个,有没有放特殊局,上一次是全中/补中/失误.

随便转移即可.

JSOI2014 奇怪的计算器

一个比较常见的套路,考虑把所有的询问放在一起,这个答案序列肯定是根据初始值的大小单调的.

直接拿线段树维护即可.(也可以用吉利线段树)

JSOI2014 支线剧情2

如果没有存档/读档直接对于每一个节点算儿子中的叶节点个数然后\(dp\).

有了读档枚举哪一个儿子读档进行最优解即可.

*JSOI2014 病毒分类

没写.考虑将前后缀搞出来就是一个最小割跑出答案.

至于输出方案可以考虑判断那些边边权为\(0\).

JSOI2014 强连通图

第一问很明显就是最大的强连通分量的大小.

第二问就是要求缩点后入度为\(0\)和出度为\(0\)的点中取\(max\),因为你可以将这两个连起来然后让图联通.

JSOI2014 歌剧表演

考虑一次表演之后会把一些几何分成可以被划分和不能被划分两种.

然后用\(set\)暴力维护即可.

JSOI2014 士兵部署

无脑题,每次加一个点,求动态凸包面积.

直接二分就行了.

JSOI2014 回文串

考虑先用\(manacher\)求出最长回文半径,然后对于每一个\([l,r]\)区间询问会对其造成限制,分成\([l,mid]\)\((mid,r]\)分开处理即可.

JSOI2014 电信网络

模板题,直接连边跑最大权闭合子图即可.

JSOI2014 打兔子

考虑每相邻的坑不会打,然后顺序\(dp\).

问题在于\(1\)打了会对\(n\)有影响,直接钦定\(1\)开枪和\(n\)开枪即可.

JSOI2014 序列维护

模板线段树2,甚至只要改输入格式.

JSOI2014 学生选课

很明显可以二分,二分之后发现每一个学生只能选两门课目,跑个\(\text{2-SAT}\)就行了.

JSOI2014 矩形并

首先考虑贡献是一个矩形,可以对于每一个矩形打上\(1\)标记,然后查其他的矩形,可以用二位树状数组维护.

但是这样子会\(MLE\),考虑第一维变成扫描线即可.

posted @ 2020-02-08 18:13  fexuile  阅读(219)  评论(0编辑  收藏  举报