萌新的拍子
萌新的拍子
萌新的拍子,在这里贴一下,大佬勿喷♪(・ω・)ノ
主体#
非常典的东西,加了记录两份代码运行时间的功能
#include<bits/stdc++.h>
using namespace std;
int minetime,stdtime;
int minesum,stdsum;
int main(){
while(1){
puts("data be");
system("data.exe>data.txt");
puts("data ok");
puts("mine begin");
minetime=-clock();
system("mine.exe<data.txt>mine.txt");
minetime+=clock();
puts("mine ok");
puts("std begin");
stdtime=-clock();
system("std.exe<data.txt>std.txt");
stdtime+=clock();
puts("std ok");
if(minetime>1000)return 0;
if(system("fc mine.txt std.txt"))return 0;
cout<<minetime<<' '<<stdtime<<endl;
minesum+=minetime;
stdsum+=stdtime;
cout<<minesum<<' '<<stdsum<<'\n';
}
return 0;
}
随机生成二叉树#
每次把当前点随机向前面的一个点连边,用堆维护,可能不大随机(
#include<bits/stdc++.h>
using namespace std;
const int maxn=10;
int n,m;
struct node{
int u;
unsigned long long v;
bool operator < (const node &cmp)const{
return v<cmp.v;
}
};
int ch[maxn],fa[maxn];
priority_queue<node>q;
int main(){
freopen("in.txt","r",stdin);
mt19937 rnd(time(0)*getchar()*getchar()*getchar());
n=rnd()%maxn+1;
cout<<n<<'\n';
fa[1]=0;
q.push((node){1,rnd()});
for(int i=2;i<=n;i++){
node now=q.top();q.pop();
fa[i]=now.u;
++ch[now.u];
if(ch[now.u]<2)q.push((node){now.u,rnd()});
}
for(int i=1;i<=n;i++)cout<<i<<' '<<fa[i]<<'\n';
return 0;
}
生成一棵树#
需要手写一个并查集,可能不大随机(
而且是随机碰撞的,效率不是很高(
for(int i=1;i<n;){
int u=(rnd()%n)+1;
int v=(rnd()%n)+1;
if(find(u)==find(v))continue;
fa[find(u)]=find(v);
cout<<u<<' '<<v<<endl;
++i;
}
所以就改进一下,这个是线性的:
for(int i=1;i<=n;i++)a[i]=i;
shuffle(a+1,a+1+n,rnd);
for(int i=2;i<=n;i++)cout<<a[i]<<' '<<a[rnd()%(i-1)+1]<<'\n';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现