首页 > 其他分享 >Codeforces Round 969 (Div. 1 + 2)

Codeforces Round 969 (Div. 1 + 2)

时间:2024-09-04 16:25:05浏览次数:5  
标签:969 Codeforces 叶子 先手 Div 贡献 节点

A

将序列转化为 \(01\) 串,奇数为 \(1\),偶数为 \(0\)。
容易发现两个 \(0\) 不能分在同一组,于是答案的上限取决于奇数的个数,并且容易构造方案达到这个上界,随便做做就行。

B

将序列排序后,发现不管怎么加,大小顺序不变,记录下最大值按题意模拟。

C

根据基本数论知识可得,操作等价于加上 \(\gcd(a,b)\),所以在 \(\bmod (a,b)\) 意义下数不变,记录一下所有数枚举断点。

D

容易发现产生贡献只能是根节点和叶子结点的值不一样。

将问题转化为一堆叶子未确定和一堆叶子已确定。

当根节点是确定的,而且先手先填,所以如果有 \(x\) 个问号,那么先手可以多拿 \(\lceil\frac{x}{2}\rceil\) 个贡献。

否则,就要开始分讨,我们先要证明一个引理,就是先手和后手他们填的数不可能相同。证明也很简单,他们可以进行反悔,如果给对手多了一个贡献,那么他可以回之前操作取消。

因此,如果叶子里面 \(0\) 和 \(1\) 个数不同时,先手会优先把根节点选好,然后对于问号,只能拿 \(\lfloor\frac{x}{2}\rfloor\) 贡献。

相同时就大家都不选根节点,选完其它叶子结点再选根节点最优。

E

容易发现一条链只有所有边都被确定时才达不到上界。由于点是 \(\texttt{dfn}\) 序,有查询相邻节点,所以一条边只会经过两次,暴力维护即可,思维难度不如 D。

F

赛时止步于此。

标签:969,Codeforces,叶子,先手,Div,贡献,节点
From: https://www.cnblogs.com/g1ove/p/18396792

相关文章

  • Codeforces Round 971 (Div. 4)
    A-Minimize!inlinevoidsolve(){ inta,b; cin>>a>>b; cout<<b-a<<'\n';}B-osu!maniainlinevoidsolve(){ intn; cin>>n; vector<string>a(n); for(auto&x:a){ cin>>x......
  • Codeforces Round 971 (Div. 4) A-G1
    Ab-a#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;mt19937rnd(time(0));#defineintlonglongtypedeftuple<int,int,int>tp;#definexfirst#defineysecondtypedefpair<int,int>pii;typedefpair<double,double......
  • Educational Codeforces Round 169(A-D)
    A.ClosestPoint        给你一组点。你必须在这个集合中加入一个整数的点,使它与集合中现有的每一个点不同,并且它成为与集合中每一个点**最近的点。这可能吗?(输入yesorno)    一道思路题,简单思考可以发现,如果数字超过两个,那么这题答案就是NO。当两个数字的......
  • Codeforces Round 966 (Div. 3)
    ab略...C:map嵌套水过去的,复杂度\(nlog^2n\),感觉不如正解#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definepiipair<int,int>#definemkpmake_pair#definefirfirst#definesecsecond#definepbpush_backconstintmaxn=2e5+100;......
  • Codeforces Round 970 (Div. 3)(VP)
    A.Sakurako'sExam总结:一看n<=20,直接暴力+剪枝即可inlinevoidsolve(){ inta,b; cin>>a>>b; vector<int>d; d.reserve(a+b); while(a--){ d.push_back(1); } while(b--){ d.push_back(2); } autodfs=[&](auto&......
  • Codeforces Round 968 (Div. 2)
    vp的,老规矩跳过abC:根据题意我们知道三个不一样的字母连续放一定可以,然后观察样例发现好像把两个不同的字母轮流放也可以。进一步猜测(瞎猜的)发现这个好像只要把不同的挨个放进去就行了(本来以为可能要按数量排序但是似乎根本不用),最后剩下的全放一起也没事。然后就过了。#includ......
  • Codeforces Round 970 div3
    CodeforcesRound970div3错过的一场比赛,第二天早晨VP,题目的通过率还挺奇怪A.Sakurako'sExamhttps://codeforces.com/contest/2008/problem/A题意:有a个1和b个2的数组,在1和2前面增添加减号,判断是否能让结果为0思路:1个2需要2个1进行填补,不如先让2自己进行消去,如......
  • Codeforces Round 969 Div.2+Div.1
    A.Dora'sSet注意到任意两个偶数的\(\gcd\)都大于\(1\),因此选择的三个数中至多一个偶数,而注意到相邻的奇数一定互质,因此每次选两个奇数一个偶数,答案=奇数的个数÷2点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsigned......
  • codeforces做题记录(1924B)& 回顾线段树
    1924B.SpaceHarbour题意:n个点排成一行,其中某些点上面建有港湾,港湾有一个权值,对每个点我们定义点的权值为“左边(包括自己)第一个港湾上的权值\(\times\)到右边(包括自己)第一个港湾的距离”(保证在一开始1号和n号点上都有港湾)。有q次操作:操作1给定x和v,表示在x点上建立权值为v的......
  • Codeforces Round 969 (Div. 2)
    ab题没啥好说的,b题一开始看题错成线段树了,后面发现维护最大值就过了(我就说b怎么会有线段树)。。。C:DoraandC++卡的我死死的,好久没卡c了,数论果然是最短板。。。我有两个推论,但是一个都不会用:1.翡蜀定理。(但是这题只有正数)(处理两个数的情况)2.断环为链。(但是我只会n方,即以每个......