【hrbust2294】方方正正
题意
哈理工2016级新生程序设计全国邀请赛C题
一个r行c列的01矩阵,告诉你每行的和、每列的和,问是否存在这样的矩阵?
题解
首先,行和和列和之和要相等,否则一定是NO。
然后根据Gale-Ryser定理判断存在性:
求出\(R^*=(r_1^*,r_2^*,...,r_m^*),r_i^*=行和大于等于i的行数\),
只要\(R^*\preceq S\)就存在,这里的S就是列和向量。
二元操作符\(\preceq\)的定义是:向量x的前i大的数之和总是比向量y的前i大的数之和要小或者相等,那么\(x\preceq y\)。
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 100006
int i,m,n;
long long rs,cs,r[N],c[N],w[N];
int main(){
while(~scanf("%d%d",&m,&n)){//m行n列
rs=cs=0;
memset(w,0,sizeof w);
for(i=1;i<=m;i++){
scanf("%d",&r[i]);
rs+=r[i];
w[r[i]]++;//w[i]:行和为i的有几个
}
for(i=1;i<=n;i++){
scanf("%d",&c[i]);
cs+=c[i];
}
if(rs!=cs){
puts("NO");
continue;
}
sort(c+1,c+1+n,greater<long long>());
for(i=n;i;i--)w[i]+=w[i+1];//w[i]:行和大于等于i的有几个
for(i=1;i<=n;i++){
c[i]+=c[i-1];
w[i]+=w[i-1];
if(c[i]>w[i])//w就是R*,若c[i]>w[i]表明R*不能盖过S
break;
}
if(i==n+1) puts("YES");
else puts("NO");
}
return 0;
}
【hrbust2294】方方正正的更多相关文章
- 【hrbust2294】修建传送门
题意 哈理工2016级新生程序设计全国邀请赛B题 n个点1~n,i到i+1的距离为a[i],现在可以在两个点之间建一个传送门,则两点之间距离为0,求建传送门后1号出发的最远距离最小是多少? 题解 a[ ...
- 前端知识杂烩(HTML[5]?+CSS篇)
1. CSS 优先级算法如何计算?2.如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?3.用纯CSS创建一个三角形的原理是什么?4. 如何解决inline-block元素的空白间距( ...
- 2014年6月份第1周51Aspx源码发布详情
企业汽车服务终端管理系统源码 2014-6-3 [VS2010]源码描述:本系统专门服务于(汽车美容4s店) 完整的一套汽车美容管理服务系统. 功能介绍:汽车美容服务终端功能强大而又简便实用,界面友 ...
- WPF快速入门系列(7)——深入解析WPF模板
一.引言 模板从字面意思理解是“具有一定规格的样板".在现实生活中,砖块都是方方正正的,那是因为制作砖块的模板是方方正正的,如果我们使模板为圆形的话,则制作出来的砖块就是圆形的,此时我们并不 ...
- transform你不知道的那些事
transform是诸多css3新特性中最打动我的,因为它让方方正正的box module变得真实了. transform通过一组函数实现了对盒子大小.位置.角度的2D或者3D变换.不过很长时间内,我 ...
- zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意
参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...
- 【转载】芯片级拆解51、AVR、MSP430、凌阳61、PIC,5种单片机,多张显微照片
先秀一张解剖照,放大裁剪,小米1S微距拍摄,800万像素摄像头很给力!今天等待被拆的是5个单片机芯片:(1)凌阳16位单片机SPCE061A ,这是我接触的第一个单片机,最高主频49MHz,32KB的 ...
- T60上安装Gentoo笔记
T60虽然已经很老了,也过了服役期限.但是从入手之后,相比与家里放着的几个其他的高配置"后辈",依然是手中的挚爱.4:3的屏幕,方方正正的内敛模型,很结实的钢筋铁骨,无论是性格还是 ...
- Android项目实战(七):Dialog主题Activity实现自定义对话框效果
想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择. 即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大 ...
随机推荐
- Servlet3.0的注解
1.@WebListener注解 表示的就是我们之前的在xml中配置的 <listener> <listener-class>ListenerClass</listene ...
- Eclipse搭建Maven Prooject(终于)
今天我们一起来探讨eclipse搭建maven项目的步骤 一.建一个maven项目, 1.找到File ,点击 2.弹出窗口,再点击new 3.弹出窗口,点击other 4.输入maven,找到mav ...
- Hibernate入门详解
学习Hibernate ,我们首先要知道为什么要学习它?它有什么好处?也就是我们为什么要学习框架技术? 还要知道 什么是Hibernate? 为什么要使用Hibernate? Hib ...
- Atitit 游戏的原理与概论attilax总结
Atitit 游戏的原理与概论attilax总结 1. 游戏历史2 1.1.1. 盘点PC游戏史上最重要的50款游戏2 1.1.2. 回味人类文明进程 五款经典的历史游戏2 2. 游戏类型(主要分为6 ...
- React Native JSX value should be expression or a quoted JSX text.
问题描述: 我在使用props时候, 我的写法是这样的 ... <View> <Person name='john' age=32 gender=true></Pers ...
- java 堆栈 理解
Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...
- Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
MySQL字符串比较bug: select * from table_a a left join table_b b on a.field_a = b.field_b error: Illegal ...
- vim 中替换
将80替换为10.0.0.19:80 :g/80/s//10.0.0.19:80/g
- Windows环境下的NodeJS+NPM+Bower安装配置
npm作为一个NodeJS的模块管理,之前我由于没有系统地看资料所以导致安装配置模块的时候走了一大段弯路,所以现在很有必要列出来记录下.我们要先配置npm的全局模块的存放路径以及cache的路径,例如 ...
- RSA算法原理
一直以来对linux中的ssh认证.SSL.TLS这些安全认证似懂非懂的.看到阮一峰博客中对RSA算法的原理做了非常详细的解释,看完之后茅塞顿开,关于RSA的相关文章如下 RSA算法原理(一) RSA ...