首页 > 其他分享 >CF1312C Adding Powers 题解

CF1312C Adding Powers 题解

时间:2024-03-03 18:49:05浏览次数:16  
标签:Adding 题解 元素 若干次 序列 Powers neq

题意:

对于一个初始全 \(0\) 的序列,问是否能够进行若干次操作(第 \(i\) 次操作为对序列中任意一个元素增加 \(k^i\)),使得此序列变为目标数组 \(a\)。


首先,我们令需要进行操作的序列为 \(b\)。

我们知道,如果能通过若干次操作将 \(b\) 变为 \(a\),则有以下三种情形:

  • \(a\) 中的元素全 \(0\)(初始时就达成了);

  • \(k=1\)(此时 \(k\) 的任意次方均为 \(1\));

  • 满足对于所有的 \(1 \le i \le n\),都有 \(a_i = k^{x_1} + k^{x_2} + ... +k^{x_y}\),且 \(x_1 \neq x_2 \neq ... \neq x_y\)(即 \(a\) 中的每个元素均可以被表示为 \(k\) 的若干次幂之和,并且这些指数均不相同)。

于是,我们首先特判前两种情形,再朴素地对于 \(a\) 中的某个元素去分解成若干个 \(k\) 的次幂之和,判断指数是否有重复即可。时间复杂度 \(O(n \log A)\),其中 \(A\) 表示 \(\max\{a_i\}\)。

核心代码(用于将元素分解成若干个 \(k\) 的次幂之和,并判断指数是否重复):

bool check(int x){
	while(x){
		int base=1,power=0;
		while(base<=x) base*=k,power++;
		base/=k,power--,x-=base,vis[power]++;
		if(vis[power]>1) return 0;
	}
	return 1;
}

标签:Adding,题解,元素,若干次,序列,Powers,neq
From: https://www.cnblogs.com/XOF-0-0/p/18050448

相关文章

  • P8598 [蓝桥杯 2013 省 AB] 错误票据 题解
    思路考虑将\(id\)从小到大排序,然后从\(2\)下标开始扫描一遍\(id\)数组,若当前的\(id_i-id_{i-1}>1\),则说明当前\(id\)存在断号,输出\(id_i-1\);若当前的\(id_i=id_{i-1}\),则说明当前\(id\)存在重号,输出\(id_i\)。注意断号与重号需要分开计算。#include<b......
  • P9185 [USACO23OPEN] Rotate and Shift B 题解
    首先,我们很容易就能得出一个显而易见的结论:若令原数组为\(order\),\(K\)个活跃位置分别为\(A_1,A_2,...,A_K\),则\[order_{A_1}\toorder_{A_2},order_{A_2}\toorder_{A_3},...,order_{A_K}\toorder_{A_1}\]的操作就等价于将\(order\)数组顺时针旋转\(x\)次,即\[orde......
  • CF1833G Ksyusha and Chinchilla 题解
    首先,若\(n\bmod3\neq0\),则一定无解。考虑\(n\bmod3=0\)的情形:首先肯定是先进行一遍树形dp,求出树上每个节点\(x\)的子树大小\(size_x\)。若当前节点的\(size\)值\(=3\),则说明需要切断当前节点于其父节点的连边,使得其子树成为一个大小为\(3\)的单独连通块。......
  • ABC343 G Compress Strings 题解
    QuestionABC343GCompressStrings给定\(N\)个字符串\(S_1,S_2,\cdots,S_N\)找到一个包含所有这些字符串作为子字符串的最小长度的字符串一个字符串\(S\)包含一个字符串\(T\)作为子字符串是指:如果\(T\)可以通过从\(S\)的开头删除零个或多个字符以及从末尾删除......
  • AT_abc184_f [ABC184F] Programming Contest 题解
    题目传送门前置知识Meetinthemiddle解法非正解当成超大背包来做,暴力枚举每个数是否进行相加。时间复杂度为\(O(2^{n})\)。llp[50],ans=0;voiddfs(llx,lln,llm,llworth){ if(x==n+1) { if(worth<=m) { ans=max(ans,worth); } } else { if(wo......
  • PowerShell中,你可以使用以下命令来操作Windows防火墙并记录流量信息
    在PowerShell中,你可以使用以下命令来操作Windows防火墙并记录流量信息:操作Windows防火墙:查看当前的防火墙规则:powershellCopyCodeGet-NetFirewallRule创建新的防火墙规则:powershellCopyCodeNew-NetFirewallRule-DisplayName"MyFirewallRule"-DirectionInbound-A......
  • Powercat 是 Netcat 的 PowerShell 版本
    Powercat是Netcat的PowerShell版本。支持Powershell版本2及更高版本。安装powercat是一个PowerShell函数。在执行之前,您需要先加载这个函数。您可以将以下命令之一放入您的PowerShell配置文件中,这样在PowerShell启动时就会自动加载powercat。从下载的.ps1文......
  • P2532 [AHOI2012] 树屋阶梯 题解
    P2532[AHOI2012]树屋阶梯题解容易发现答案是卡特兰数,那么考虑证明这一点。考虑从左下角到右上角填满格子。利用动态规划的思想,回忆一下某道\(IOI\)的题目[数字三角形],每个格子的方案都只能由其左边或下边转移而来。可以结合图理解一下。好,刚才这个定义显然很符合卡特兰......
  • CF1931G One-Dimensional Puzzle 题解
    CF1931GOne-DimensionalPuzzle题解题意传送门思路考虑一下怎么入手,发现一个拼图只能接一些拼图(废话但是有用),所以我们可以简单地画出一个链接关系的图,\(u\tov\)表示编号为\(u\)的拼图后面能够接编号为\(v\)的拼图。然后我们发现问题转换为:......
  • AT_joig2021_d 展覧会 2 (Exhibition 2) 题解
    题目传送门前置知识二分答案解法最小值最大,考虑二分答案。关于check函数的书写,比luoguP1182数列分段SectionII多了个对位置的判定,注意对当前是第一次展出时进行特判。代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsigne......