小诗一首
2024-07-11 16:11:02 By dfdf_zhaozekai
新博客
2024-07-11 15:03:09 By dfdf_zhaozekai
姓毛的
你
竟然
背着我
偷偷
打游戏
还不带我一个
太过分了!!!
xinyun
2024-03-30 14:35:18 By dfdf_zhaozekai
#include<bits/stdc++.h>
#define int long long
using namespace std;
const double eps=5e-4;
const int INF=1e4,mod=1e9+7;
int cur;
static int rdm=1e6;
int real_rand(){
rdm=rdm*rdm+rand();
rdm%=mod;
return rdm;
}//???????
bool fail(double prob){
return (real_rand()%INF)>=prob*INF;
}//??????????
int limited_rand(int minx,int maxn){
return real_rand()%(maxn-minx+1)+minx;
}//?????????
double double_rand(double minx,double maxn){
return (double)limited_rand(minx*INF,maxn*INF)/(double)INF;
}//??????????
void adjust(double &gen,double noise_val){
if (noise_val>gen) gen=(0.25*gen+0.75*noise_val);
}
const double nbl_r_min=10,nbl_r_max=30;//??????
const double nbl_den_min=0.4,nbl_den_max=0.6;//??????
struct nbl_dot{
double x,y;//??
double r;//????
double den;//??
nbl_dot(){
r=double_rand(nbl_r_min,nbl_r_max);//?????
x=-2.0*r-10.0;y=cur;//?????
den=double_rand(nbl_den_min,nbl_den_max);//?????
}
double dis(){
return sqrt(pow(x,2)+pow(y-cur,2));
}//????????
double den_val(){
return (1.0-dis()/r)*den;
}//????
};
bool nbl_touched(nbl_dot x1,nbl_dot y1){
return sqrt(pow(x1.x-y1.x,2)+pow(x1.y-y1.y,2))<=0.8*(x1.r+y1.r);
}
vector<nbl_dot> nbl;
void nbl_add(){
struct nbl_dot tmp=nbl_dot();
if (!nbl.empty()&&abs(tmp.x-nbl[nbl.size()-1].x)<=10.0){
if (fail(4e-3)) return;
}//????????
else if (fail(5e-4)) return;//?????
nbl.push_back(tmp);
int tmp_cnt1=0,tmp_cnt2=0;
double tmp_sum1=0.0,tmp_sum2=0.0;
for(int i=0;i<nbl.size()-1;i++){
if (nbl_touched(nbl[i],nbl[nbl.size()-1])){
tmp_cnt1++;
tmp_sum1+=nbl[i].y;
}
else{
tmp_cnt2++;
tmp_sum2+=2*nbl[nbl.size()-1].y-nbl[i].y;
}
}
if (tmp_cnt1){
nbl[nbl.size()-1].y+=0.5*tmp_sum1;
nbl[nbl.size()-1].y/=0.5*(double)tmp_cnt1+1.0;//????????
}
else{
nbl[nbl.size()-1].y+=tmp_sum2;
nbl[nbl.size()-1].y/=(double)tmp_cnt2+1.0; //??????
}
}//?????
void nbl_adj_den(double &den){
for(int i=0;i<nbl.size();i++) adjust(den,nbl[i].den_val());
}//????
void nbl_release(){
while(!nbl.empty()&&nbl[0].x>nbl[0].r) nbl.erase(nbl.begin());
}//??
const double pln_r_min=10.0,pln_r_max=70.0;//??????
const double pln_den=0.8;
struct pln_dot{
double x,y;//??
double r;//??
pln_dot(){
r=double_rand(pln_r_min,pln_r_max);//?????
x=-2.0*r-10.0;y=cur;//?????
}
int id(){
if (r<=20) return 1;
else if (r<=40) return 2;
else return 3;
}//????
double dis(){
return sqrt(pow(x,2)+pow(y-cur,2));
}//????????
double den_val(){
if (dis()<=0.8*r) return 0.9;//????
if (id()==1) return 0.0;//????
else if (id()==2){
if (dis()>=1.1*r&&dis()<=1.6*r) return 0.6;
return 0.0;
}//????
else{
if (dis()>=1.2*r&&dis()<=1.35*r||dis()>=1.75*r&&dis()<=1.8*r) return 0.66;
else if (dis()>=1.35*r&&dis()<=1.75*r) return 0.3;
else return 0.0;
}//????
//???
}//????
double sz(){
if (id()==1) return r;
else if (id()==2) return 1.6*r;
else return 1.8*r;
}//????
};//??
bool pln_touched(pln_dot x1,pln_dot y1){
return sqrt(pow(x1.x-y1.x,2)+pow(x1.y-y1.y,2))<=x1.sz()+y1.sz();
}
vector<pln_dot> pln;
void pln_check();
void pln_add(){
if (fail(1e-3)||fail(5e-2)) return;//?????
if (fail(pow(0.5,pln.size()))) return;//????????
pln.push_back(pln_dot());
pln_check();
}//????
void pln_adj_den(double &den){
for(int i=0;i<pln.size();i++) adjust(den,pln[i].den_val());
}//????
void pln_check(){
if (pln[pln.size()-1].id()==3){
if (fail(0.25)) pln[pln.size()-1].r=double_rand(20.0,40.0);
}
if (pln[pln.size()-1].id()==2){
if (fail(0.5)) pln[pln.size()-1].r=double_rand(10.0,20.0);
}//??????
for(int i=0;i<pln.size()-1;i++){
if (pln_touched(pln[i],pln[pln.size()-1])){
pln.erase(pln.begin()+pln.size()-1);return;
}
}//????
}
void pln_release(){
while(!pln.empty()&&pln[0].x>pln[0].sz()) pln.erase(pln.begin());
}//??
void up(){
for(int i=0;i<nbl.size();i++) nbl[i].x+=2.0;
for(int i=0;i<pln.size();i++) pln[i].x+=2.0;
}//????
void print(double &den){
putchar(fail(den)?' ':'.');
for(int i=1;i<=100000;i++);
if(cur==235){
putchar('\n');
cur=0;
up();
}
else ++cur;
den=0.01;
}//?????????
void add(){
nbl_add();pln_add();
}
void adj_den(double &den){
nbl_adj_den(den);pln_adj_den(den);
}
void release(){
nbl_release();pln_release();
}
signed main(){
srand(time(0));
for(;;release()){
double den=0.01;
add();
adj_den(den);
print(den);
}
return 0;
}
char(1~256)
2023-09-26 20:23:21 By dfdf_zhaozekai
char(1~256)
作者: dfdf_zhaozekai
对拍
2023-08-03 10:37:06 By dfdf_zhaozekai
checker.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("prob.in","r",stdin);
freopen("checker.out","w",stdout);
}
prob.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("prob.in","r",stdin);
freopen("prob.out","w",stdout);
}
对拍.bat
:loop
data.exe
checker.exe
prob.exe
fc prob.out checker.out
if %errorlevel%==0 goto loop
pause
data.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("prob.in","w",stdout);
srand(time(NULL));
int n=rand();//数据范围
//输入形式
}
使用指南
1.把保证正确的暴力程序写入checker.cpp
2.把时间复杂度正确,但可能错误的程序写入prob.cpp
3.按照输入格式写data
4.编辑 对拍.bat
5.运行 对拍.bat
6.等待结果