首页 > 其他分享 >CF vp合集

CF vp合集

时间:2024-03-02 17:56:08浏览次数:12  
标签:log max CF mid vp popcount 分讨 考虑 合集

CF1936/1937

B

考虑计数只需要找到最后一个拐点和第一个拐点。

C

可以先花 \(n\) 次找到最大数,然后找一些位置 \(j\) 使得 \((p_i=n-1)|p_j\) 最大,最后找到最小的 \(p_j\)。考虑为啥是对的,因为得让异或最大,而且是排列,所以其中一个取最大不劣。然后找另一个能尽量填补0的位置的数。

D

重了 CF733E。

官方题解带 \(\log\),非常无脑。其实把二分改成两个方向的队列维护即可线性。但是不会询问不独立。

E

不是看了眼 U 群完全不会。

首先 hint 1 是显然的。

考虑建图,答案为 1 到 n 的最短路。但是边的级别是 \(n^2m\) 的,不可接受。

考虑把每个属性拉出来建图,对每个人的该属性排序,然后对相邻的点连一条边权为该属性之差的边。跑最短路即可。注意到预处理需要对自身连边。

F

感觉时间够是会的。

肯定想到拆位维护 b 的按位或值。

考虑如何合并。

维护每段最前/后的 1 的位置。

记 \([l,mid].lastone=a,[mid+1,r].firstone=b\)。

如果 \(\max(a\to mid)\le \max(mid+1\to b)\),肯定贪心的选 a,否则选 b。
max a 可以用 ST 表,于是拆位算贡献即可。

复杂度 \(O(q\log n\log v)\)。

CF1934

A

拆贡献。

B

可以 dp 较小的一段,剩下的直接用 15.

C

查询三个角,死亡分讨。

D1

考虑如果一个数是形如 \(2^x\) 的形式显然无解。

消掉高位的第一个 1 之后,构造 \(y\) 使得 \(y=2^t-1\),对于 \(y\) 分讨。

\(y<m\) 肯定无解,\(y>m\) 说明肯定能构造出 \(m\)。

D2

D1 中发现 \(2^x\) 是必败态。

于是可以知道 \(popcount(x)\) 是偶数时先手必胜。

考虑先手处于必胜只需要每次拆那个 popcount 为偶数的数就行了。

标签:log,max,CF,mid,vp,popcount,分讨,考虑,合集
From: https://www.cnblogs.com/lgh-blog/p/18048983

相关文章

  • CF1856E1 PermuTree (easy version) 题解
    假定当前在节点\(u\),它拥有两棵子树\(v,w\),此时\(u\)是\(\operatorname{lca}(v,w)\)。我们一定可以构造出一个排列\(a\),使得所有满足\(i\inv\)的节点\(i\)和满足\(j\inw\)的节点\(j\),有\(a_i<a_u<a_j\)。因此此时点\(u\)对于答案的贡献即为\(size_v\times......
  • AtCoder DP Contest vp 记录
    题单。A从\(i-1\)与\(i-2\)转移即可。#include<bits/stdc++.h>usingnamespacestd;intn;inth[100031];intdp[100031];intmain(){ cin>>n; for(inti=1;i<=n;i++)cin>>h[i]; memset(dp,0x3f,sizeof(dp)); dp[1]=0; for(inti=1;i<......
  • CF15E
    参考(先看)这个题解最后的式子写错了,看最后(注意一下算层数要n/=2!)这里面关于\(ans\)的用法:为什么是\(2\timesans^2+8\timesans+10\)已经讲得很清楚了。主要补充一下怎么求\(ans\)的部分。如图,三个决策点的所在部分可以视作一个三角形+若干个斜着的梯形。经过这......
  • CF809D
    传送门平衡树优化神题,完全想不到平衡树能这么用!一看这题散发着一股DP的清香。\(dp[i][j]\)表示前\(i\)个数且第\(i\)个数为\(j\)的最长上升子序列长度。但是转移方程不好优化,状态表示可以滚动数组压掉一维。反方向考虑DP:\(dp[i][j]\)表示前\(i\)个数最长上升子序......
  • CF1915D Unnatural Language Processing 题解
    容易发现音节的划分不仅要求子串形如\(\texttt{CV}\)或\(\texttt{CVC}\),并且接下来的两个字符也必须是\(\texttt{CV}\),不然会导致无法划分下去。于是我们遍历字符串,找出所有满足上述条件的子串,记录需要输出\(\texttt{.}\)的位置即可。实现:intn;strings,ans,t="";cin>......
  • CF1915E Romantic Glasses 题解
    我们考虑维护\(sum_i\)表示前\(i\)个数中偶数下标的数之和与奇数下标的数之和之差,其中\(sum_0=0\)。若在某一时刻,有\(sum_i=sum_j(j<i)\),说明\(j\simi\)中偶数下标的数之和与奇数下标的数之和之差为\(0\)。这个使用map判断即可。实现:intn,f=0;cin>>n;m.clear()......
  • CF1921D Very Different Array 题解
    补充一个对本题贪心思路更(?)清楚的解释。本题贪心思路:在\(a_i,b_i\)分别升序的情况下,对于每个\(a_i\),与它差值最大的\(b_i\)只可能出现在\(b_{n-i+1}\)与\(b_{m-i+1}\)这两者中。证明:首先,假设我们有一个长度为\(n\)的升序序列\(s\)。则对于\(s_1\),与它差值最大......
  • CF10E 题解
    传送门有\(n\)种货币。找一个最小的金额\(x\),使得贪心法付款不是最优解;如果贪心法始终都是最优解,输出\(-1\)。\((n\le400)\)将货币集合记作一个\(n\)维向量\(C=(c_1,c_2,\dots,c_n)\)。对于金额\(x\)的一个表示法,也记作一个\(n\)维向量\(V\)。即\(C\timesV=x\)。......
  • CF79D
    传送门题意:初始有\(n\)个\(0\),给定一个序列\(a\),每次可以选择一个长度为某个\(a_i\)的区间,将其全部取反。再给定一个序列\(x\),要求最后的状态是只有\(x\)中的位置是\(1\)。问最小步数/判断无解。范围:\(n\le10000,|a|=l\le100,|x|=k\le10\)。关于区间取反的,考虑差......
  • CF17C
    传送门定义一个字符串\(S\)的缩字符串\(S':\)把\(S\)中所有连续的相同字符变成\(1\)个。发现通过复制操作,若\(A\)能变成\(B\),则\(B'\)一定是\(A'\)的子序列;反之,如果\(B'\)是\(A'\)的子序列,\(A\)能复制成\(B\)。因此我们考虑求出\(A'\),然后选出\(B\),同时......