L
来源:互联网 发布:深思考人工智能北京 编辑:程序博客网 时间:2024/05/17 09:26
L - 矩形游戏
给出一个无限的二维网格,左下角的单元格被称为(1,1)。 所有单元格最初都表示为零值。我们来玩个游戏。游戏由N个步骤组成,其中每个步骤都有两个整数a和b。 满足1≤u≤a和1≤v≤b的坐标(u,v)中的每个单元的值增加1。在N个这样的步骤之后,如果X是所有单元格中最大的数,您可以计算出网格中X的数量吗?
第一行输入包含一个整数N。接下来N行,每行包含由单个空格分隔的两个整数a和b。
输出一个整数,表示X的数量。
1 ≤ N ≤ 100 1 ≤ a ≤ 10^6 1 ≤ b ≤ 10^6
32 33 74 1
2
例如样例1中:假设这个网格是4*7的。还没有进行操作时:0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0 第一次操作后:0 0 0 0 0 0 00 0 0 0 0 0 01 1 1 0 0 0 01 1 1 0 0 0 0 第二次操作后:0 0 0 0 0 0 01 1 1 1 1 1 12 2 2 1 1 1 12 2 2 1 1 1 1 最后一次操作后网格是这样的:1 0 0 0 0 0 02 1 1 1 1 1 13 2 2 1 1 1 13 2 2 1 1 1 1 网格中最大的数为3, 3的数量为2,所以输出2。
这题其实很简单,把两列数字储存在两个数组里面,然后就排一下序,不过注意考虑是否0的情况,如果有0的话,不是没有最大数,而是最大数成了次大数,下面是我的代码:
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;long long a[10000000],b[1000000];int main(){ int n; long long i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%lld%lld",&a[i],&b[i]); sort(a,a+n); sort(b,b+n); if(a[0]==0) printf("%lld",a[1]*b[0]); if(b[0]==0) printf("%lld",a[0]*b[1]); else printf("%lld",a[0]*b[0]);return 0;}
阅读全文
0 0
- l
- .,l
- l
- l
- l
- ';l
- L
- l【
- ,l,
- L
- l
- L
- L
- L
- L
- L
- L
- L
- 快速网络的慢启动
- 理解 linux 工作队列
- 全网爬取6500多只基金|看看哪家基金最强
- 在Node.js中使用RabbitMQ系列二 任务队列
- hdu 2046 骨牌铺方格(Fibonacci)
- L
- 切换用户和修改密码
- OS 内存管理
- 标签控件的使用
- LInux学习笔记 --NFS
- 在Node.js中使用RabbitMQ系列一 Hello world
- 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)
- MySQL入门——修改数据表2:往指定的表中添加多列数据(字段)
- 多进程共享/同步