蒟蒻求改进QWQ
  • 板块学术版
  • 楼主______l______
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/12/23 11:29
  • 上次更新2023/10/24 06:53:11
查看原帖
蒟蒻求改进QWQ
759389
______l______楼主2022/12/23 11:29

本蒟蒻想自己造【模板】DLX的数据

可是为什么总是误解捏???

求大佬改进一下


(附造数据代码:

/*This is ZJW's Code!!!*/
#include<bits/stdc++.h>
//#define put(k) cout<<k.left<<" "<<k.right<<" "<<k.up<<" "<<k.down<<"\n"
//#pragma GCC optimize(3,"Ofast","inline")
#define int long long
using namespace std;
inline int time10(int x)
{return(x<<3)+(x<<1);}
inline int read(){//快读
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){
        if(ch=='-')f*=-1;
        ch=getchar();
    }while(ch>='0'&&ch<='9')x=time10(x)+(ch^48),ch=getchar();
	return x*f;
}inline void write(int x){//快写
	if(x<0)putchar('-'),x=-x;
	if(x<10){putchar(x+48);return;}
	write(x/10);putchar(x%10+48);
}const int N=5e2+10;vector<int>v;
int n,m,a[N][N],ca[N];bool fl[N],c[N];
int rk[N];
string s,si,sout;FILE*in,*out;
inline int Rand(){
    srand(rand()+rand()*rand()+rand()*17+time(NULL)*114514%978645+1012*time(NULL)*13489749+9879000879);
    int siz=rand()%10+1,res=0;
    while(siz--) res=res*10+((rand()*7+rand())%rand()+rand()*rand()+114514)%10;
    return res*rand()%(res+1);
}inline int f(int l,int r){
    //r>=l>=0
    return l+Rand()%(r-l+1);
}signed main(){
//    for(int i=1;i<=20;i++)
//        write(Rand()),putchar(' ');
    int test=read();s=to_string(test);
    si=s+".in",sout=s+".out";
    in=fopen(si.c_str(),"w");
    n=Rand()%500+1,m=Rand()%500+1;
    if(test<=2) n=n%10+1,m=m%10+1;
    else if(test<=3) n=f(15,50),m=f(15,50);
    else if(test<=5) n=f(70,200),m=f(70,200);
    else if(test<=7) n=f(201,400),m=f(201,400);
    else if(test<=9) n=f(300,450),m=f(300,450);
    else n=f(475,500),m=f(475,500);
    fprintf(in,"%lld %lld \n",n,m);
    for(int i=1;i<=m;i++) ca[i]=1;
    for(int i=1;i<=n;i++) rk[i]=i;
    for(int i=1;i<=m;i++) random_shuffle(rk+1,rk+n+1);
    int kik=n;
    while(kik>=cbrt(n)&&Rand()*Rand()/rand()*Rand()%1000>750){
        int len=Rand()%f(n/sqrt(n),n);
        if((Rand()-10)%100>85) len=0;
        if(!len) break;
        int res=m; kik-=len;
        for(int i=1;i<=len;i++){
            int k=rk[i]; fl[k]=1;
            int cs=Rand()%(res+1);res-=cs;
            for(int j=1;j<=cs;j++){
                int ck=Rand()%m+1;
                while(c[ck]) ck=Rand()%m+1;
                c[ck]=1,a[k][ck]=1;
            }
        }
    }for(int i=1;i<=n;i++){
        if(fl[i]) continue;
        int num=Rand()%(m+1);
        for(int i=1;i<=num;i++)
            a[i][Rand()%m+1]=1;
    }for(int i=1;i<=n;i++,fprintf(in,"\n"))
        for(int j=1;j<=m;j++)
            fprintf(in,"%lld ",a[i][j]);
    return 0;
}//205
2022/12/23 11:29
加载中...