zoukankan      html  css  js  c++  java
  • A|GC003

    AGC003


    A Wanna go back home

    = =

    https://agc003.contest.atcoder.jp/submissions/7910739

    B Simplified mahjong

    直接腾讯。

    https://agc003.contest.atcoder.jp/submissions/7910863

    C BBuBBBlesort!

    考虑将(a)分成(L=a[::2])(R=a[1::2]),这两个序列可以不消耗代价随意打乱,或者可以交换(L_i)(R_i)

    所以如果从两个序列中分别拿出一个元素交换代价是(1)

    计算有多少起始序列!=目标序列的数,答案就是(lfloor cnt/2 floor)

    https://agc003.contest.atcoder.jp/submissions/7910962

    D Anticube

    对每个数(x=Pi p_i^{e_i}),将其变成最简形式(Pi p_i^{E_i=e_imod 3})不影响答案

    然后一个数(x=Pi p_i^{E_i})对应的满足(xy)是完全立方数的(y)只有一个,那就是(Pi p_i^{-E_imod 3})

    对每个数计算一下出现了几次,如果它和另一个数互斥,则删掉数量较小的那一堆

    (特判一下,如果有一堆化简后是(1)就代表都是完全平方数,会和自己互斥,这一对只能随便选(1)个)

    E Sequential operations on Sequence

    毒瘤

    对于缩小操作,那么前面一些操作会没用,先用一个单调栈去除掉无用操作,这样(q)就单调递增了

    从后往前考虑,每次拿出最后一个操作,计算它对答案的贡献

    (q_i)会从(q_{i-1})循环复制过来,就会被分成很多个(q_{i-1})和一段前缀

    维护一个(mul_i),这差不多是一个标记,表示最后的序列会加上(mul_icdot A[1,q_i])

    (最后序列加上(kcdot A[1,r])的意思是会再出现(k)个和(A[1,r])一样的数

    具体要实现这样一个函数:(work(p,M)),表示最后序列加上(Mcdot A[1,p])

    如果(pleq q_1)(q_1)一定不大于(n))那么(ans_1)(ans_p)要加上(M)

    否则和前面一样的,找到第一个可行的操作,然后递归下去

    具体看代码= =

    https://agc003.contest.atcoder.jp/submissions/7917606

    F Fraction of Fractal

    神题Orz

    首先特判掉一些情况:

    • 上下连通(上下拼起来仍连通)且左右连通,那么最后一定依然连通,输出1
    • 上下,左右都不连通,那么最后每次分形都不会有连通块接在一起,答案是(cnt_1^{K-1})

    现在只有一种情况:左右连通(上下的话翻过来

    1e18显然要矩乘dp,设(f_{i,0})表示(i)层分形图的连通块数,(f_{i,1})表示((在当前图形最左有东西)和(如果左右拼这个图形,该连通块会和更左边一个连通块拼接(这个连通块可能是自己也可能是原来最右边的连通块)))的(x)连通块数

    现在是转移,

    (f_{i,1}=f_{i-1,1} imes c)(c)为在初始图形最左和最右都有东西的(x)坐标数

    (f_{i,0}=f_{i-1,0} imes cnt_1-f_{i-1,1} imes a)(a)为初始图形左右相邻两个坐标都是1的方案数

    就可以矩乘了

    https://agc003.contest.atcoder.jp/submissions/7919234

  • 相关阅读:
    浙大PAT CCCC L3-001 凑零钱 ( 0/1背包 && 路径记录 )
    二分图匹配
    Codeforces 939E Maximize ( 三分 || 二分 )
    冲刺第二周第七天
    冲刺第二周第六天
    冲刺第二周第五天
    构建之法阅读笔记04
    冲刺第二周第四天
    构建之法阅读笔记03
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/xzz_233/p/11644709.html
Copyright © 2011-2022 走看看