2 条题解
-
0
map+前缀和(其实set更好)
#include<bits/stdc++.h> using namespace std; using ll=long long; map<ll,int>mp; int main() { int n; cin>>n; ll ay; for(int i=1;i<=n;i++){ cin>>ay; mp[ay]++; } //终态:删完 //过程:对不同元素进行等概率删除 int nu=mp.size(); vector<double>pre(n+1,0); vector<double>a(n+1,0); double j=1.0; for(int i=1;i<=n;i++){ a[i]=1/j; pre[i]=pre[i-1]+a[i]; j++; } cout<<fixed<<setprecision(8)<<pre[nu]<<endl; } -
0
查重计数+调和级数
瓶颈在排序查重上
较多的数使用欧拉公式避免过长循环
测试发现数据集没有较小的数,直接使用欧拉公式避开循环
int main() { int t; read(t); for (int i = 0; i < t; ++i) { read(a[i]); } radix_sort_unsigned(a, t); int m = 0; int p = 0; for (int i = 1; i < t; ++i) { if (a[i] != a[p]) { a[++p] = a[i]; } } m = p + 1; double s = 0; s = log(m) + 0.5772156649015328606 + 1.0 / (2.0 * m); char out_str[32]; sprintf(out_str, "%.8f", s); write((const char *)out_str); return 0; }
- 1
信息
- ID
- 130
- 时间
- 3000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 36
- 已通过
- 5
- 上传者