题目描述:

vjudge

题解:

STO ljx OTZ

下面这个算法是这位贡献的。


不妨将删去改为加入。

那么对于$n=p^k$,即只有一个质因子的$n$来说,若$i$已选,那么$i+n/p$、$i+2*n/p$……都必选。

这个先感性理解一下。

根据这个可以$O(n)$出解。

再看$n=p1^{k1}*p2^{k2}$,即有两个质因子。

对于已选点$i$有两种选择,一种是$i+n/p1$、$i+2*n/p1$……都选,另一种是$i+n/p2$、$i+2*n/p2$……都选。

这个可以将原来的$n$个点分成$n/p1/p2$组,每组都两种选择,即要么分$p1$小组,要么分$p2$小组。

时间复杂度貌似也是$O(n)$??!

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
int n,k,m[],c;
bool vis[N],vis1[N],vis2[N];
void init()
{
int n0 = n;
for(int i=;i*i<=n0;i++)if(n0%i==)
{
m[++c] = i;
while(n0%i==)n0/=i;
}
if(n0!=)m[++c]=n0;
}
int cxk(int x){return x<n?x:x%n;}
int sta[N],tl;
int main()
{
read(n),read(k);init();
if(c==)
{
int ans = ;
for(int x,i=;i<=k;i++)
{
read(x);x--;vis[x]=;
if(!vis1[x])
{
vis1[x] = ;ans += m[];
int j = cxk(x+n/m[]);
while(j!=x)vis1[j]=,j=cxk(j+n/m[]);
}
}
if(ans==n)puts("-1");
else
{
printf("%d\n",ans-k);
for(int i=;i<n;i++)if(!vis[i]&&vis1[i])
printf("%d ",i+);
puts("");
}
return ;
}else
{
for(int x,i=;i<=k;i++)
{
read(x),x--,vis[x]=;
if(!vis1[x])
{
for(int j=x,k=;k<=m[];j=cxk(j+n/m[]),k++)vis1[j]=;
}
if(!vis2[x])
{
for(int j=x,k=;k<=m[];j=cxk(j+n/m[]),k++)vis2[j]=;
}
}
for(int i=;i<n/m[]/m[];i++)
{
int c1 = ,c2 = ;
for(int j=i,k=;k<=m[]*m[];j=cxk(j+n/m[]/m[]),k++)
{
if(!vis[j]&&vis1[j])c1++;
if(!vis[j]&&vis2[j])c2++;
}
if(c1<c2)
{
for(int j=i,k=;k<=m[]*m[];j=cxk(j+n/m[]/m[]),k++)
if(!vis[j]&&vis1[j])sta[++tl]=j+;
}else
{
for(int j=i,k=;k<=m[]*m[];j=cxk(j+n/m[]/m[]),k++)
if(!vis[j]&&vis2[j])sta[++tl]=j+;
}
}
if(tl+k==n)puts("-1");
else
{
sort(sta+,sta++tl);
printf("%d\n",tl);
for(int i=;i<=tl;i++)
printf("%d ",sta[i]);
puts("");
}
}
return ;
}

