void solve()
{
mt19937 rng;
int sum=0;
for (int i = 0; i<100000; ++i) {
int x, y, r;
x = rng() % 199 - 99;
y = rng() % 199 - 99;
do
{
r= rng() % 199 - 99;
}while(x+r>100||x-r<-100||y+r>100||y-r<-100);
sum+=abs(x)+abs(y);
}
cout<<sum;
}
第二个是
void solve()
{
mt19937 rng;
int sum=0;
for (int i = 0; i<100000; ++i) {
int x, y, r;
do{
x = rng() % 199 - 99;
y = rng() % 199 - 99;
r= rng() % 199 - 99;
}while(x+r>100||x-r<-100||y+r>100||y-r<-100);
sum+=abs(x)+abs(y);
}
cout<<sum;
}
通过观察sum可得第个方法普遍大于90*n;
这是jiangly的方法和代码
include:<bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
std::cin>>n;
int sum = 0;
for (int i = 0; i < n; i++) {
int x, y, r;
std::cin>>x>>y>>r;
sum += std::abs(x) + std::abs(y);
}
if (sum>90 * n) {
std::cout<<"bit-noob\n";
} else {
std::cout<<"buaa-noob\n";
}
return 0;
}
不过还有一种就是观察两个人的方法,概率分析,第一种方法是圆心概率一定 第二种是半径概率一定。因此第一个人的圆心位置概率更平均。也就是说,第一种方法取到偏远地方(max(abs(x),abs(y))大于95)的概率更大。平均取数的话,第一种取到大于95的概率大概有1/20,在1e5的数字范围内大约有5000次能取到,我试了一下,5000确实是对的,不过保险起见,这个阈值还是不要取临界.
#include<bits/stdc++.h>
define:endl '\n'
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N = 1e6+10, M = 30010;
void solve()
{
// cout<<setiosflags(ios::fixed)<<setprecision(10);
int n;
cin>>n;
int cnt = 0;
for(int i = 0; i<n ;i++)
{
int x, y, r;
cin>>x>>y>>r;
if(max(abs(x),abs(y)) >= 95) cnt++;
}
if(cnt >= 3000) cout<<"bit-noob"<<endl;
else cout<<"buaa-noob"<<endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int T = 1;
while (T--)
{
solve();
}
return 0;
}
数学联邦政治世界观提示您:看后求收藏(笔尖小说网http://www.bjxsw.cc),接着再看更方便。