先算一下总的子矩阵个数

总共最多只有20个点

状压一下然后枚举
容斥一下
把求出来的答案减去包含1个点的子矩阵再加上包含2个点的减去3个点的……

#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <queue>
#include <cstdio>
#include <map>
#include <set>
#include <utility>
#include <stack>
#include <cstring>
#include <cmath>
#include <vector>
#include <ctime>
#include <bitset>
using namespace std;
#define pb push_back
#define sd(n) scanf("%d",&n)
#define sdd(n,m) scanf("%d%d",&n,&m)
#define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define sld(n) scanf("%lld",&n)
#define sldd(n,m) scanf("%lld%lld",&n,&m)
#define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k)
#define sf(n) scanf("%lf",&n)
#define sff(n,m) scanf("%lf%lf",&n,&m)
#define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k)
#define ss(str) scanf("%s",str)
#define ans() printf("%d",ans)
#define ansn() printf("%d\n",ans)
#define anss() printf("%d ",ans)
#define lans() printf("%lld",ans)
#define lanss() printf("%lld ",ans)
#define lansn() printf("%lld\n",ans)
#define fansn() printf("%.6f\n",ans)
#define r0(i,n) for(int i=0;i<(n);++i)
#define r1(i,e) for(int i=1;i<=e;++i)
#define rn(i,e) for(int i=e;i>=1;--i)
#define rsz(i,v) for(int i=0;i<(int)v.size();++i)
#define szz(x) ((int)x.size())
#define mst(abc,bca) memset(abc,bca,sizeof abc)
#define lowbit(a) (a&(-a))
#define all(a) a.begin(),a.end()
#define pii pair<int,int>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define mp make_pair
#define lrt rt<<1
#define rrt rt<<1|1
#define X first
#define Y second
#define PI (acos(-1.0))
#define sqr(a) ((a)*(a))
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000000+7;
const double eps=1e-9;
const int inf=0x3f3f3f3f;
const ll infl = 10000000000000000;
const int maxn=  200000+10;
const int maxm = 40000+10;
//Pretests passed
int in(int &ret)
{char c;int sgn ;if(c=getchar(),c==EOF)return -1;while(c!='-'&&(c<'0'||c>'9'))c=getchar();sgn = (c=='-')?-1:1;ret = (c=='-')?0:(c-'0');while(c=getchar(),c>='0'&&c<='9')ret = ret*10+(c-'0');ret *=sgn;return 1;
}pii a[maxn];
pii lu(pii q,pii w)
{int x = min(q.X,w.X);int y = min(q.Y,w.Y);return mp(x,y);
}
pii rd(pii q,pii w)
{int x = max(q.X,w.X);int y = max(q.Y,w.Y);return mp(x,y);
}
int main()
{
#ifdef LOCALfreopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
#endif // LOCALint t;sd(t);while(t--){int n,m;sdd(n,m);int k;sd(k);r1(i,k){int x , y;sdd(x,y);a[i] = mp(x,y);}int mx = 1<<k;ll ans = (1LL*n*(n+1)/2)*(1LL*m*(m+1)/2);
//        for(int i=1;i<=n;++i)
//        {//            for(int j = 1;j<=m;++j)
//            {//                ll can = (1LL*n-i+1)*(1LL*m-j+1);
//                ans += can;
//            }
//        }for(int i=0;i<mx;++i){int cnt = 0;pii ul = mp(n,m), dr = mp(1,1);for(int j = 0;j<k;++j)if((1<<j)&i)ul = lu(ul,a[j+1]) , dr = rd(dr,a[j+1]),++cnt;if(!cnt)continue;int idx = cnt&1 ? -1:1;ll q = 1LL*ul.X*ul.Y;ll w = (1LL*n - dr.X +1 )*(1LL*m - dr.Y+1);ans += q*w*idx;}lansn();}return 0;
}

