合并递归树中相同级别的节点

如何解决合并递归树中相同级别的节点

我了解解决此问题的方法。

问题A。它是同质的吗?

Alex具有大小为N(1≤N≤1000)的1个索引秘密数组A。

您必须猜测A中的所有元素是否都是成对互质的, 就是所有1≤i

gcd(Ai,Aj)= 1。

您最多可以问亚历克斯(Alex)15个问题 {1,2,3,... N}的两个不相交的子集,例如S1和S2,Alex将 计算P1 = ∏ Ai,P2 = ∏ Ai并告诉您(i∈S1i∈S2)gcd(P1, P2)= 1。

为方便起见,Alex将空集的乘积定义为1。

有趣的是,找不到Alex了,取而代之的是我们在这里为您解决此问题的方法。

输入

单个整数N,即数组A的大小,位于 相互作用。请参阅“交互的交互协议”部分 协议。

输出

为清晰起见,请从“交互”进行复制。每个查询的格式为Q I1 I2 I3。 。 。 In(以空格分隔的整数),其中Ij∈{0,1,2}。的 最终答案的格式为“互质数”或“否”。 (阅读互动 协议部分进行说明)

交互协议

对于每个查询,请打印一行格式为Q I1 I2 I3的行。 。 。在太空 分隔的整数),其中Ij∈{0,1,2}至stdout。 •Ifj∈S1,Ij 应该是1。 •如果j∈S2,则Ij应该为2。 •如果jisnotinS1或S2,则Ij应该为0。 然后,从stdin读取一个整数,如果gcd(P1,P2)= 1,则为1。 否则为0。知道答案后,如果显示“ A coprime” 认为A是成对的互质,否则打印“ A no”(不带引号)。

请注意,您不必询问15个问题,您可以打印答案 一知道,然后退出。

此外,在打印完每个查询甚至答案后,您必须执行 在标准输出上冲洗。您可以在C ++中使用fflush(stdout)和google查找 在其他语言中有效的方法。

但是我在实现算法和解决问题时遇到了麻烦。

我的工作:将秘密阵列分为两个较小的阵列,分别形成S1和S2。如果在线判断器的输出为1,则继续将每个较小的数组像较大的数组一样划分。这一直持续到我们得到一个单独占用的数组为止。如果判断输出在任何时候为0,则整个程序终止并输出:“ A否”。这是O(N),我为此编写了以下代码:

#include<iostream>

using namespace std;

bool ask(int n,int start,int end)
{
    if (end-start == 0)
        return true;
    int middle = (start+end)/2;
    cout<<"Q"<<" ";
    
    for (int i=1;i<=start-1;i++)
        cout<<0<<" ";
    for (int i=start;i<=middle;i++)
        cout<<1<<" ";
    for (int i=middle+1;i<=end;i++)
        cout<<2<<" ";
    for (int i=end+1;i<=n;i++)
        cout<<0<<" ";
    cout<<endl;
    int answer;
    cin>>answer;
    if (answer == 1)
        return (ask(n,start,middle) and ask(n,middle+1,end));
    else 
        return false;
}

int main()
{
    int n;
    cin>>n;
    if (ask(n,1,n) == true)
        cout<<"A coprime"<<endl;
    else
        cout<<"A no"<<endl;
    return 0;
}

但是,这显然需要进一步优化,并且可以通过将所有第n个层节点的第一个数组作为S1并相应地将第二个数组作为S2来组合第n个层节点(代表阵列的第n级分解)来实现。这具有时间复杂度O(logN),并且应该可以工作。

但是我在实现它时遇到了问题,因为它要求计算机记住所有的第n级节点并将它们组合在一起,因此很难像我那样递归地解决。

请注意:这出现在CodeForces上的2016 Exun Prelims中,我这样做只是出于学习的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-