Wet Shark and Flowers(思维)
2 seconds
256 megabytes
standard input
standard output
There are n sharks who grow flowers for Wet Shark. They are all sitting around the table, such that sharks i and i + 1 are neighbours for all i from 1 to n - 1. Sharks n and 1 are neighbours too.
Each shark will grow some number of flowers si. For i-th shark value si is random integer equiprobably chosen in range from li to ri. Wet Shark has it's favourite prime number p, and he really likes it! If for any pair of neighbouring sharks iand j the product si·sj is divisible by p, then Wet Shark becomes happy and gives 1000 dollars to each of these sharks.
At the end of the day sharks sum all the money Wet Shark granted to them. Find the expectation of this value.
The first line of the input contains two space-separated integers n and p (3 ≤ n ≤ 100 000, 2 ≤ p ≤ 109) — the number of sharks and Wet Shark's favourite prime number. It is guaranteed that p is prime.
The i-th of the following n lines contains information about i-th shark — two space-separated integers li and ri(1 ≤ li ≤ ri ≤ 109), the range of flowers shark i can produce. Remember that si is chosen equiprobably among all integers from li to ri, inclusive.
Print a single real number — the expected number of dollars that the sharks receive in total. You answer will be considered correct if its absolute or relative error does not exceed 10 - 6.
Namely: let's assume that your answer is a, and the answer of the jury is b. The checker program will consider your answer correct, if .
- 3 2 1 2 420 421 420420 420421
- 4500.0
- 3 5 1 4 2 3 11 14
- 0.0
A prime number is a positive integer number that is divisible only by 1 and itself. 1 is not considered to be prime.
Consider the first sample. First shark grows some number of flowers from 1 to 2, second sharks grows from 420 to 421flowers and third from 420420 to 420421. There are eight cases for the quantities of flowers (s0, s1, s2) each shark grows:
- (1, 420, 420420): note that s0·s1 = 420, s1·s2 = 176576400, and s2·s0 = 420420. For each pair, 1000 dollars will be awarded to each shark. Therefore, each shark will be awarded 2000 dollars, for a total of 6000 dollars.
- (1, 420, 420421): now, the product s2·s0 is not divisible by 2. Therefore, sharks s0 and s2 will receive 1000 dollars, while shark s1 will receive 2000. The total is 4000.
- (1, 421, 420420): total is 4000
- (1, 421, 420421): total is 0.
- (2, 420, 420420): total is 6000.
- (2, 420, 420421): total is 6000.
- (2, 421, 420420): total is 6000.
- (2, 421, 420421): total is 4000.
The expected value is .
In the second sample, no combination of quantities will garner the sharks any money.
题解:这个题竟然没做出来。。。。都怪自己想的太复杂了,哪有那么复杂,对于每两个相邻的数找到出现质数的倍数出现的概率,其中每个质数倍数出现的次数是(r[i]/q-(l[i]-1)/q);以前都做过这类题。。。对于每两个概率乘以2000,加和就好了啊;;;
代码:
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- const int INF=0x3f3f3f3f;
- #define mem(x,y) memset(x,y,sizeof(x))
- #define SI(x) scanf("%d",&x)
- #define SL(x) scanf("%I64d",&x)
- #define PI(x) printf("%d",x)
- #define PL(x) printf("%I64d",x)
- #define P_ printf(" ")
- typedef __int64 LL;
- const int MAXN=100010;
- int l[MAXN],r[MAXN];
- int main(){
- int n,q;
- while(~scanf("%d%d",&n,&q)){
- for(int i=0;i<n;i++){
- scanf("%d%d",&l[i],&r[i]);
- }
- l[n]=l[0];r[n]=r[0];
- double ans=0;
- for(int i=0;i<n;i++){
- int n1=(r[i]/q-(l[i]-1)/q),n2=(r[i+1]/q-(l[i+1]-1)/q);
- ans+=2000.0*(1.0-1.0*(r[i]-l[i]+1-n1)*(r[i+1]-l[i+1]+1-n2)/(r[i]-l[i]+1)/(r[i+1]-l[i+1]+1));
- }
- printf("%.10f\n",ans);
- }
- return 0;
- }
Wet Shark and Flowers(思维)的更多相关文章
- 【CodeForces 621C】Wet Shark and Flowers
题 There are n sharks who grow flowers for Wet Shark. They are all sitting around the table, such tha ...
- B. Wet Shark and Bishops(思维)
B. Wet Shark and Bishops time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Codeforces Round #341 Div.2 C. Wet Shark and Flowers
题意: 不概括了..太长了.. 额第一次做这种问题 算是概率dp吗? 保存前缀项中第一个和最后一个的概率 然后每添加新的一项 就解除前缀和第一项和最后一项的关系 并添加新的一项和保存的两项的关系 这里 ...
- codeforce 621C Wet Shark and Flowers
题意:输入个n和质数p,n个区间,每个区间可以等概率的任选一个数,如果选的这个区间和它下个区间选的数的积是p的倍数的话(n的下个是1),就挣2000,问挣的期望 思路:整体的期望可以分成每对之间的期望 ...
- CodeForces 621C Wet Shark and Flowers
方法可以转化一下,先计算每一个鲨鱼在自己范围内的数能被所给素数整除的个数有几个,从而得到能被整除的概率,设为f1,不能被整除的概率设为f2. 然后计算每相邻两只鲨鱼能获得钱的期望概率,f=w[id1] ...
- Wet Shark and Bishops(思维)
Today, Wet Shark is given n bishops on a 1000 by 1000 grid. Both rows and columns of the grid are nu ...
- 【CodeForces 621A】Wet Shark and Odd and Even
题 Today, Wet Shark is given n integers. Using any of these integers no more than once, Wet Shark wan ...
- cf-A. Wet Shark and Odd and Even(水)
A. Wet Shark and Odd and Even time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- Codeforces 612B. Wet Shark and Bishops 模拟
B. Wet Shark and Bishops time limit per test: 2 seconds memory limit per test: 256 megabytes input: ...
随机推荐
- linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录
先来下载依赖包 和一些必须要用到的工具 我这里用的是 dsniff-2.3 的版本 wget http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.ta ...
- JNDI(转载)
转自:http://javacrazyer.iteye.com/blog/759485 原理: 在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时 ...
- Oracle EBS-SQL (WIP-13):检查任务组件未选MRP净值.sql
select WE.WIP_ENTITY_NAME 任务号, MFG_LOOKUPS_WJS. ...
- fieldset 使用小案例
有初学者问到如何做出如下页面: 对应的代码如下: <fieldset> <legend>★审核状态</legend> <input name="st ...
- BuildSigar
https://support.hyperic.com/display/SIGAR/Home;jsessionid=7436F86CA13B66BCE1A827043E159F34#Home-down ...
- Mysql 关键字-保留字(转帖)
2008-02-01 10:51 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH ...
- BZOJ 3237([Ahoi2013]连通图-cdq图重构-连通性缩点)
3237: [Ahoi2013]连通图 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 106 Solved: 31 [ Submit][ St ...
- Wormholes(SPFA+Bellman)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36860 Accepted: 13505 Descr ...
- 关于oracle的certview
前两天去参加oracle 11g 的两门考试(1Z0-051和1Z0-052),在家看了好几遍题库,我本来想着上午一门,下午考一门,但是我嫌着麻烦,就预约一下午考完两门.在考试完一门后,发现成绩不 ...
- cocos2D(九)---- CCAction
之前介绍CCNode的时候说过,动作是指在特定时间内完毕移动.缩放.旋转等操作的行为,节点能够通过执行动作来实现动画效果,这里的动作就是指CCAction对象,它有非常多的子类,每一个子类都封装了不同 ...