2017 ACM Arabella Collegiate Programming Contest G. Snake Rana GYM101350G相关推荐

  1. 2017 ACM Arabella Collegiate Programming Contest div2的题,部分题目写个题解

    F. Monkeying Around   维护点在多少个线段上 http://codeforces.com/gym/101350/problem/F 题意:有m个笑话,每个笑话的区间是[L, R], ...

  2. 【容斥】2017 ACM Arabella Collegiate Programming Contest

    比赛连接 G. Snake Rana Old Macdonald wants to build a new hen house for his hens. He buys a new rectangu ...

  3. 2017 ACM Arabella Collegiate Programming Contest(solved 9/13, complex 12/13)

    A.Sherlock Bones 题意: 给出长度为n的01串,问f(i,j)=f(j,k),(i<j<k)的i,j,k取值种数.其中f(i,j)表示[i,j]内1的个数, 且s[j]必须 ...

  4. 2017 ACM Arabella Collegiate Programming Contest(solved 11/13)

    省选考前单挑做点ACM练练细节还是很不错的嘛- 福利:http://codeforces.com/gym/101350 先来放上惨不忍睹的virtual participate成绩(中间跑去食堂吃饭于 ...

  5. 2017 ACM Arabella Collegiate Programming Contest

    Gym101350A. Sherlock Bones 题目大意: 给定一个长度为 \(n\) 的 \(01\) 序列 \(\{s_n\}\),定义 \(F(i, j)\) 表示序列第 \(i\) 项到 ...

  6. 2017 ACM Arabella Collegiate Programming Contest E. Competitive Seagulls GYM101350E

    博弈经典套路 考虑把可选择的操作变成2个相同的 然后跟着对手操作 为奇数的时候选一个奇数把两边留出相同长度的白色 为偶数的时候选一个2把两边留出相同长度的白色 那么只有2 和 3 是不可以的 int ...

  7. 2017 ACM Arabella Collegiate Programming Contest A. Sherlock Bones GYM101350A

    把问题转换为求区间内1为奇数的区间有多少个 那么直接记录从1开始为奇数和偶数的区间有多少就算出这个了 但是有不合法的就是只有1个1的区间 所以再减一下 重复的再加回来 #include <ios ...

  8. 2017 ACM Arabella Collegiate Programming Contest F. Monkeying Around GYM101350F

    对单个点考虑 实际上每个点的结果只被最后的那种操作影响 那么处理一下每个点对应的最后一个操作种类 然后对每个种类都和对应的点都检查一下是否被操作了2次 转化成n个点 m个区间 多少点被覆盖>=2 ...

  9. 脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest

    题目链接:http://codeforces.com/gym/101350/problem/E 题目大意:给你一个长度为n的方格,方格上面都被染色成了白色.每次染色都是选择白色的,假设目前选择的这块白 ...

最新文章

  1. 一文了解推荐系统中的图神经网络
  2. 北斗导航 | 卫星导航基础知识(卫星导航时间系统)
  3. python随机出100道加法题_自动出题随机100题-20以内加减法全部算式
  4. Python字符串模糊匹配库FuzzyWuzzy
  5. 给程序猿简历的一些建议
  6. [No0000123]WPF DataGrid Columns Visibility的绑定
  7. consul mysql 检查_MySQL在Consul服务中的健康检查逻辑
  8. drupal.behavior 和 document.ready 没有直接的关系
  9. Linux软件包安装之yum的使用
  10. java 车牌号识别_JAVA车牌识别(包含车牌定位及车牌内容识别)
  11. 12万字 | 2021数据安全与个人信息保护技术白皮书(附下载)
  12. PHP实现图片压缩同时保持清晰度
  13. 项目ITP(一) 二维码
  14. win10安装mysql初始化失败怎么办_Win10系统安装SQL2000失败 初始化错误该怎么解决?...
  15. 每日一面 - 从 innodb 的索引结构分析,为什么索引的 key 长度不能太长?
  16. mysql扫盲篇_MySQL小白扫盲(一)
  17. iOS马甲包开发招式及规避4.3方法合集
  18. 桌面打开计算机图标卡,电脑打开 只有界面什么都没有 一直卡一个壁纸
  19. 【GO】13.Iris WebSocket 实例
  20. 如何做出实用而强大的数据地图?

热门文章

  1. 悟空qq通讯录加好友
  2. readmemh函数引用的txt格式_[转载](zz)用于读取和写入文本文件Verilog代码
  3. 被孙杨遮挡LOGO的安踏,到底做错了什么?
  4. RGBA 编码为 YUV420SP【NEON】
  5. HTML特效推荐,超级惊艳 10款HTML5动画特效推荐[转]
  6. 2022年墙壁挂架/电视支架怎么选?四大专业电视支架品牌介绍
  7. Gunicorn、Supervisor
  8. vuex两个问题:vuex__WEBPACK_IMPORTED_MODULE_1__.default.store is not a constructor,“$store“ is not defin
  9. 服务器里那个文件是地图的爆率,关于普通图爆率研究
  10. 企业微信-自建应用一:介绍与创建