先來一個
#include<bits/stdc++.h>
using namespace std;
#define ALL(v) v.begin(),v.end()
using ll=long long;
unsigned seed=chrono::steady_clock::now().time_since_epoch().count();
mt19937_64 rng=mt19937_64(seed);
long long RandomNumber(long long a,long long b){
uniform_int_distribution<long long> dis(a,b);
return dis(rng);
}
long long RandomNumber(long long n){
return RandomNumber(1,n);
}
void SubTesk1(int a){
string fileName=to_string(a);
ofstream ques(fileName+".in"),ans(fileName+".out");
int n=RandomNumber(90000,100000);
ques<<n<<"\n";
vector<int> LIS;
for(int i=0;i<n;++i){
int a=RandomNumber(100000000);
ques<<a<<" ";
if(LIS.empty() || lower_bound(ALL(LIS),a)==LIS.end()){
LIS.emplace_back(a);
}else{
int pos=lower_bound(ALL(LIS),a)-LIS.begin();
LIS[pos]=a;
}
}
ans<<LIS.size();
cout<<a<<endl;
}
#define REP(i,a,b) for(int i=(a);i<(b);++i)
int main(){
ios::sync_with_stdio(0);cin.tie(0);
clock_t startTime=clock();
REP(i,1,20+1){
SubTesk1(i);
}
clock_t endTime=clock();
cout<<double(endTime-startTime)/1000<<"\n";
}
還有一個 for 圖論題目的
#include<bits/stdc++.h>
using namespace std;
#ifndef GRAPH_GEN
#define GRAPH_GEN
unsigned seed=chrono::steady_clock().now().time_since_epoch().count();
mt19937_64 rng(seed);
using ll=long long;
ll Rand(ll a,ll b){
uniform_int_distribution<ll> dis(a,b);
return dis(rng);
}
ll Rand(ll a){
return Rand(1,a);
}
struct edge{
int from,to;
long long dis;
edge(){}
edge(int f,int t,long long d){
from=f;
to=t;
dis=d;
}
};
class GraphGen{
private :
struct DSU{
vector<int> dsu,rk;
DSU(int n){
dsu.resize(n+10);
rk.resize(n+10);
init();
}
void init(){
for(int i=0;i<dsu.size();++i){
dsu[i]=i;
}
}
int find(int a){
if(dsu[a]==a){
return a;
}else{
return dsu[a]=find(dsu[a]);
}
}
bool same(int a,int b){
return find(a)==find(b);
}
void uni(int a,int b){
if(same(a,b)){
return;
}
if(rk[find(a)]==rk[find(b)]){
dsu[find(b)]=find(a);
rk[a]++;
}else if(rk[find(a)]>rk[find(b)]){
dsu[find(b)]=find(a);
}else{
dsu[find(a)]=find(b);
}
}
};
public :
// nodes 1~n
static vector<pair<int,int>> GenTree(int n){
DSU dsu(n);
vector<pair<int,int>> result;
while(result.size()<n-1){
int a=Rand(n),b=Rand(n);
if(!dsu.same(a,b)){
result.emplace_back(a,b);
dsu.uni(a,b);
}
}
return result;
}
// n nodes m edges, m need to bigger than n-1
static vector<pair<int,int>> GenConnectedGraph(int n,int m){
vector<pair<int,int>> result=GenTree(n);
for(int i=0;i<m-n+1;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
result.emplace_back(a,b);
}
return result;
}
// n nodes m edges, m need to bigger than n-1
static vector<pair<int,int>> GenGraph(int n,int m){
vector<pair<int,int>> result;
for(int i=0;i<m;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
result.emplace_back(a,b);
}
return result;
}
// nodes 1~n, and weight in 1~k
static vector<edge> GenTree(int n,int k){
DSU dsu(n);
vector<edge> result;
while(result.size()<n-1){
int a=Rand(n),b=Rand(n),c=Rand(k);
if(!dsu.same(a,b)){
result.emplace_back(a,b,c);
dsu.uni(a,b);
}
}
return result;
}
static vector<edge> GenConnectedGraph(int n,int m,int k){
vector<edge> result=GenTree(n,k);
for(int i=0;i<m-n+1;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
int c=Rand(k);
result.emplace_back(a,b,c);
}
return result;
}
static vector<edge> GenGraph(int n,int m,int k){
vector<edge> result;
for(int i=0;i<m;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
int c=Rand(k);
result.emplace_back(a,b,c);
}
return result;
}
// nodes 1~n, and weight in l~r
static vector<edge> GenTree(int n,int l,int r){
DSU dsu(n);
vector<edge> result;
while(result.size()<n-1){
int a=Rand(n),b=Rand(n),c=Rand(l,r);
if(!dsu.same(a,b)){
result.emplace_back(a,b,c);
dsu.uni(a,b);
}
}
return result;
}
static vector<edge> GenConnectedGraph(int n,int m,int l,int r){
vector<edge> result=GenTree(n,l,r);
for(int i=0;i<m-n+1;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
int c=Rand(l,r);
result.emplace_back(a,b,c);
}
return result;
}
static vector<edge> GenGraph(int n,int m,int l,int r){
vector<edge> result;
for(int i=0;i<m;++i){
int a,b;
do{
a=Rand(n);
b=Rand(n);
}while(a==b);
int c=Rand(l,r);
result.emplace_back(a,b,c);
}
return result;
}
};
#endif