CodeForces 689E (离散化+逆元+组合)
题意:给你n个闭区间,挑选k个区间并且把它们做交集,得到区间[L,R],定义f([L,R])=R-L+1;求所有可能的f值得和。
题解:
①当区间[L,R]出现的次数d>=k,则ans=C(n,k)*(R-L+1)
②数据比较大,需要把端点离散化,离散化时需把右端点+1,
③求组合需要用到除法,需把除法变为乘法,则要用到逆元,即a/b等于a*(b的逆元)
④求各个离散化后区间的f,并把它累加起来。
注意:中间过程防止爆int,鄙人经常爆,然后找BUG。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm>using namespace std;#define maxn 200010 #define mod 1000000007long long f[maxn]; int l[maxn]; int r[maxn]; int hash[maxn*2]; int res[maxn*2];void fac() {f[0]=1;for(int i=1;i<maxn;i++)f[i]=(f[i-1]*i)%mod; }int qpow(long long x,int k) {long long res=1;while(k){if(k&1) res = res * x % mod;x= x * x % mod;k>>=1;}return res; }int inv(long long x) {return qpow(x,mod-2); }long long C(int n,int m) {return f[n]*inv(f[m]*f[n-m]%mod)%mod; }int main() {fac();int n,k;scanf("%d%d",&n,&k);int cnt=0;for(int i=0;i<n;i++){scanf("%d%d",&l[i],&r[i]);hash[cnt++]=l[i];hash[cnt++]=++r[i];}sort(hash,hash+cnt);cnt=unique(hash,hash+cnt)-hash;for(int i=0;i<n;i++){int temp=lower_bound(hash,hash+cnt,l[i])-hash;res[temp]++;temp=lower_bound(hash,hash+cnt,r[i])-hash;res[temp]--;}int ans=0;int add=res[0];for(int i=1;i<cnt;i++){if(add>=k) ans=(ans+C(add,k)*(hash[i]-hash[i-1])%mod)%mod;add+=res[i];}printf("%d\n", ans);return 0; }
View Code
转载于:https://www.cnblogs.com/mgxj/p/5663678.html
CodeForces 689E (离散化+逆元+组合)相关推荐
- Divide and Sum CodeForces - 1445D(排列组合+逆元)
题意: 给定一个长度为2n的数组,将数组分成两个长度为n的数组p,q,将p从小到大排序,将q从大到小排序,对于每种分法,f(p,q)=∑i=1n\sum_{i=1}^{n}∑i=1n|xi−yi|. ...
- CodeForces 630I Parking Lot (组合计数)
题目链接:http://codeforces.com/problemset/problem/630/I #include<bits/stdc++.h> using namespace st ...
- CodeForces 997C-Sky Full of Stars〖容斥定理+组合计数〗
网页链接:传送门 C. Sky Full of Stars time limit per test : 4 seconds memory limit per test : 256 megabytes ...
- Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)
Tennis Game CodeForces - 496D 通过排列组合解决问题. 首先两组不同素数的乘积,是互不相同的.这应该算是唯一分解定理的逆运用了. 然后是,输入中的素数,任意组合,就是n的因 ...
- 大数求乘法逆元c语言,乘法逆元(编程计算)+两道版题
前言 看到这里的小盆友们千万不要以为这个东西很难,其实就是个1+1->1(1个定义+1个定理->1坨乘法逆元).Let's begin.web 有关乘法逆元定义 这个咱们就不要玩笑了,来, ...
- 收藏 | Google 发布关于机器学习工程的最佳实践
来源:TensorFlow 本文约17800字,建议阅读10+分钟. 本文档旨在帮助已掌握机器学习基础知识的人员从 Google 机器学习的最佳实践中受益. 本文档旨在帮助已掌握机器学习基础知识的人员 ...
- 机器学习规则 (Rules of Machine Learning): 关于机器学习工程的最佳实践
马丁·辛克维奇 本文档旨在帮助已掌握机器学习基础知识的人员从 Google 机器学习的最佳实践中受益.它介绍了一种机器学习样式,类似于 Google C++ 样式指南和其他常用的实用编程指南.如果您学 ...
- LR模型常见问题小议
LR模型常见问题小议 标签: LR机器学习 2016-01-10 23:33 671人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: 机器学习(10) 作者同类文章X 版权声明:本文为博 ...
- 你还不会用python进行数据分析吗
你还不会用python进行数据分析吗 1.案例背景 用户价值细分是了解用户价值度的重要途径,而销售型公司中对于订单交易尤为关注,因此基于订单交易的价值度模型将更适合运营需求.针对交易数据分析的常用模型 ...
最新文章
- [原创] Matlab 指派问题模型代码
- 打印折痕方向(二叉树应用)
- gj4 深入类和对象
- Spring Boot笔记-利用Quartz进行定时任务,利用websocket推送到浏览器(界面为thymeleaf)
- Part1: Specification of Required Functions
- Linux echo
- 图 | 为什么存在关于图的研究
- 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
- 【Alpha】Scrum Meeting 1
- 通达信 c 语言,通达信C
- 有哪些「饥饿营销」的失败案例?
- 十大实用的开源电子商务工具推荐
- 我就不信了,spring基础知识这么总结整理还拿不下大厂offer(一)
- LCD1602液晶显示屏使用方法
- 浅谈软件测试行业的前景,就业方向和薪资待遇
- Oracle中表的键和检查,Oracle 过程中检查数据表存在与否
- 猫狗大战使用CNN分类
- 1016: 银行利率 Python
- 【Python 爬虫小项目 01】租房数据
- 改变MacBook Pro的鼠标响应速度
热门文章
- iPhone黑屏幕转圈圈(解决办法)
- 系统吞吐量、TPS(也叫QPS)、用户并发量、性能测试概念和公式
- ERROR [com.netflix.discovery.TimedSupervisorTask] - task supervisor timed out
- RabbitMQ的三大交换器详解
- android设置webview缓存目录,Android基础入门教程——7.5.5 WebView缓存问题
- centos 6.5 yum
- ubuntu下针对php的thrift 安装折腾记录
- Oracle 11gR2 RAC OCR和votingdisk故障恢复案例
- HDU-时间挑战 树状数组
- 设置checkbox的只读