zoukankan      html  css  js  c++  java
  • codeforces 155D 质数

    题意:有编号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[100010];
    int open[100010]; //0为关闭 1为开启 
    int main() {
        int n,m,x;
        char c;
        memset(vis,0,sizeof vis);
        memset(open,0,sizeof open);
        scanf("%d%d",&n,&m);
        while(m--) {
            getchar();
            scanf("%c %d",&c,&x);
            if(c=='+') {
                if(open[x]==1) puts("Already on");
                else {
                    int flag=0;
                    for(int i=2;i*i<=x;i++) {
                        if(x%i==0) {
                            if(vis[i]!=0) {
                                flag=vis[i];break;
                            }
                            if(vis[x/i]!=0) {
                                flag=vis[x/i];break;
                            }
                        }
                    }
                    if(vis[x]!=0) flag=vis[x];
                    if(flag==0) {
                        puts("Success");
                        open[x]=1;
                        for(int i=2;i*i<=x;i++) {
                            if(x%i==0) vis[i]=vis[x/i]=x;        
                        }
                        vis[x]=x;
                    }
                    else printf("Conflict with %d
    ",flag);
                }
            }
            else if(c=='-') {
                if(open[x]==0) puts("Already off");
                else {
                    puts("Success");
                    open[x]=0;
                    for(int i=2;i*i<=x;i++) {
                        if(x%i==0) vis[i]=vis[x/i]=0;
                    }
                    vis[x]=0; 
                }
            } 
        }
        return 0; 
    } 
  • 相关阅读:
    abstract关键字
    final关键字
    Vue使用枚举类型实现HTML下拉框
    第八节 pandas读取和保存文件
    第七节 pandas新建数据框的两种方式
    第六节 numpy的常用属性和方法
    第五节 numpy的简单使用
    第三节 matplotlib绘制直方图
    第三节 matplotlib绘制条形图
    第二节 matplotlib绘制散点图
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5709424.html
Copyright © 2011-2022 走看看