http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3955

题意:给出一个n*m的矩阵,定义矩阵中的特殊点Aij当且仅当Aij是这一行最小的唯一元素,是这一列最大的唯一元素。删除一些行和列,剩下的元素构成的矩阵一共有(2^n-1)* (2^m-1)种,求这些矩阵的特殊点的个数。

思路:对于这种问题,可以考虑每一个点对答案的贡献。

其实就只是对于每一个点,找出在该行大于它的点的数目a,在该列大于它的点的数目b,然后该点对于答案的贡献就是2^a * 2^b,用快速幂处理一下。

 #include <bits/stdc++.h>
using namespace std;
#define N 1010
const int MOD = 1e9 + ;
typedef long long LL;
LL mp[N][N], se[N], col[N][N], row[N][N];
LL f_pow(LL a, LL b) {
LL ans = ;
while(b) {
if(b & ) ans = (ans % MOD * a) % MOD;
a = a * a % MOD;
b >>= ;
}
return ans % MOD;
}
int main() {
int t; scanf("%d", &t);
while(t--) {
int n, m; scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++) for(int j = ; j <= m; j++) scanf("%lld", &mp[i][j]);
for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) se[j] = mp[i][j];
sort(se + , se + m + );
for(int j = ; j <= m; j++) row[i][j] = m - (upper_bound(se + , se + + m, mp[i][j]) - se) + ;
}
for(int i = ; i <= m; i++) {
for(int j = ; j <= n; j++) se[j] = -mp[j][i];
sort(se + , se + n + );
for(int j = ; j <= n; j++) col[j][i] = n - (upper_bound(se + , se + + n, -mp[j][i]) - se) + ;
}
LL res = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) {
// printf("%d - %d : %lld - %lld\n", i, j, row[i][j], col[i][j]);
res = (res % MOD + f_pow(2LL, row[i][j]) * f_pow(2LL, col[i][j]) % MOD) % MOD;
}
}
printf("%lld\n", res % MOD);
}
return ;
}

ZOJ 3955:Saddle Point(思维)的更多相关文章

  1. ZOJ 3955 Saddle Point

    排序. 枚举每一个格子,计算这个格子在多少矩阵中是鞍点,只要计算这一行有多少数字比他大,这一列有多少数字比他小,方案数乘一下就是这个格子对答案做出的贡献. #include<bits/stdc+ ...

  2. ZOJ 3955 Saddle Point 校赛 一道计数题

    ZOJ3955 题意是这样的 给定一个n*m的整数矩阵 n和m均小于1000 对这个矩阵删去任意行和列后剩余一个矩阵为M{x1,x2,,,,xm;y1,y2,,,,,yn}表示删除任意的M行N列 对于 ...

  3. Saddle Point ZOJ - 3955 题意题

    Chiaki has an n × m matrix A. Rows are numbered from 1 to n from top to bottom and columns are numbe ...

  4. Day7 - C - Saddle Point ZOJ - 3955

    Chiaki has an n × m matrix A. Rows are numbered from 1 to n from top to bottom and columns are numbe ...

  5. Saddle Point ZOJ - 3955(求每个值得贡献)

    题意: 给出一个矩阵,删掉一些行和列之后 求剩下矩阵的鞍点的总个数 解析: 对于每个点 我们可以求出来 它所在的行和列  有多少比它大的 设为a 有多少比它小的 设为b 然后对于那些行和列 都有两种操 ...

  6. ZOJ 4124 拓扑排序+思维dfs

    ZOJ - 4124Median 题目大意:有n个元素,给出m对a>b的关系,问哪个元素可能是第(n+1)/2个元素,可能的元素位置相应输出1,反之输出0 省赛都过去两周了,现在才补这题,这题感 ...

  7. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  8. Course Selection System ZOJ - 3956 01背包+思维

    Course Selection System ZOJ - 3956 这个题目居然是一个01背包,我觉得好难想啊,根本就没有想到. 这个题目把题目给的转化为  ans = a*a-a*b-b*b 这个 ...

  9. ZOJ 4060 - Flippy Sequence - [思维题][2018 ACM-ICPC Asia Qingdao Regional Problem C]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4060 题意: 给出两个 $0,1$ 字符串 $S,T$,现在你有 ...

随机推荐

  1. WPF中Binding使用StringFormat格式化字符串方法

    原文:WPF中Binding使用StringFormat格式化字符串方法 货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0 ...

  2. 用MVVM模式开发中遇到的零散问题总结(4)——自制摄像头拍摄大头贴控件

    原文:用MVVM模式开发中遇到的零散问题总结(4)--自制摄像头拍摄大头贴控件 一直有个疑问,为什么silverlight对摄像头支持这么好,WPF却一个库都没有....于是我各种苦恼啊,各种Code ...

  3. Android SharedPreferences中apply和commit的效率差距

    Android SharedPreferences中apply和commit的效率差距 经常看到它俩的速度有差别,apply和commit.到底差距多少,下面做一个统计.   apply commit ...

  4. 从零开始学习音视频编程技术(三) 开发环境搭建(Qt4.86手动设置环境,主要就是设置g++和qmake,比较透彻,附下载链接)

    1.先下载安装Qt 我们使用的版本是4.8. 可以自行百度下载也可以从下面的网盘地址下载: Qt库和编译器下载: 链接:http://pan.baidu.com/s/1hrUxLIG 密码:0181 ...

  5. iText类库再pdf中显示中文字体

    using iTextSharp.text; using System; using System.Collections.Generic; using System.IO; using System ...

  6. Win10《芒果TV》内测版现已支持在国行版 Xbox One 下载体验

    Win10<芒果TV>内测版现已支持在国行版 Xbox One 下载体验 关于国行为什么无法从商店下载安装芒果TV内测版(来自微软) 1.截至到目前<芒果TV - Preview&g ...

  7. Centos重启关机命令

    Linux centos重启命令: 1.reboot   普通重启 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户 ...

  8. VS2015设置VS2017的“快速操作”快捷键Alt+Enter

    选项 -  环境 - 键盘 - 视图.快速操作和重构 添加“Alt+Enter (文本编辑器)”

  9. 简单图标转xaml代码

    工具 PhotoShopCC(2017) Blend 2017 原图 步骤 1,使用钢笔工具勾勒出大致路径 2,将工作路径转为形状路径 3,图层右键->复制SVG <svg xmlns=& ...

  10. Qt 开发WEB Services客户端代码(使用gSoap)

    1.   首先下载gSoap开发包 http://sourceforge.net/projects/gsoap2  目录包含 wsdl2h.exe( 由wsdl生成接口头文件C/C++格式的头文件 ) ...