codechef [snackdown2017 Onsite Final] Minimax
题目描述
考虑一个 N 行 N 列的网格,行列编号均为 1 ∼ N。每个格子中包含一个整数。记 ri 为第 i 行的最小值,Ci 为第 i 列的最大值。我们称一个网格为好的,当且仅当满足:$$max(r1, . . . , rN ) = min(C1, . . . , CN )$$
大厨有这么一个网格,他可以将格子中的数字改为任意整数。请你告诉大厨,他至少需要改 变几个数字,才能使得网格变成好的。
输入格式
输入第一行,包含一个整数 N,代表网格的边长。 接下来 N 行,每行包含 N 个整数,代表每个格子中的整数。
输出格式
输出一个整数,代表最少需要改变的数字个数。
这是Easy难度题啊qaq,那我大概只能回去刷beginner了。
如果枚举一个最终k=max(ri)=max(li),那么代价就是一行内小于k的数字最少的数字数量加上一列内大于k的数字最少的数字数量,这样直接暴力是$O(n^4)$的。
然后窝尝试三分k的值(因为看起来是单峰的嘛),结果好像并不行……
回到暴力看一下,咦,这不是可以用堆优化一下嘛……复杂度$O(n^{2}logn)$
被人看着写博客催颓废是一种什么样的感受……
#include<queue>
#include<cstdio>
#include<cassert>
#include<algorithm>
#define fi first
#define se second
#define mp make_pair
#define MN 1100
using namespace std; struct na{int x,y;}p[];
int n,a[MN][MN],MMH=1e9,num=,r[MN],c[MN];
bool operator < (na x,na y){return a[x.x][x.y]<a[y.x][y.y];}
priority_queue<pair<int,int> > R,C;
int main(){
scanf("%d",&n); for (int i=;i<=n;i++) c[i]=n;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
scanf("%d",&a[i][j]),p[++num].x=i,p[num].y=j;
sort(p+,p++num);
for (int i=;i<=n;i++) R.push(mp(,i)),C.push(mp(-n,i)); int _L=,_R=;
for (int k=;k<=;k++){
while (a[p[_R].x][p[_R].y]==k&&_R<=num) _R++;
for (int i=_L;i<_R;i++) c[p[i].y]--,C.push(mp(-c[p[i].y],p[i].y));
while (C.top().fi!=-c[C.top().se]) C.pop();
while (R.top().fi!=-r[R.top().se]) R.pop();
if (-C.top().fi-R.top().fi<MMH) MMH=-C.top().fi-R.top().fi;
for (int i=_L;i<_R;i++) r[p[i].x]++,R.push(mp(-r[p[i].x],p[i].x));
_L=_R;
} printf("%d\n",MMH);
}
codechef [snackdown2017 Onsite Final] Minimax的更多相关文章
- codechef [snackdown2017 Onsite Final] AND Graph
传送门 题解给出了一个很强势的dp: i<K $$dp[i][len]*Fib[len+2-(t[i]==1)] -> dp[i+1][len]$$ $$dp[i][len]*Fib[le ...
- codechef [snackdown2017 Onsite Final] Fusing Weapons
传送门 题目描述 大厨最近迷上了一款勇者斗恶龙的游戏. 游戏每局开始前,会有 N 件武器摆成一圈.每件武器有一个整数的等级.大厨可以选择两件 相邻的等级相同(不妨设同为 A 级)的武器,将它们合成.这 ...
- 退役前的最后的做题记录upd:2019.04.04
考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...
- CROC 2016 - Final Round [Private, For Onsite Finalists Only] C. Binary Table FWT
C. Binary Table 题目连接: http://codeforces.com/problemset/problem/662/C Description You are given a tab ...
- [JZOJ6089]【CodeChef 2014 April Challenge】Final Battle of Chef【数据结构】【整体二分】
Description \(n,q,V\leq 100000,w_i\leq 10^9\) Solution 又是一道大数据结构 由于有一个下取整,这就导致了不同时间的修改值是不能简单的直接加在一起的 ...
- Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)
题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...
- Gym 102056I - Misunderstood … Missing - [DP][The 2018 ICPC Asia-East Continent Final Problem I]
题目链接:https://codeforces.com/gym/102056/problem/I Warm sunshine, cool wind and a fine day, while the ...
- java抽象、接口 和final
抽象 一.抽象类:不知道是具体什么东西的类. abstract class 类名 1.抽象类不能直接new出来. 2.抽象类可以没有抽象方法. public abstract class USB { ...
- Java内部类final语义实现
本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...
随机推荐
- C# 委托详解(一)
1.委托简单例子 class eeProgram { // 声明delegate对象 public delegate string CompareDelegate(int a, int b); // ...
- 变量声明declare,简单运算符运算,变量测试与内容替换
declare -/+ 选项 变量名 - 设类型 + 取消类型 -i 设为整型 -x 设为环境变量 -p 显示类型属性(property) [root@localhost ~]# a= [root@l ...
- JMeter接口返回数组键值对校验方法
$.data.tourRecommend[?(@.title=="产品特色")].type
- springboot 入门七-静态资源处理
Spring Boot 默认配置的/**映射到/static(或/public ,/META-INF/resources),/webjars/**会映射到classpath:/META-INF/res ...
- [数据结构]C语言链表实现
我学数据结构的时候也是感觉很困难,当我学完后我发现了之所以困难时因为我没有系统的进行学习,而且很多教授都只是注重数据结构思想,而忽略了代码方面,为此我写了这些博文给那些试图自学数据结构的朋友,希望你们 ...
- [转]winform 自动伸缩控件xpandercontrols 使用说明
链接地址:http://blog.sina.com.cn/s/blog_b5b004920101f5h3.html
- Simple Games Using SpriteKit
p.p1 { margin: 0.0px 0.0px 12.0px 0.0px; line-height: 14.0px; font: 12.0px Times; color: #000000 } s ...
- 连接虚拟机mysql无法访问,报错编号1130的解决方法
新装一台虚拟机mysql的时候,往往会出现win无法连接的情况,报错信息1130,是因为没有权限的问题,解决方案如下: mysql -u root -p mysql>use mysql; mys ...
- centos 打包RPM包 ntopng
需要在centos7上,将ntopng及其依赖的包一起打包成rpm包,了解centos7打包. 1.执行: yum -y install rpmdevtools 安装rpm工具 2.接下来执行:rp ...
- 一个好用的PHOTOSHOP切图插件(CutterMan插件下载)
请关注CutterMan官方微博,分享本站点到自己微博中@Cutterman,私信TA,就有啦~~ 下载地址:http://www.cutterman.cn/ 也许你兴冲冲的下载了,然后发现安装不上, ...