首页 > 其他分享 >JOISC 2021 题解

JOISC 2021 题解

时间:2023-05-25 20:23:38浏览次数:58  
标签:submission 题解 然后 qoj JOISC 2021 https JOISC21 我们

JOISC21 フードコート (Food Court)

首先我们发现我们这个删除实际上可以假删除,我们每次问询时求出这个队列目前被删了几个(维护区间加,区间 \(\max(0,A-x)\))就可以把删除操作给弄掉了。

然后我们考虑对商店做扫描线!因为我们现在其实就是对商店的单点问询,我们这个加入操作也可以在左端点加入,右端点删除,再开一个线段树维护每个时刻的团体是否出现,然后再在线段树上二分就好了。

https://qoj.ac/submission/84204

JOISC21 道路の建設案 (Road Construction)

首先考虑平面曼哈顿距离最近点对的一个分治做法。我们对于分治线 \(x\),我们从上到下扫,然后每次扫问询最小值,加入一个点。我们考虑把这个过程可持久化了,这样我们就能查询到在这一次分治过程中这个点的 \(k\) 小值。

然后我们对所有分治局面,用堆维护。我们每个局面维护这个局面 \(S\) 中的点统计了几个值 \(p_{S,x}\),以及目前这个局面的还能使用的最小值以及在哪里取到的,再用一个堆维护每个点的情况。然后我们每次取出最小值最小的局面 \(S\),找到 \(S\) 中最小值所对应的 \(x\),求出这个局面下这个点的 \(p_{S,x}+1\) 小值,然后更新一下这个在堆中的取值。复杂度是双 log 的。

https://qoj.ac/submission/84012

JOISC21 ビーバーの会合 2 (Meetings 2)

我们发现奇数的时候一定为 \(1\),偶数设为 \(2k\),那么合法的点一定在一条路径上,路径端点 \(u,v\),然后把路径给割开后,\(u,v\) 所在连通块的大小都 \(\ge k\)。于是我们考虑点分治,就好了。

https://qoj.ac/submission/85202

JOISC21 ボディーガード (Bodyguard)

我们考虑把它二维化,然后再变换一下坐标系(\((t,x)\) 变换成 \((x-t,x+t)\)),每个 VIP 的路径就变成了有一堆横向或纵向线段,然后我们相当于从一个起点出发,可以往下或往右走,然后走到线段上会有一个贡献。我们暴力把它离散化后扩成一个完整的网格图,然后 \(O(n^2)\) 做一次 DP,\(f(i,j)\) 表示从 \((i,j)\) 开始走的最大贡献和 。规定一下,这里的坐标在平面直角坐标系上考虑,即向右 \(x\) 增大,向下 \(y\) 减小。

然后我们考虑如何从一个不在网格图上的格点的贡献。实际上,在非网格上走一定不优,所以我们实际上一定会先竖直地往下走,然后走到一个网格图上的线,然后走到向右的那个格点。或者先水平向右,走到一个网格线,再向下。

暴力 \(O(qn)\) 在原题恐怖的 25s 时限下是可能是可过的吧。不过这个显然可以优化。我们离线下来。先考虑向下走到格线。对于 \(i,i+1\) 两列之间的询问点,我们要求的是其实就是对于 \(j\) 所在列的真实坐标位于 \((x,y)\) 下面的 \(\max_{j} f_{i+1,j}+p_{x,y}w_{i,j}\),其中 \(p\) 表示 \((x,y)\) 到第 \(i\) 列的距离,\(w_{i,j}\) 表示从离散化的网格的 \((i,j)\) 走到 \((i+1,j)\) 的单位时间的收受益。注意到相同 \(i\) 情况下 \(f\) 随着 \(j\) 递增而单调不降,于是实际上如果存在变大的 \(w\) 那原本 \(w\) 小的那个一定不优。我们单调栈维护凸壳,然后每次加入的时候额外把 \(w\) 更小的栈顶(栈中显然 \(w\) 单调)给弹掉即可。向右走到格线,本质相同,不再具体展开。

https://qoj.ac/submission/85971

JOISC21 イベント巡り 2 (Event Hopping 2)

考虑求区间图最大独立集的一个贪心:把所有区间按照右端点排序,然后我们暴力往后取。然后我们发现这个对于任意一段数轴上的区间都是成立的,然后我们可以直接倍增求出 \([L,R]\) 包含的所有区间的最多区间数。

然后我们考虑贪心,每次取一个区间就计算一下如果这段区间被这个区间覆盖上了那么剩下的够不够。就好了。

