zoukankan      html  css  js  c++  java
  • Atcoder AGC002 解题报告

    (A. Range Product)

    简要题意:

    计算 (prod_{i=A}^{B} i)的正负号。

    题目解法:

    只要对负数范围做一做,入门难度,不写了。

    (B. Box and Ball)

    简要题意:

    (N)个盒子,第一个盒子中有一个红球,其他的都有一个蓝球。
    (M)次操作,每次操作选两个盒子(i)(j),在(i)中随机选一个球放到(j)中。
    问最后红球可能在那些盒子。

    题目解法:

    注意到我们是可以模拟出每一步之后每一个盒子的球数的。
    思考模拟的过程,只要在加上可不可能存在红球这个信息就好了。

    (C. Knot Puzzle)

    简要题意:

    (N)段木头,首尾相接在一起,每一段长度是(l_i)
    每次可以选一个总长不小于(L)的一个连续段,选其中一个交界处砍断。
    问能否把(N-1)个都砍断。

    题目解法:

    如果有解,那么一定存在一个(i),使得(l_i + l_{i+1} ge L)
    那么我们就让这两个的交界最后砍,剩下的从两边开始,一定都能砍完。
    否则显然不行。

    (D. Stamp Rally)

    简要题意:

    一张连通图,(Q)次询问。
    每次询问从两个点(x)(y)出发,希望经过的点(不重复)数量等于(z),经过的边最大编号最小是多少。

    题目解法:

    题意伤。。。注意题目说的是有两个出发点,不规定终止点。。。
    好的,那么我们对于每次询问,二分一个边的最大编号,那么就要求在这个子图中,(x)(y)所在的联通块的并集的大小不小于(z),这个可以用并查集做。
    多次询问用整体二分就可以了,不过并查集要用按秩合并,支持撤销。

    (E. Candy Piles)

    简要题意:

    桌上有(N)堆糖果,第(i)堆糖果有(A_i)个糖。
    两人在玩游戏,轮流进行,每次进行下列两个操作中的一个

    1. 将当前最大的那堆糖果全部吃完
    2. 将每堆糖果吃掉一个

    吃完的人输,假设两人足够聪明,问谁能必胜。

    题目解法:

    按照(A_i)从大到小排序,就构成了一个楼梯形状。
    那么两种操作就相当于删掉最下面一行或最左边一列。
    对应到坐标系上就是从左下角开始,每次向右或向上走,走出边界就算输。
    这个东西可以先打表,发现除了边界那一圈,剩下的都是(SG_{x,y}=SG_{x+1,y+1})
    那么我们就只要求出边界上一个点的(SG)就好了,这个扫一遍就行。

    (F. Leftmost Ball)

    简要题意:

    给你(N)种颜色的球,每个球有(K)个。
    把这(N imes K)个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色)。
    求有多少种不同的颜色序列。

    题目解法:

    凭直觉,先特判掉(K=1)
    合法的序列一定满足任意一个前缀,白色格子的数目不小于颜色数。
    所以我们可以据此设计一个(DP),考虑对一种一种的颜色计数:

    (dp[i][j])表示序列中已经安排了(i)个白色格子,除了白色,还有(j)种颜色的方案数。

    转移就两种:

    1. 新添一个白色格子。
    2. 放置一种颜色的剩下(K-1)个格子。

    具体转移要乘一个组合数,也挺好打的。

  • 相关阅读:
    paxos算法
    List
    es资料汇总
    尚硅谷Kafka
    lostach安装配置
    zookeeper安装
    zookeeper配置详解
    C# 微信企业付款给个人之相关配置
    JS--正则表达式验证
    uniapp小程序--自定义分享标题
  • 原文地址:https://www.cnblogs.com/tacmon52818/p/12712962.html
Copyright © 2011-2022 走看看