Description

Ziyao has a big drawing board with N * M squares. At the beginning, all the squares on the board are white, represented by the number 0. We can see the 4 * 4 whilte drawing board is:

0000

0000

0000

0000

One day Ziyao wants to draw on the board. He will draw  for T times. Each time he will draw a rectangle with the color he like.For each rectangle, we use 4 integers (x1, y1, x2, y2) to express it. It means all squares whose coordinate (x, y)  exist both x1 <= x <=x2 and y1 <= y <= y2. If two rectangles are intersected, the intersected part will be covered by the color later drawing.

For example, if he draw a rectangle (1, 2, 3, 3) on the white board with the color ‘1’, the board will be:

0110

0110

0110

0000

And if he go on drawing a rectangle (2, 1, 3, 2) by ‘2’, the board will be:

0110

2210

2210

0000

Now, Ziyao Big God will tell you his drawing process, please tell me how many colors will be there on the board.

Input

The first line has 3 integers, N, M, T.(0 < N, M <= 100, 0 <= T <=20)

The next T lines, each line has 5 integers x1, y1, x2, y2, c, (x1, y1, x2, y2) express the rectangle and c is the color.(1 <= x1, x2 <= N, 1 <= y1, y2 <=M, 1 <= c <= T)

Output

Just one number, how many colors on the board.

PS:’0’ is also a kind of color.

Sample Input 1

4 4 2

1 2 2 3 1

2 1 3 2 2

Sample Input 2

4 4 2

1 1 1 1 2

1 1 4 4 1

Sample Output 1

3

Sample Output 2

1

Hint

For the first sample, the board is

0110

2210

2200

0000

There are 3 colors:0,1,2.

For the second sample, the board is

1111

1111

1111

1111

There are only 1 color: 1.

这道题的话还好,主要注意的是题目的第一行或者列是数组下标为0的时候,这里要注意,还有就是怎么算出总共的颜色有多少种,我是另外开个数组,然后有数字的就做上标记

我的

#include<stdio.h>
int a[100][100] = {0};
int main() {
int n, m, t;
int b[200] = {0};
int x1, y1, x2, y2, c, sum = 0, flag = 0;
scanf("%d %d %d", &n, &m, &t);
while (t--) {
scanf("%d %d %d %d %d", &x1, &y1,&x2, &y2, &c);
x1 -= 1;
x2 -= 1;
y1 -= 1;
y2 -= 1;
for (int i = x1; i <= x2; i++) {
for (int j = y1; j <= y2; j++) {
a[i][j] = c;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int temp = a[i][j];
b[temp]++; }
}
for (int i = 0; i < 200; i++) {
if (b[i] != 0)
sum++;
}
printf("%d", sum);
return 0;
}

  

标程(思想差不多)

1.#include <stdio.h>
2.int n, m, t, a[100][100], i, j, ans;
3.int main() {
4. int x1, y1, x2, y2, c, colors[21];
5. scanf("%d%d%d", &n, &m, &t);
6. for (i = 0; i < n; i++)
7. for (j = 0; j < n; j++) a[i][j] = 0;
8. while (t--) {
9. scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &c);
10. for (i = x1; i <= x2; i++)
11. for (j = y1; j <= y2; j++)
12. a[i - 1][j - 1] = c;
13. }
14. for (i = 0; i <= 20; i++) colors[i] = 0;
15. for (i = 0; i < n; i++)
16. for (j = 0; j < m; j++)
17. colors[a[i][j]] = 1;\\原来是可以这样的
18. ans = 0;
19. for (i = 0; i <= 20; i++) ans += colors[i];
20. printf("%d", ans);
21. return 0;
22.}

  

[2013 Final] Colors的更多相关文章

  1. Amazon Hiring Campus 2013 - Final 6

    Let's assume that there is a simple market for beans. Every day there is a published bean price in t ...

  2. LOJ#2764. 「JOI 2013 Final」JOIOI 塔

    题目地址 https://loj.ac/problem/2764 题解 真的想不到二分...不看tag的话... 考虑二分答案转化为判定问题,那么问题就变成了能不能组合出x个JOI/IOI,考虑贪心判 ...

  3. javascript继承笔记

    //原型(prototype):原型是一个对象,其他对象可以通过它实现属性继承 /*笔记: * 1.类式继承:通过原型链继承的方式 * 2.原型式继承:对类式继承的封装 * 3.寄生式继承:对原型继承 ...

  4. JavaScript原型链和继承

    1.概念 JavaScript并不提供一个class的实现,在ES6中提供class关键字,但是这个只是一个语法糖,JavaScript仍然是基于原型的.JavaScript只有一种结构:对象.每个对 ...

  5. 阅读《JavaScript设计模式》第二章心得

    面向对象编程 面向对象编程就是将你的需求抽象成一个对象.然后针对这个对象分析其特征(属性)与动作(方法).这个对象我们称之为类.面向对象编程思想其中的一个特点就是封装. 1.私有属性.私有方法.特权方 ...

  6. 「题解」:[loj2763][JOI2013]现代豪宅

    问题 A: 现代豪宅 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...

  7. 「CSP-S模拟赛」2019第三场

    目录 T1 「POI2007」山峰和山谷 Ridges and Valleys 题目 考场思路(几近正解) 正解 T2 「JOI 2013 Final」 现代豪宅 题目 考场思路(正解) T3 「SC ...

  8. Integrating SharePoint 2013 with ADFS and Shibboleth

    Time again to attempt to implement that exciting technology, Federation Services (Web Single Sign On ...

  9. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图

    [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...

随机推荐

  1. php curl vs python提交多维数组+文件

    总结: 1.data数据格式 2.php post 格式无需json_encode(关联数组,所以可以绕弯)  参考:http://bbs.csdn.net/topics/390645553?page ...

  2. JS,Jquery获取各种屏幕的宽度和高度

    Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...

  3. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  4. SQL笔记 [SQL判断是否存在] [长期更新] (-2015.4)

    --判断某个存储过程是否存在if exists (select * from sysobjects where id = object_id(N'[p_CreateTable]') and OBJEC ...

  5. [winserver]设置Server2008R2远程桌面允许每个用户运行多个会话

    首先打开"服务器管理器",选择"角色"-在对话框右边部分选择"添加角色" 根据提示一步步安装即可. 然后在角色中找到"远程桌面服务 ...

  6. dll 导出函数名的那些事

    dll 导出函数名的那些事 关键字: VC++  DLL  导出函数 经常使用VC6的Dependency或者是Depends工具查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导 ...

  7. 创建Android项目时出错——No resource found that matches the given name 'Theme.AppCompat.Light'

    创建Android项目时出错,error: Error retrieving parent for item: No resource found that matches the given nam ...

  8. js 更改head的title

    使用document.title = "hello"; 不能使用 $("title").text("dd");或者            $ ...

  9. html() 和 text() 方法的区别

    html()方法仅支持XHTML的文档,不能用于XML文档,而text()既支持HTML文档,也 支持XML文档. html():没有参数,用于获取html的值: html(val):有参数,用于设置 ...

  10. Composite(组合)--对象结构型模式

    1.意图 将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 2.动机 可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成 ...