Cow Tennis Tournament
//矩阵,异或
//树套树
总方案数-不合法方案数
C(N,3) - 不存在一个环(有人能打赢另外两个)
第i个人能赢d[i]场
sum{C(d[i],2)}
C(N,3)-sum{C(d[i],2)}
问题转化成k次操作后,每人的情况
离线,把所有操作都读进来,进行一些处理
把所有操作记录下来,什么能力值开始出现反转,什么能力值结束反转
5~9 5,10
离散化//考试的时候打暴力没有注意到这个,所以一分没有
l[i]+1 r[i]-1
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<vector> 7 using namespace std; 8 #define ls (t<<1) 9 #define rs ((t<<1)|1) 10 typedef long long ll; 11 typedef pair<int,int>pii; 12 const int maxn=1e5+7; 13 const int INF=0x7f7f7f7f; 14 int n,k; 15 ll ans; 16 int s[maxn],sum[maxn<<2],lazy[maxn<<2];//线段树开4倍,2倍不够 17 vector<int>vl[maxn],vr[maxn]; 18 void push_up(int t){ 19 sum[t]=sum[ls]+sum[rs]; 20 } 21 void push_down(int t,int l,int r){ 22 if(lazy[t]){ 23 lazy[t]^=1; 24 lazy[ls]^=1;lazy[rs]^=1; 25 int mid=(l+r)/2; 26 sum[ls]=mid-l+1-sum[ls]; 27 sum[rs]=r-mid-sum[rs]; 28 } 29 } 30 void update(int L,int R,int l,int r,int t){ 31 if(L<=l&&r<=R){ 32 sum[t]=r-l+1-sum[t];//取反后和进行的操作 33 lazy[t]^=1; 34 return; 35 } 36 push_down(t,l,r); 37 int mid=(l+r)/2; 38 if(L<=mid) update(L,R,l,mid,ls); 39 if(R>mid) update(L,R,mid+1,r,rs); 40 push_up(t); 41 } 42 int query(int L,int R,int l,int r,int t){ 43 if(L<=l&&r<=R) return sum[t]; 44 push_down(t,l,r); 45 int mid=(l+r)/2,ret=0; 46 if(L<=mid) ret+=query(L,R,l,mid,ls); 47 if(R>mid) ret+=query(L,R,mid+1,r,rs); 48 return ret; 49 } 50 int main(){ 51 cin>>n>>k; 52 for(int i=0;i<n;i++) cin>>s[i]; 53 sort(s,s+n); 54 while(k--){ 55 int l,r;cin>>l>>r; 56 l=lower_bound(s,s+n,l)-s; 57 r=upper_bound(s,s+n,r)-s-1; 58 if(l>r) continue; 59 vl[l].push_back(r);vr[r].push_back(l); 60 } 61 ll ans=1LL*n*(n-1)*(n-2)/6; 62 for(int i=0;i<n;i++){ 63 for(int j=0;j<vl[i].size();j++) update(i,vl[i][j],0,n-1,1); 64 int res=0; 65 if(i>0) res+=i-query(0,i-1,0,n-1,1); 66 if(i<n-1) res+=query(i+1,n-1,0,n-1,1); 67 ans-=1LL*res*(res-1)/2;//乘法原理,顺序要去掉 68 for(int j=0;j<vr[i].size();j++) update(vr[i][j],i,0,n-1,1); 69 } 70 cout<<ans<<endl; 71 return 0; 72 }
不过我感觉,......
转载于:https://www.cnblogs.com/lcan/p/9860955.html
Cow Tennis Tournament相关推荐
- 283EEZOJ #89 Cow Tennis Tournament
传送门 分析 我们考虑用所有的情况减去不合法的情况 不难想出所有情况为$C_n^3$ 于是我们考虑不合法的情况 我们知道对于一个不合法的三元组$(a,b,c)$一定是修改后$a<b,b>c ...
- CF283E Cow Tennis Tournament
线段树+组合数学 这道题直接做好像根本不可做,考虑转化:我们可以用任意方案数-不合法的方案数,那么答案为:\[C_n^3 - \sum_{i=1}^{n} C_{ki}^2\] 其中ki为第i个点能打 ...
- Transformers
概述 Transformer 是一种非常流行的架构,它利用和扩展自注意力的概念,为下游任务创建非常有用的输入数据表示. 优点: 通过上下文嵌入更好地表示我们的输入令牌,其中令牌表示基于使用自我注意的特 ...
- 2016区域赛前冲刺训练
UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...
- FORMULA ONE RACES AHEAD (F1锦标赛全速前进)
Introduction: Sleek cars race at high speeds as top racecar drivers compete for millions of dollars ...
- FORMULA ONE RACES AHEAD (F1锦标赛全速前进)【空中英语】
Introduction: Sleek cars race at high speeds as top race car drivers compete for millions of dollars ...
- POJ 3268 D-Silver Cow Party
http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...
- usaco Cow Tours 牛的旅行
Cow Tours 牛的旅行 农民 John 的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场. 但是就目前而言,你能看到至少有两个牧区不连通.这样,农民 John 就有 ...
- 贪心 POJ - 3617 Best Cow Line
Best Cow Line POJ - 3617 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of ...
最新文章
- ThinkPHP 详细介绍
- 第十六届智能车竞赛广东省线上比赛第二波来袭
- 从零开始学springboot笔记(二)-Spring boot返回json数据(中文无乱码)
- oracle错误代码12516,ORA-12516错误解决
- 电脑系统重装后没有声音怎么办​
- TensorFlow 教程 --进阶指南--3.4数据读取
- ROS 科大讯飞语音(三)识别篇
- android 动态规划,7. 动态规划(二)Android移动应用开发.pdf
- Android真机连接Eclipse时,打不开File Explorer下的data文件夹解决方法
- CCF201604-5 网络连接(募集解题代码)
- 堆排序matlab,matlab 堆排序 ...原创(初来报到)
- 升级总代分享思路_定档了!升级了!1月23日《我家那闺女》第二季要给你“好看”...
- Windows系统下hosts文件工作原理
- python爬取百度迁徙动态图_python爬虫动态爬取百度迁徙
- 从0到1打造自己的网络电话系统
- 简单了解mouseover与mouseenter的使用场景
- 学习机器学习总体感受
- 千亿商用车车联网市场,智能车载终端企业如何抢食?
- Java高级程序员必备:高性能计数器及Striped64和LongAdder
- 三十而立的用友,未来的路将向何方?