URAL1765 Error 404的更多相关文章

  1. sqoop:Failed to download file from http://hdp01:8080/resources//oracle-jdbc-driver.jar due to HTTP error: HTTP Error 404: Not Found

    环境:ambari2.3,centos7,sqoop1.4.6 问题描述:通过ambari安装了sqoop,又添加了oracle驱动配置,如下: 保存配置后,重启sqoop报错:http://hdp0 ...

  2. 小心sae的jvm异常导致的Error 404 – Not Found.No context on this server matched or handled this request.

    本来用着sae好好的,结果第二天部署的应用突然不好使了,各种Error 404 – Not Found.No context on this server matched or handled thi ...

  3. 【技术贴】解决支付宝充值信用卡还款跳转到网上银行报错Error 404 - Not Found

    声明 : 本文在 GFDL 1.2 下发布,本文出处光大银行信用卡  http://bbs.090989.com/forum-186-1.html http://androidgao.blogspot ...

  4. 解决Angular2 (SystemJS) XHR error (404 Not Found) loading traceur

    初学Angular2,跟着Angular2中文网学到HTTP这一节时出现了一个异常: GET http://localhost:3000/traceur 404 (Not Found) Error: ...

  5. tomcat配置问题:访问http://localhost:8080/ 遇到 Access Error: 404

    win7: 8080端口已经被其他应用使用,比如nixxxxxxxxxxxxx When I had an error Access Error: 404 -- Not Found I fixed i ...

  6. Promise is rejected: Error: 2 UNKNOWN: error starting container: API error (404): {"message":"network build-blockchain-insurance-app_default not found"}出错的解决方案

    错误描述: docker logs web 现象: > blockchain-for-insurance@2.1.0 serve /app > cross-env NODE_ENV=pro ...

  7. 解决近期linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法

    本文转载自:http://tech.lezi.com/archives/47 最近两天使用yum的163源,出现404错误 [root@localhost yum.repos.d]# yum make ...

  8. vue-cli从2升级到3报错error 404 Not Found: @wry/context@^0.4.0

    vue3出来了,想尝尝鲜. 于是按官方的方法卸载2安装3. npm uninstall vue-cli -g npm install -g @vue/cli 但是报错了 error 404 Not F ...

  9. 安装docker报错:https://download.docker.com/linux/centos/7/i386/stable/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"

    如题,执行docker安装命令报错: [root@centos ~]# yum install docker-ce Loaded plugins: fastestmirror, security Se ...

随机推荐

  1. [Xcode 实际操作]九、实用进阶-(8)实现App的Setting设置:添加和读取程序的配置信息

    目录:[Swift]Xcode实际操作 本文将演示如何实现添加和读取程序的配置信息. 在项目文件夹[DemoApp]上点击鼠标右键->[New File]创建一个设置束文件 ->[Sett ...

  2. linux命令行挂载NTFS文件系统的移动硬盘

    环境 ubuntu 12.04 桌面版 由于我的ubuntu 是安装在vmware 上,如果接入移动硬盘后,它没有办法自动识别ntfs 格式的文件系统,导致mount 盘失败 从网上找到一个方法 首先 ...

  3. C 语言实例 - 字符串复制

    C 语言实例 - 字符串复制 C 语言实例 C 语言实例 将一个变量的字符串复制到另外一个变量中. 实例 - 使用 strcpy() #include <stdio.h> #include ...

  4. PostgreSQL-13-缺失值处理

    -- 1.查看缺失值CREATE TABLE dnull AS SELECT * FROM data; -- 复制数据SELECT * FROM dnull WHERE 房屋编码 IS NULL OR ...

  5. Jmeter(二十三)稳定性测试后的波形图

    jmeter-plugins.org 这个网站为 JMeter 提供了一些增强型功能的插件,使用起来就像 Eclipse 装插件一样,完全做到了插件的可插拔特性.本文简要介绍如何使用这些插件让你的 J ...

  6. Appium禁止appium setting和unlock在设备上重复安装

    1.文件:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-dri ...

  7. DTO和ViewModel的区别

    Data Transfer Object 数据传输对象 ViewModel 视图实体(我们在新建MVC项目是会发现Model文件夹下会有一些ViewModel实体) 简单的理解一下两者之间的区别,举个 ...

  8. 修改Azure Website默认时区

    Azure Website默认时区为国际标准时间,对中国用户来说不太方便友好,如何设置成北京时间呢? 打开Azure Website的“配置”页,找到“应用设置”节点. 在应用设置中添加设置项,密钥为 ...

  9. C#入门笔记2 变量

    变量关系到数据的存储,一个供程序操作的存储区的名字,每一个变量都一个特定的类型,类型决定变量的内存大小和布局. 注:必须一定要先声明,赋值后,才能使用. 变量声明 三种声明方式: 1.先声明,后赋值. ...

  10. YDKJ 读书笔记 01 Function vs. Block Scope

    Introduction 本系列文章为You Don't Know JS的读书笔记. 书籍地址:https://github.com/getify/You-Dont-Know-JS Scope Fro ...