社区讨论

玄关求优化

P1871对撞机参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mdb6oy1j
此快照首次捕获于
2025/07/20 12:35
8 个月前
此快照最后确认于
2025/07/20 16:38
8 个月前
查看原帖
rt. 70pts,求优化 gcd\gcd 算法,怀疑是它的问题,会用的卡常技巧都用上了
CPP
#include<bits/stdc++.h>
#define gcd __gcd
using namespace std;
const int N=1e5+10;
int n,m;
bool a[N];
int read(){
    int x=0,w=1;
    char ch=0;
    while (ch<'0'||ch>'9') {
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9') {
        x=x*10+(ch-'0');
        ch=getchar();
    }
    return x*w;
}
inline void write(int x) {
	static int sta[35];
	int top=0;
	do{
	sta[top++]=x%10,x/=10;
    }while(x);
	while(top){
		putchar(sta[--top]+48);	
	}
}
int main(){
    memset(a,false,sizeof(a));
    n=read(),m=read();
    while(m--){
        char c;
        int x;
        cin>>c;
        x=read();
        if(c=='+'){
            bool con=false;
            if(a[x]==true){
                cout<<"Already on"<<endl;
                continue;
            }
            for(int i=1;i<=n;i++){
                if(gcd(i,x)!=1&&a[i]==true){
                    printf("Conflict with %d\n",i);
                    con=true;
                    break;
                }
            }
            if(con==false){
                printf("Success\n");
                a[x]=true;
            }
        }else if(c=='-'){
            if(a[x]==false){
                printf("Already off\n");
            }else{
                printf("Success\n");
                a[x]=false;
            }
        }
    }
    return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...