https://qoj.ac/submission/86042

JOISC21 最悪の記者 4 (Worst Reporter 4)

完善了对“后缀取min/max”操作的想法。

看到这个还是考虑维护差分比较简单。因为在后缀 min/max 中我们相当于其实就是要删掉一些差分。而这题的 DP 中还要求两个东西叠加起来。我们发现这其实就是两个差分归并起来。于是 set 启发式合并就好了。

https://qoj.ac/submission/86143

标签:submission,题解,然后,qoj,JOISC,2021,https,JOISC21,我们
From: https://www.cnblogs.com/TetrisCandy/p/17432739.html

相关文章

  • 【题解】Codeforces Round 737 (CF1557)
    VP情况:solve:4/5rank:431st评价:VP了一下,我这个shaberB直接5发罚时,耽误了二十多分钟,以及被D各种细节差点搞死。A.EzzatandTwoSubsequences(*800)题目描述:给定一个序列,将其分为\(2\)个组,要求这两个组的平均值之和最大,组内的数不要求在原序列中连续。题目分析:我们......
  • 【题解】CF1062E Company
    传送门先考虑如何求解区间LCA假设要我们求\(8\sim11\)的LCA。那么显然它们的LCA等效于8和11的LCA。发现8和11刚好是“最左”和“最右”的两个顶点,感性理解一下,就可以得出一个结论:区间LCA和dfs序最小的和最大的的LCA是等效的。(这个结论应该还......
  • 2021 ICPC 江西省大学生程序设计竞赛(正式赛)
    链接:https://ac.nowcoder.com/acm/contest/21592BC++Code#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;voidsolve(){intx,y;cin>>x>>y;intcnt=0;vector<int>ans;while(1)......
  • Altium Designer 2021软件安装包下载AD2021安装教程
    安装步骤1、将下载好的安装包鼠标右击,选择解压2、解压得到一个安装文件夹,打开它3、鼠标右击【AltiumDesigner21Setup】,选择 以管理员身份运行4、点击【Next】5、语言选择到【Chinese】勾选【同意条款】,点击【Next】6、点击【Next】7、点击小文件夹图标,选择安装位置,可以把安装盘C......
  • P8989 [北大集训 2021] 随机游走
    Link给一张\(n\)个点的有向图,初始对于\(\foralli\in[1,n-1]\),在\(i\)与\(i+1\)之间有一条有向边在其中再加入\(m\)条有向边,允许重边和自环,最大化从\(1\)到\(n\)的期望步数我们可以注意到几条简单的性质为了尽可能最大化期望步数,所有边都会往\(1\)连不可能......
  • 题解(教主的魔法)P2801
    题目教主的魔法题目描述教主最近学会了一种神奇的魔法,能够使人长高。于是他准备演示给XMYZ信息组每个英雄看。于是$N$个英雄们又一次聚集在了一起,这次他们排成了一列,被编号为$1,2,\ldots,N$。每个人的身高一开始都是不超过$1000$的正整数。教主的魔法每次可以把闭区......
  • 常见问题解决 --- 安卓中一个类中的匿名类和另一个类中的匿名类无法相互传值
      runOnUiThread(newRunnable(){@Overridepublicvoidrun(){//在UI线程中执行的主代码textView.setText("Hello,world!");}});将上面更新主ui放置在匿名内部类的回调方法里即可传值给属性。......
  • AtCoder Beginner Contest 302 H. Ball Collector 题解
    AtCoderBeginnerContest302H.BallCollector题意跳过。可以视作将\(a_i,b_i\)之间连了一条边,然后\(a_i,b_i\)之间只能选一个等价于对于一条边只能选择其一个端点。那么对于只包含树的联通块而言,如果都选择儿子节点,那么会有一个根节点无法被选择上;而对于包含至少一个......
  • NOIP2014普及组试题题解
    1.珠心算测验代码:#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=2e4+39+7;intmp[N],n,a[N],ans=0;intmain(){ cin>>n; for(inti=1;i<=n;i++)cin>>a[i]; for(inti=1;i<=n;i++){ for(intj=1;j<=n;j++)......
  • 常见问题解决 --- Failed to build android app at server - class file for android.
    问题原因  这个错误主要是LocalBroadcastManager这个类被弃用了,而在库或者sdk中使用到了。解决办法build.gradle文件中添加implementation'com.android.support:support-v4:30.4.1'gradle.properties添加android.enableJetifier=true......