要点

  • 都在注释里了
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <vector>
  6. using namespace std;
  7. typedef double db;
  8. const int maxn = 1e5 + 5;
  9. int n;
  10. db l, v1, v2;
  11. db a[maxn], ans[maxn];
  12. db val(db x) {//make the value on the loop
  13. while (x < 0) x += 2 * l;
  14. return x;
  15. }
  16. int main() {
  17. scanf("%d %lf %lf %lf", &n, &l, &v1, &v2);
  18. db len = v2 * l / (v1 + v2);
  19. //实数环上的差分,求2*l长度的环上被长度len包括的点的个数的概率
  20. vector<pair<db, int>> v;
  21. for (int i = 1; i <= n; i++) {
  22. scanf("%lf", &a[i]);//点的位置
  23. v.emplace_back(val(a[i] - len), 1);//start, cnt should +1
  24. v.emplace_back(a[i], -1);//end, cnt should -1
  25. }
  26. v.emplace_back(2 * l, 0);//在0处断开环,形成一个终点
  27. sort(v.begin(), v.end());
  28. int cnt = 0;
  29. db cur = 0.0;//起点
  30. for (int i = 1; i <= n; i++) {
  31. if (a[i] < len) cnt++;//初始状态的数量
  32. else break;
  33. }
  34. for (auto i : v) {
  35. ans[cnt] += i.first - cur;
  36. cur = i.first;
  37. cnt += i.second;
  38. }
  39. for (int i = 0; i <= n; i++)
  40. printf("%.20lf\n", ans[i] / 2 / l);
  41. }

Codeforces 163C(实数环上的差分计数)的更多相关文章

  1. Codeforces 588E. A Simple Task (线段树+计数排序思想)

    题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序. 题解:建立26棵 ...

  2. Codeforces 225C Barcode(矩阵上DP)

    题目链接:http://codeforces.com/contest/225/problem/C 题目大意: 给出一个矩阵,只有两种字符'.'和'#',问最少修改多少个点才能让每一列的字符一致,且字符 ...

  3. Codeforces 382E Ksenia and Combinatorics 【组合计数】*

    Codeforces 382E Ksenia and Combinatorics Ksenia has her winter exams. Today she is learning combinat ...

  4. HDU 4305 Lightning(计算几何,判断点在线段上,生成树计数)

    Lightning Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  5. codeforces 816B Karen and Coffee (差分思想)

    题目链接 816B Karen and Coffee 题目分析 题意:有个人在学泡咖啡,因此看了很多关于泡咖啡温度的书,得到了n种推荐的泡咖啡温度范围[L1,R1] ,此人将有k种做法推荐的温度记为可 ...

  6. CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)

    题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...

  7. Codeforces 772D - Varying Kibibits(高维差分+二项式定理维护 k 次方和)

    Codeforces 题目传送门 & 洛谷题目传送门 首先很容易注意到一件事,那就是对于所有 \(f(S)\) 可能成为 \(x\) 的集合 \(S\),必定有 \(\forall y\in ...

  8. Codeforces 451E Devu and Flowers(组合计数)

    题目地址 在WFU(不是大学简称)第二次比赛中做到了这道题.高中阶段参加过数竞的同学手算这样的题简直不能更轻松,只是套一个容斥原理公式就可以.而其实这个过程放到编程语言中来实现也没有那么的复杂,不过为 ...

  9. Codeforces Round #258 D Count Good Substrings --计数

    题意:由a和b构成的字符串,如果压缩后变成回文串就是Good字符串.问一个字符串有几个长度为偶数和奇数的Good字串. 分析:可知,因为只有a,b两个字母,所以压缩后肯定为..ababab..这种形式 ...

随机推荐

  1. CSS+HTML+JQuery简单菜单

    1. [代码]style <style type="text/css">    body,ul,li,a{        margin:0;        paddin ...

  2. the art of seo(chapter eight)

    How Social Media and User Data Play a Role in Search Results and Rankings ***Correlation Between Soc ...

  3. struts2标签(转)

    Struts2 标签库讲解   要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可: <%@ taglib prefix="s" uri="/str ...

  4. hdu1521排列问题

    题目链接 利用指数型母函数解决排列问题 1.口袋中有白球2个,红球3个,黄球1个,任取3个作为一个排列,总共有多少种排列? 类似地用指数型母函数解决 用(1+x/1!+x2/2!)表示取白球0个,1个 ...

  5. 【C++ Primer 5th】Chapter 15

    摘要: 1. 面向对象程序设计的核心思想是数据抽象.继承和动态绑定.数据抽象将类的接口和实现分离:继承定义相似的类型并对齐相似关系建模:动态绑定,在一定程度上忽略相似类型的区别,而以统一的方式使用它们 ...

  6. 【LeetCode】051. N-Queens

    题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...

  7. css3渐变gradient

    参考: http://www.w3cplus.com/content/css3-gradient

  8. poj2182Lost Cows——树状数组快速查找

    题目:http://poj.org/problem?id=2182 从后往前确定,自己位置之前没有被确定的且比自己编号小的个数+1即为自己的编号: 利用树状数组快速查找,可另外开一个b数组,角标为编号 ...

  9. Elasticsearch的前后台运行与停止(rpm包方式)

    对应,这es的下载,需要rpm包. Elasticsearch-2.4.3的下载(图文详解) 建议用root用户 [root@djt002 elasticsearch-2.4.3]$ pwd/usr/ ...

  10. day4 DOM,BOM

    1.     BOM编程 1.1. BOM编程基础 全称 Browser Object Model,浏览器对象模型. JavaScript是由浏览器中内置的javascript脚本解释器程序来执行ja ...