首页 > 其他分享 >CF1998 div2 & abc366

CF1998 div2 & abc366

时间:2024-08-11 17:06:09浏览次数:13  
标签:1.4 CF1998 中位数 abc366 排序 div2 dp

1 CF

1.1 B

被诈骗了。我们的构造要向“每个区间只有 1 个数不一样考虑”。

1.2 C

比较难。但是出的好。

注意到如果我们不删除中位数这个位置的数,那么那个数是一定的。

所以我们可以把 \(k\) 加到最大的可以加的数上,统计答案就在这个数,然后二分算中位数即可。

其它策略?

我们可不可以使得中位数变大一点?

此时我们就询问 \(a_n\),然后通过操作来使得中位数最大即可。

操作也是很好想的,如果对 \(a\) 排序然后每次二分实现的话复杂度就是 \(O(n\log V)\) 的。

1.3 D

被诈骗???

确实,今天 15 分钟切了。

如果你提前求出从 1 到达每个点的最少时间,你发现不好做,因为你要限制的区间是有约束的。

换句话说,假设 A 从 \(s\) 开始走到 \(t\),你知道 \(dp_t\),但是 \(dp_t\) 可能由 \([s,t)\) 的数转移过来,就没办法了。

解决方法也很好想,顺序扫描,每次统计从 \(i\) 出发的边所造成的贡献。对于边 \(i\to to\),此时只考虑了 \([1,i)\) 的边,所以对于 \([i+1,to)\) 的点,这时的 dp 值完全是不限制的、正确的;所以我们计算一下影响区间就好了,打一个数组差分。

1.4 E

1.4.1 E1

wzy 赛时过了,说笛卡尔树,我接着做了差不多 20 分钟过了。

建出树来,发现如果 \(sum_l\) 大于 \(a_x\) 的话,那么 \(l\) 就一定可以替代 \(x\)。\(r\) 同理。

但是有一个前提,就是到祖先的路径上的点都是可以的。

所以两次 dfs 即可。

严谨的证明你考虑每次操作是 upd 和删除,那此时 \(x\) 和 \(l,r\) 所表示的数在 \(S\) 里面就一定是相邻的。

其实我交上去发现过了也觉得很不可思议。

1.4.2 E2

还不会。


2 ABC

2.1 E

之前做过类似,直接把 \(x\) 和 \(y\) 分开处理。

绝对值的形式也很经典。

2.2 F

贪心还是很经典。

不会证明,但是都是选 2 个数来确定排序方式。

排序完了做 dp 就行。

2.3 G

异或高斯消元,不会。

标签:1.4,CF1998,中位数,abc366,排序,div2,dp
From: https://www.cnblogs.com/LCat90/p/18353616

相关文章

  • ABC366整理
    ABC366整理:C:用一个变量存储背包内现有的球种类数注:可能会重模拟即可简单的C++code:#include<bits/stdc++.h>//#include<windows.h>//#include<unistd.h>usingnamespacestd;#defineendl'\n'#defineTRACE1#definetcoutTRACE&&cout#define......
  • ABC366简要题解
    C直接维护一个桶,表示每个元素当前的出现次数。再利用这个桶直接维护答案即可。D三维前缀和模板题。E注意到答案中只会出现\(O(n)\)个不同\(x\),以及\(O(n)\)个不同的\(y\)。于是单独考虑\(x\)和\(y\),最后尺取求一下答案即可。F首先我第一个尝试的思路是贪心,但是......
  • ABC366-D 题解
    三维前缀和板子。三维前缀和可以类似二维前缀和来做,先给一下二维前缀和数组的计算方法:\[sum_{i,j}=a_{i,j}+sum_{i-1,j}+sum_{i,j-1}-sum_{i-1,j-1}\]同样的,可以写出三维前缀和数组的计算方法:\[sum_{i,j,k}=a_{i,j,k}+sum_{i,j,k-1}+sum_{i,j-1,k}+sum_{i-1,j,k}-sum_{i,j-1,k......
  • ABC366
    A[link](https://atcoder.jp/contests/abc366/tasks/abc366_a]判断一下少的那个人加上剩下的所有票是否会超过另一个人,如果超过,不确定,否则目前票多的必胜。神奇的代码#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intn,a,b; cin>>n>>a>>b; i......
  • SMU Summer 2024 div2 3rd
    文章目录TheThirdWeek一、前言二、算法1.KMP算法2.线性DP<1>(最长上升子序列II)3.背包DP<1>(「木」迷雾森林)4.其它<1>(Ubiquity)三、总结TheThirdWeek战略上藐视敌人,战术上重视敌人————毛泽东主席一、前言周六打了场cf,只过了俩题而且比较慢,给我的id上......
  • cf960(div2)
    A.SubmissionBait(博弈)题意:爱丽丝和鲍勃在大小为n的数组a中进行游戏,他们轮流进行运算,爱丽丝先开始,不能运算的一方输,一开始mx=0,每次操作,玩家可以选择一个牵引i,ai>=mx,mx设置为ai,ai设为0.判断爱丽丝是否有一个获胜策略。分析:只要一个数出现奇数个,那么爱丽丝就可以先手拿走那出......
  • Codeforces 956 Div2
    期末考试结束,开始训练A.ArrayDivisibility----------------------------------题解----------------------------简单的构造题,要让数组a里面的下表为1<=k<=n的数以及下表为(k的因数)的数加起来的和能被K整除,那我们只需要让每一个k的因数都能被k整除就行了,直接让每一个编号i......
  • Codeforces Round956(div2) A~C
    A.ArrayDivisibility题意:对于所有k=1~n,能被j=1~n整除,要求以这些j作为下标a[j]的和也能够被k整除思路:题目有点绕,但是仔细读懂题目其实会发现,其实就是从1到n按顺序输出一遍...,别被样例忽悠了voidsolve(){ intn; cin>>n; for(inti=1;i<=n;i++){ cout......
  • 沪越联赛 - 2024年6月月赛Div2 题解
    问题A:替换题目描述小明每次注释的时候都写\(n\)个/。小红看了小明的程序,觉得太难看了,那么多/,所以决定把这些没用的/都去掉。小红定义了一个宏命令,每次可以将所有连续的\(m\)个/替换成空(注意不是空格)小明得知了小红的企图后非常着急,因为他知道光把/都去掉,那么原......
  • Codeforces Round 941 (Div. 2) cf 941 div2 A~D
    每题都有AC代码在伸缩代码框请留意!!A.CardExchange-------------------------------------------题解----------------------------------选择任意K张相同的牌替换成k-1张任意的牌,也就是说只要有一组牌相同的数量大于k就可以获得最大k-1相同的其他牌,按照这个策略便可以替换掉......