本蒟蒻想自己造【模板】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