刚好晚上有空,于是打打月赛。
第一次打月赛,这次 A 了三题,按顺序是 B-A-E。
实际上是先看了 A 题,可是怎么都过不了,于是再看看 B 题,然后过了 B ,再回来看 A,调了好久才过,然后 E 题同机房的 hsz 告诉了我他打表发现的规律,然后依规律过了。
B-摘苹果
一次就过了。
期望的这种,可以对每个元素单独考虑他的概率最后再加起来。
可以看看这里的题解。
http://blog.csdn.net/jackypigpig/article/details/78277839
A-组题
WA 了 11 发……因为前面一直看错数据范围 ,二分的时候把 l 设成了 1e5,实际上 abs(a[i])<=1e8。
可以看看这里的题解。
http://blog.csdn.net/jackypigpig/article/details/78756112
E-硬盘检测
我看了题,开始连题意都不太懂,经 hsz 讲解之后大概理解:给了 n(n=10^k) 个数,他随便选了 m(m=10000) 次,给出这 m 次选出的数(可以重复),然后问 n 最可能是多少。
开始我觉得是不是看看有几个不重复的数,然后 hsz 说差不多就这样,然后给出了打表之后写出的程序(打表就是模拟一次这个过程,选一个 n ,看看随机选 m 次[1,n]的数,会有几个不重复的数),大概就是把 个数 分几个类,输出一下……
程序
#include <cstdio>
#include <map>
using namespace std;
map <long long,long long> M;
long long cnt,m,ans,zzk=999999999999,a[100];
long long he(long long x){return x<0 ? -x:x;}
int main(){
scanf("%lld",&m);
for (long long i=1,k; i<=m; i++){
scanf("%lld",&k);
if (M.count(k)==0) cnt++,M[k]=1;
}
if (cnt<=10) puts("10");
else if (cnt<=100) puts("100");
else if (cnt<=1000) puts("1000");
else if (cnt<=9000) puts("10000");
else if (cnt<=9900) puts("100000");
else if (cnt<=9990) puts("1000000");
else puts("10000000");
}