BZOJ 2134: 单选错位
生活随笔
收集整理的這篇文章主要介紹了
BZOJ 2134: 单选错位
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題面
解題思路
概率期望,如果相鄰兩個位置相等則修改后仍然正確,所以我們每次只需要
取相鄰兩位的最小值去除以兩位相乘,最后可以化簡為1/最大值。
代碼
#include<bits/stdc++.h>using namespace std; const int MAXN = 1e7+2;int n,m,A,B,C; int a[MAXN]; double ans;int main(){scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1);a[2]=a[1]%C+1;for (register int i=2;i<=n;i++){a[i] = ((long long)a[i-1] * A + B) % 100000001;a[i] = a[i] % C + 1;double mx=max(a[i],a[i-1]);ans+=1.0/mx;} ans+=1.0/(double)max(a[1],a[n]);printf("%.3lf",ans); }轉載于:https://www.cnblogs.com/sdfzsyq/p/9677010.html
總結
以上是生活随笔為你收集整理的BZOJ 2134: 单选错位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 1384 Intervals【差
- 下一篇: 每日一学(一)