首页 > 其他分享 >AGC12C Tautonym Puzzle

AGC12C Tautonym Puzzle

时间:2023-05-15 13:33:35浏览次数:54  
标签:log Tautonym Puzzle 构造 AGC12C 序列 100

AGC012C Tautonym Puzzle

考虑在 \(A\) 的前 \(100\) 位递增地填上 \(1 \to 100\)。

如果我们限制 \(A\) 的后 \(100\) 位里,\(1 \sim 100\) 每个数最多出现一次。后 \(100\) 位可以不填满。

那么 \(A\) 中好的子序列数量,就是后 \(100\) 位里严格上升子序列的数量。

问题转化成:构造一个序列 \(B\):

  • \(1 \sim 100\) 每个数最多出现一次。
  • 严格上升子序列数等于 \(N\)。

构造方式如下:

枚举 \(x\) 从 \(1 \to 100\),将 \(x\) 插入 \(B\) 中。

将 \(x\) 插入 \(B\) 的后侧,会让 \(B\) 的严格上升子序列数 \(\times 2\)。

将 \(x\) 插入 \(B\) 的前侧,会让 \(B\) 的严格上升子序列数 \(+1\)。

将 \(N\) 二进制拆分即可。上面的 \(x\) 最多运行到 \(2\log N\) 就能构造成功了。

构造出来的 \(B\) 长度 \(2\log N\),对应 \(A\) 的长度 \(100 + 2\log N\)。

如果最开始的时候只将这 \(2\log N\) 个数递增地放在 \(A\) 的最开始,可以做到串长 \(4\log N\)。

构造时间复杂度 \(\Theta(\log N)\)。

标签:log,Tautonym,Puzzle,构造,AGC12C,序列,100
From: https://www.cnblogs.com/crab-in-the-northeast/p/agc12c.html

相关文章

  • A hard puzzle
    AhardpuzzleTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):30832AcceptedSubmission(s):11063ProblemDescriptionlcygivesahardpuzzletofeng5166,lwg,JGShiningandIgnatius:gaveaandb,howto......
  • POJ - 1651 Multiplication Puzzle(区间dp)
    题目大意:给你N个数,每次可以选择一个数进行剔除(第一个和最后一个不能选择),选出该数后,sum+=该数左边的数*该数*该数右边的数问最小的sum是多少解题思路:用dp[i][j]表示[i,j]区间被剔除得只剩下i,j的最小sumdp[i][j]=dp[i][k]+dp[k][j]+num[i]*num[k]*num[j]#include......
  • ℬ悟透C++┇Puzzle记录
    C++Puzzles★1.有如下代码,问:ptr指向了谁?能通过ptr调用Derived类重写的函数吗(即多态还起作用吗)?dynamic_cast到底是什么作用?ptr2与ptr性质是一样的吗?Derived*derived=ne......
  • HDOJ1097 A hard puzzle
    AhardpuzzleTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):46236    AcceptedSubmission(s):......
  • Codeforces Global Round 14, B. Phoenix and Puzzle
    problemB.PhoenixandPuzzletimelimitpertest2secondsmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputPhoenixisplayingwitha......
  • HDU1098 Ignatius's puzzle (数学归纳法)
    Description:Ignatiusispooratmath,hefallsacrossapuzzleproblem,sohehasnochoicebuttoappealtoEddy.thisproblemdescribesthat:......
  • poj1651 Multiplication Puzzle--区间dp
    原题链接:​​http://poj.org/problem?id=1651​​题意:给出N个数,每次从中抽出一个数(第一和最后一个不能抽),每次的得分为抽出的数与相邻两个数的乘积,直到只剩下首尾两个数为......
  • 谜题(Puzzle)
    PuzzleTimelimit:3.000secondsPuzzleAchildren'spuzzlethatwaspopular30yearsagoconsistedofa5x5framewhichcontained24smallsquaresofequalsize.A......
  • A Number Puzzle
    题目:题解:全排列函数#include<bits/stdc++.h>usingnamespacestd;inta[15];intans[10000005];intmain(){intn,m;while(scanf("%d%d",&n,&m)!=EOF){......
  • CCPC 2022桂林 J.Permutation Puzzle
    模拟赛的时候这道题细节写挂了,硬是调不出来。。。首先想到拓补排序。然后可以发现,正反各跑一次可以获得每个点的取值范围,即上界和下界。(特殊地,对于已知点,其上下界相等且等......