Codeforces gym 101350G 数学
来源:互联网 发布:华硕mg248q设置软件 编辑:程序博客网 时间:2024/05/22 00:18
题意:给你一个n*m的矩阵和k个雷 问有多少矩形 不包含雷
题解:容斥搞一搞 0-1+2-3... 代表雷数 搞一搞就是答案
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;ll t,ans,n,m,k,d,x[30],y[30];ll lx,rx,ly,ry,xc;int c[30];ll C(ll a,ll b){ll ans=1,c=a-b;if(a==0)return 0;while(a!=c){ans=ans*a;a--;}while(b!=0){ans=ans/b;b--;}return ans;}int solve(int a){lx=n+2;rx=0;ly=m+2;ry=0;d=0;for(int i=0;i<k;i++)if(a&(1<<i)){if(x[i+1]<lx)lx=x[i+1];if(x[i+1]>rx)rx=x[i+1];if(y[i+1]<ly)ly=y[i+1];if(y[i+1]>ry)ry=y[i+1];d++;}ll ans1=0,ans2=0;if(lx==rx){ans1=n+(lx-1)*(n-rx);}else ans1=(lx)*(n-rx+1);if(ly==ry)ans2=m+(ly-1)*(m-ry);else ans2=(ly)*(m-ry+1);ll xc=ans1*ans2; if(d%2==1)ans-=xc;else ans+=xc;}int main(){scanf("%lld",&t);c[0]=1;for(int i=1;i<=21;i++)c[i]=c[i-1]*2;while(t--){scanf("%lld%lld%lld",&n,&m,&k);for(int i=1;i<=k;i++)scanf("%lld%lld",&x[i],&y[i]);ans=C(n+1,2)*C(m+1,2);for(int i=1;i<=c[k]-1;i++)solve(i);printf("%lld\n",ans);}return 0;}
0 0
- Codeforces gym 101350G 数学
- codeforces gym 100548G
- CodeForces Gym 100735G
- CodeForces Gym 100735G
- Codeforces-GYM-100923G
- codeforces [Gym-100814G]
- Codeforces Gym-101617G
- Codeforces gym 101149 G 想法
- Codeforces Gym 101164 G. Pokemons
- Codeforces Gym 100625G Getting Through
- codeforces Gym 100431G Persistent Queue
- Codeforces Gym 100543G Virus synthesis
- CodeForces Gym 100646G The Worm Turns
- 【模拟】NEERC15 G Generators (Codeforces GYM 100851)
- [Codeforces Gym] 100162G 爆搜+剪枝
- 【Codeforces Gym】 100162G Lyndon Words
- Gym 101341G I love Codeforces 模拟
- GYM 100883 G.Count Mix Strings(组合数学)
- 函数_调用指针交换函数(形参与实参)
- AngularJS第五讲
- C语言学习历程——Training02位运算04
- 求1+2+3+...+n
- 充分使用树莓派SD卡容量
- Codeforces gym 101350G 数学
- python学习笔记先导
- 信号量(生产者和消费者模型)
- Linux下如何使用awk解析json数据
- 安卓自定义弧形刻度选择器
- c语言基础(三)
- 关于Java序列化与反序列化
- nginx的反向代理与负载均衡
- Hibernate 出现Unsupported major.minor version 52.0 [duplicate]