题意:有编号1到n的n台机器,有m次操作,操作为开启或关闭机器,成功开启机器k的条件为k和所有已经开启的机器编号互质。

思路:vis[i]数组存放占领i这个位置的机器编号,因为所有开启的机器的编号互质,所以每个i至多只被1台机器占领。open数组保存机器的开启状态。

开启编号为k的机器操作:枚举k的所有因子,若vis[k的任意因子]=0,则成功开启,vis[k的任意因子]=k,open[k]=1。

关闭编号为k的机器操作:枚举k的所有因子,vis[k的任意因子]=0。

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int vis[];
int open[]; //0为关闭 1为开启
int main() {
int n,m,x;
char c;
memset(vis,,sizeof vis);
memset(open,,sizeof open);
scanf("%d%d",&n,&m);
while(m--) {
getchar();
scanf("%c %d",&c,&x);
if(c=='+') {
if(open[x]==) puts("Already on");
else {
int flag=;
for(int i=;i*i<=x;i++) {
if(x%i==) {
if(vis[i]!=) {
flag=vis[i];break;
}
if(vis[x/i]!=) {
flag=vis[x/i];break;
}
}
}
if(vis[x]!=) flag=vis[x];
if(flag==) {
puts("Success");
open[x]=;
for(int i=;i*i<=x;i++) {
if(x%i==) vis[i]=vis[x/i]=x;
}
vis[x]=x;
}
else printf("Conflict with %d\n",flag);
}
}
else if(c=='-') {
if(open[x]==) puts("Already off");
else {
puts("Success");
open[x]=;
for(int i=;i*i<=x;i++) {
if(x%i==) vis[i]=vis[x/i]=;
}
vis[x]=;
}
}
}
return ;
}

codeforces 155D 质数的更多相关文章

  1. Codeforces Round #589 (Div. 2) C - Primes and Multiplication(数学, 质数)

    链接: https://codeforces.com/contest/1228/problem/C 题意: Let's introduce some definitions that will be ...

  2. Codeforces 916 二进制1数目构造(阅读理解) 最小生成树1-N路径质数构造

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  3. Codeforces 922 思维贪心 变种背包DP 质因数质数结论

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  4. Codeforces 548E Mike ans Foam (与质数相关的容斥多半会用到莫比乌斯函数)

    题面 链接:CF548E Description Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a sp ...

  5. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  6. CodeForces比赛总结表

    Codeforces A                     B                        C                             D            ...

  7. Codeforces Beta Round #17 A - Noldbach problem 暴力

    A - Noldbach problem 题面链接 http://codeforces.com/contest/17/problem/A 题面 Nick is interested in prime ...

  8. CodeForces 300C --数论

    A - A Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  9. codeforces magic five --快速幂模

    题目链接:http://codeforces.com/contest/327/problem/C 首先先算出一个周期里面的值,保存在ans里面,就是平常的快速幂模m做法. 然后要计算一个公式,比如有k ...

随机推荐

  1. 对asp.net缓存 的深入了解

    一.缓存概念,缓存的好处.类型.--------------------------------------------------------------------------------     ...

  2. [Oracle] - Create DB on Oracle 12c for an Application

    Let's say we are going to develop a application for a bank, or any other enterprise, this applicatio ...

  3. iOS学习笔记(十)——iOS真机调试

    前面一直使用模拟器运行,今天使用了真机调试,这一篇介绍一下真机调试.真机调试需要99$注册,如果有注册过的账号,也可以使用注册账号邀请你加入一个账号下,注册账号可以给你分配权限,我也是使用的邀请成为开 ...

  4. [Spring MVC]学习笔记--form表单标签的使用

    github例子地址: https://github.com/lemonbar/spring-mvc-jsp 效果图 关于spring mvc的标签的讲解, 有一篇blog已经讲的很细了. http: ...

  5. isnull在order by中的使用——让我长见识了

    select * from VisitLogorder by ISNULL(NextVisitDate,'2299-01-01') 此sql的作用是查找表中的数据,并按照NextVisitDate字段 ...

  6. 巨蟒python全栈开发linux之centos4

    1.linux虚拟环境1-4 2.linux运行crm代码

  7. IOS 代码块

    1.关系式表示 <returnType>(^BlockName)(list of arguments)=^(arguments){body;};

  8. python的文件处理学习笔记

    python的文件处理函数是open() 以下主要是关于这个函数的一些学习笔记 1.文件处理离不开编码 要注意的是文件打开时的编码和文件保存时的编码的统一,这样才能保证你打开的文件不会存在乱码 总结: ...

  9. 基于TCP_socket套接字实现远程执行命令

    基于tcp的套接字实现远程执行命令的操作 ——客户端敲命令,服务端执行 #服务端 import socket import subprocess phone=socket.socket(socket. ...

  10. hdu 2112 HDU Today(map与dijkstra的结合使用)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...