BZOJ-2017十一月份月赛总结




刚好晚上有空,于是打打月赛。
第一次打月赛,这次 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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值