145 条题解
-
-11
本人太弱不会a+b,只能冲一发退火来碰碰运气
#include<bits/stdc++.h> #define ll long long using namespace std; const double d=0.999; const double lim=1e-10; ll a,b; ll ans; ll num; 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=x*10+(ch^48); ch=getchar(); } return x*f; } int calc(int x) { return abs(a+b-x)-abs(a+b-ans); } void ghost_fire() { double T=1000000; while(T>lim) { int x=num+((rand()<<1)-RAND_MAX)*T; int del=calc(x); if(del<0) { ans=x; num=x; } else if(exp(-del/T)>(double)rand()/RAND_MAX) num=x; T*=d; } } void work() { for(int i=1;i<=100;i++) ghost_fire(); } int main() { a=read(); b=read(); work(); cout<<ans<<endl; return 0; }
信息
- ID
- 56
- 时间
- 1000ms
- 内存
- 1024MiB
- 难度
- 1
- 标签
- 递交数
- 9043
- 已通过
- 4027
- 上传者