zoukankan      html  css  js  c++  java
  • AGC010

    AGC010


    A

    【过水已隐藏】

    B

    这题推完了还是不会/kk真的毒瘤

    考虑每次会减少的总和是(n(n+1)/2),用原来的和除以这个可以得到操作次数(m)(不是整数无解)

    再考虑相邻两个数(a_i,a_{i+1}),考虑它们的差,设为(d=a_i-a_{i+1})

    一次操作有两种情况,一是(Delta a_i=-j,Delta a_{i+1}=-j-1),会让(d)增加1。

    二是(Delta a_i=-n,Delta a_{i+1}=-1),会让(d)增加(1-n)

    考虑任意两个相邻数,有一个初始的(d_0),然后操作(m)次若有(a)个操作二会让(d_0)增加(m-na),为了让最终(d_0)恰好为(0)算出(a=frac{m+d_0}{n}),不是整数或(<0)无解

    还有一个限制就是(sum a)应该是(m),不过这个肯定可以满足不用判

    C

    以每个点为LCA的点对可以根据已知信息算出(判无解),现在只需要在每个点判断是否能在这个点按要求配对救星了

    就是有数组(a)(m)次选两个不同的(i,j),让(a_i--,a_j--),最终(a)非负

    这个很好判,按照最大值和其它的和比较一下就能知道最多能配出多少对

    D

    后面全提姆博弈题= =zbl

    一堆结论:

    1. 不考虑除(gcd),如果开场有奇数个偶数是先手必胜,否则先手必败
    2. 必胜/必败态只和奇偶有关所以不必考虑(gcd)是奇数的情况
    3. (gcd=1)可推出至少一个奇数
    4. 如果一开始至少有一个(a_i=1)那么可以根据1直接确定答案了
    5. 如果有奇数个偶数的话可以操作一个偶数,然后会剩下(2)个奇数,之后先手可以一直操作保证(gcd)为奇,根据2和3先手必胜
    6. 如果有至少(2)个奇数和偶数个偶数那么先手操作完之后转到5,先手必败
    7. 否则只可能只有(1)个奇数,和偶数个偶数,先手操作偶数会转到5,所以先手只能追逐梦想操作那个奇数,操作完后所有数至少除以(2),所以可以直接暴力递归下去

    E

    zbl*2

    显然先建一个图,不互质的数之间连边,先手选完序列后边会定向(当然无环),后手只能按照这个拓扑排序

    yyb:先手肯定想要拉一条字典序最长的链,所以dfs一遍就行了

    我觉得很有道理。

    F

    zbl*3

    枚举每个点,如果以它作为根,最优方法走到它时只会走到(A)比它小的节点,因为如果你这样走,对面可以直接移回来你就很尴尬。

    所以到了一个点就不能回父亲(走过来就是因为这个点(A)更小)

    然后都是抄yyb的我也不知道为什么。

  • 相关阅读:
    php 元字符与转义
    php内置函数
    php系统常量
    WPF 批量修改控件属性
    对实体属性值赋值(DATASET转list)
    WPF 进度条实现
    WPF 异步刷新主界面
    c# 依赖注入Export ImportMany
    Oracle 正则匹配实现字符拆分
    Oracle 获取表对应列信息和索引信息
  • 原文地址:https://www.cnblogs.com/xzz_233/p/11710083.html
Copyright © 2011-2022 走看看