URAL1765 Error 404
题目描述:
题解:
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的更多相关文章
- 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 ...
- 小心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 ...
- 【技术贴】解决支付宝充值信用卡还款跳转到网上银行报错Error 404 - Not Found
声明 : 本文在 GFDL 1.2 下发布,本文出处光大银行信用卡 http://bbs.090989.com/forum-186-1.html http://androidgao.blogspot ...
- 解决Angular2 (SystemJS) XHR error (404 Not Found) loading traceur
初学Angular2,跟着Angular2中文网学到HTTP这一节时出现了一个异常: GET http://localhost:3000/traceur 404 (Not Found) Error: ...
- tomcat配置问题:访问http://localhost:8080/ 遇到 Access Error: 404
win7: 8080端口已经被其他应用使用,比如nixxxxxxxxxxxxx When I had an error Access Error: 404 -- Not Found I fixed i ...
- 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 ...
- 解决近期linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法
本文转载自:http://tech.lezi.com/archives/47 最近两天使用yum的163源,出现404错误 [root@localhost yum.repos.d]# yum make ...
- 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 ...
- 安装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 ...
随机推荐
- Tomcat 连接池调优
性能较好的Tomcat 配置文件内容 <Context> <Resource name="jdbc/pgsql" type="javax.sql.Dat ...
- line-height与图文对齐 笔记
基本概念: 块:block 特点独行 内联:inline 内联块:inline-block 如果元素display属性默认值为block,则为块元素.如div p 如果元素display属性默认值为i ...
- 线程安全 原子性 可见性 顺序性 volatile
- 解读ping -n 4 127.1 >nul 2>nul
命令解读 ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可以检查网络是否连通,可以很好 ...
- JVM加载类的原理机制
在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载.链接和初始化,其中链接又可以分成校验.准备.解析装载:查找和导入类或接口的二进制数据: 链接:执行下面的校验.准备和解析 ...
- iOS蓝牙连接流程介绍-1
蓝牙连接流程介绍 1.1-程序员找女朋友流程介绍 0.程序员找女朋友参与者 1.你 2.受害者(女性同胞) (1)她的性格1 性格的特点 (2)她的性格2 分析性格的特点 1.寻找女性 寻尽身边一 ...
- java小游戏——猜数字
import java.util.ArrayList; import java.util.List; import java.util.Random; public class Num01 { sta ...
- python学习day11
目录 SqlAlchemy 外键 SqlAlechemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象 ...
- Aop第一节
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...