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 ...
随机推荐
- Oracle GoldenGate对接 Oracle 11g和Kafka
本文主要是向读者介绍如何通过 ogg 为 oracle 数据库的变更操作实时同步到大数据产品 kafka 上. 开始介绍前,先为读者介绍一下环境背景 机器ip 和其对应的服务 192.168.88.1 ...
- ARP数据包
结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr结构外,还包含源主机和 ...
- BZOJ1108(思路)
题目本质:因为只能往南和往东走所以不管怎么组合方案结果都是一样的Orz……我太菜了想不到嘤嘤嘤 #pragma comment(linker, "/STACK:1024000000,1024 ...
- android的handle
Handler的定义: 用来接收子线程发送过来的数据,并利用该数据直接更新主线程的UI. 安卓中,一个应用启动时会开启一个主线程(UI线程),他的责任是负责管理界面中的控件.比如当你点击一个Butt ...
- 操作系统内核(linux)
操作系统的内核(Kernel) 是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件. 有了内核后,开发者不必自己去考虑机器语言.所有硬件的相关参数.程序的可移植性.专一性了.但 ...
- watir-webdriver使用过程中异常
1.在jruby版本1.6.7中,报异常:not such file to load --watir-webdriver 解决方法 :在文件的首行添加:require 'rubygems' ...
- 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------>剑指offer系列
题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...
- 【学习笔记】js中undefined和null的区别和联系
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
- Android WiFi使用记录
最近在做Android的WiFi部分的开发,连接的工具类参照了这个文章的工具类. http://www.cnblogs.com/zhuqiang/p/3566686.html 开发中碰上的一些问题,在 ...
- shell中的-z
-z 字符串为"null",即是指字符串长度为零.