「JOI2019 Final」解题报告
「JOI2019 Final」勇者比太郎
看懂题就很简单了,后缀和随便维护一下就好了,别用树状数组强加一个\(\log\)就行。
「JOI2019 Final」画展
显然可以先把所有的画框按大小排序。
然后把所有的画以美观值为第一关键字从小到大排序,大小为第二关键字也是从小到大排。
然后注意一下,贪心的时候要从后往前枚举,也就是先匹配大的画框,因为大的画框也一定能装下小的画,这个肯定不会更差。
「JOI2019 Final」有趣的家庭菜园
这题过于毒瘤,我不会啊。。。
「JOI2019 Final」硬币收藏
首先要知道硬币都是独立且没有差别的,硬币的移动和空格的移动也是无差别的。
我们对所有需要被放上硬币的位置开一个桶,初始化为 \(-1\) ,表示还需要填 \(1\) 个。
然后我们先让所有的硬币以其最短的路线进入目标矩阵,同时更新答案。
然后从左往右扫,对于两行分别开两个变量记录当前有多少个向右移动的硬币(可以为负数)
然后如果扫到某一列时,上下两行变量的正负性不同,就进行一次该列内部的硬币移动,同时更新答案,实现细节有一点,需要耐心和细心。
「JOI2019 Final」独特的城市
坑填上了。
这道题的理论推导有点复杂,不过实现起来还好。
首先要知道一个事情:对于一个城市 \(u\),对于它的任意一个“独特的城市” \(t\),都一定位于一条 \(u\) 到较远的一个直径端点的路径上。
这应该是显然的,因为只有这条路才不会出现可以覆盖掉 \(t\) 的另一个点。
覆盖指的是和 \(u\) 距离相同的点相互重复。
那么我们就可以先把直径抠出来,分别从两个直径端点跑dfs,然后用一个栈来记录符合条件的答案(根据上一条引理,这些点都一定在它到根的路径上),用类似莫队的方式开一个桶来记录最终答案,不断取 \(\max\) 就好了。
那么我们就要考虑如何更新栈内的点。
考虑长链剖分,对于每一次的dfs,我们先用次长链,也就是最长的轻链来覆盖栈内不合要求的点(需要预处理节点的深度),然后优先dfs重儿子,回溯上来时再以类似的方法用重儿子覆盖站内的点,但是要注意一下:如果此时栈顶元素是当前节点那就先把它弹栈,然后在进入轻儿子时再把当前节点入栈,最后退出时再和上方粗体字所述一样弹出当前节点。
「JOI2019 Final」解题报告的更多相关文章
- 「ZJOI2016」解题报告
「ZJOI2016」解题报告 我大浙的省选题真是超级神仙--这套已经算是比较可做的了. 「ZJOI2016」旅行者 神仙分治题. 对于一个矩形,每次我们从最长边切开,最短边不会超过 \(\sqrt{n ...
- 「雅礼集训 2017 Day2」解题报告
「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...
- 「雅礼集训 2017 Day1」 解题报告
「雅礼集训 2017 Day1」市场 挺神仙的一题.涉及区间加.区间除.区间最小值和区间和.虽然标算就是暴力,但是复杂度是有保证的. 我们知道如果线段树上的一个结点,\(max=min\) 或者 \( ...
- 「THP3考前信心赛」解题报告
目录 写在前面&总结: T1 T2 T3 T4 写在前面&总结: \(LuckyBlock\) 良心出题人!暴力分给了 \(120pts\) \(T1\) 貌似是个结论题,最后知道怎么 ...
- 「THUSCH 2017」大魔法师 解题报告
「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...
- 「AHOI / HNOI2018」转盘 解题报告
「AHOI / HNOI2018」转盘 可能是我语文水平不太行... 首先可以猜到一些事实,这个策略一定可以被一个式子表示出来,不然带修修改个锤子. 然后我们发现,可以枚举起点,然后直接往前走,如果要 ...
- 「CTS2019 | CTSC2019」氪金手游 解题报告
「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中 ...
- 「CTS2019 | CTSC2019」随机立方体 解题报告
「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\( ...
- LOJ#2351. 「JOI 2018 Final」毒蛇越狱
LOJ#2351. 「JOI 2018 Final」毒蛇越狱 https://loj.ac/problem/2351 分析: 首先有\(2^{|?|}\)的暴力非常好做. 观察到\(min(|1|,| ...
随机推荐
- oracle常见的函数
1.字符函数 -- initcap函数只针对英文 select * from tb_user where user_name = initcap('张三'); -- ltrim 左剪切 select ...
- Kosaraju's algorithm
推荐到我的这篇博客中看完整版的. 该算法用于求解有向图的强连通分量,也就是强连通子图的个数. 算法实现摘自Kosaraju's algorithm - 百度百科: #include <iostr ...
- jq 获取input多选框
1.获取checkbox选中个数 $("input[name='ckb-jobid']:checked").length $("input[type='checkbox' ...
- eclipse配置tomcat后修改server.xml文件(如编码等)无效问题
我们用eclipse配置好tomcat后,在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml等文件. 修改后重启Tomcat服务器时发现xml文件又被还原了. 因为Tomc ...
- 带有“全选”的combotree
<div id="setBtn_dd" class="easyui-window" data-options="iconCls:'icon-sa ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 网格系统实例:响应式的列重置
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 吴裕雄 python 神经网络——TensorFlow 花瓣识别2
import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...
- linux和windows系统的区别
在21世纪的今天,互联网可以说是当代发展最为迅速的行业,举个很简单的例子,现在的我们不论什么年龄阶层,几乎人手都有一部手机,上面的某博,某音,末手等软件,更是受到多数人的热爱,并且人们不仅仅用其来消遣 ...
- redis使用技巧小结
一.Redis 密码设置和查看密码redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证.1.初始化Redis密码:在配置文件中有个参数:re ...
- C++11常用特性介绍——for循环新用法
一.for循环新用法——基于范围的for循环 for(元素类型 元素对象 : 容器对象) { //遍历 } 1)遍历字符串 std::string str = "hello world&qu ...