Poj 1656 Counting Black
来源:互联网 发布:mac地址转pin码工具 编辑:程序博客网 时间:2024/03/29 21:52
Counting Black
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 10754 Accepted: 6940
Description
There is a board with 100 * 100 grids as shown below. The left-top gird is denoted as (1, 1) and the right-bottom grid is (100, 100).
We may apply three commands to the board:
In the beginning, all the grids on the board are white. We apply a series of commands to the board. Your task is to write a program to give the numbers of black grids within a required region when a TEST command is applied.
We may apply three commands to the board:
1.WHITE x, y, L // Paint a white square on the board, // the square is defined by left-top grid (x, y) // and right-bottom grid (x+L-1, y+L-1)2.BLACK x, y, L // Paint a black square on the board, // the square is defined by left-top grid (x, y) // and right-bottom grid (x+L-1, y+L-1)3.TEST x, y, L // Ask for the number of black grids // in the square (x, y)- (x+L-1, y+L-1)
In the beginning, all the grids on the board are white. We apply a series of commands to the board. Your task is to write a program to give the numbers of black grids within a required region when a TEST command is applied.
Input
The first line of the input is an integer t (1 <= t <= 100), representing the number of commands. In each of the following lines, there is a command. Assume all the commands are legal which means that they won't try to paint/test the grids outside the board.
Output
For each TEST command, print a line with the number of black grids in the required region.
Sample Input
5BLACK 1 1 2BLACK 2 2 2TEST 1 1 3WHITE 2 1 1TEST 1 1 3
Sample Output
76
Source
POJ Monthly--2004.05.15 Liu Rujia@POJ
思路:简单的模拟题,按照题目要求进行模拟就行了
AC代码如下:
#include <iostream>#include <cstring>#include <string>using namespace std;const int maxn=100+5;int mp[maxn][maxn];void paint(int x,int y,int l,int sign){ for(int i=x;i<=x+l-1;i++) for(int j=y;j<=y+l-1;j++){ if(sign) mp[i][j]=1; else mp[i][j]=0; }}void show(int x,int y,int l){ int cnt=0; for(int i=x;i<=x+l-1;i++) for(int j=y;j<=y+l-1;j++){ if(mp[i][j]) cnt++; } cout<<cnt<<endl;}int main(){ int n; while(cin>>n){ memset(mp,0,sizeof(mp)); string tmp; int x,y,l; for(int i=0;i<n;i++){ cin>>tmp>>x>>y>>l; if(tmp=="BLACK") paint(x,y,l,1); else if(tmp=="WHITE") paint(x,y,l,0); else show(x,y,l); } } return 0;}
0 0
- POJ 1656 Counting Black
- poj 1656 Counting Black
- POJ 1656 Counting Black
- poj 1656 Counting Black
- poj 1656 Counting Black
- poj 1656 Counting Black
- poj 1656 Counting Black
- poj 1656 Counting Black
- POJ 1656 Counting Black
- Poj 1656 Counting Black
- poj 1656 Counting Black 水题
- POJ-1656-Counting Black- 四分树
- POJ 1656 Counting Black(水~)
- poj-1656-Counting Black-(树状数组)
- POJ-1565-Counting Black
- PKU 1656 Counting black
- 1656:Counting Black
- POJ-1656 Counting Black (二维树状数组 入门题)
- SQLPlus常用操作
- Application内在SD卡中创建文件,但PC端无法看到
- pbc library on mac
- 编写驱动-- HelloWord
- secure CRT can't connects to Ubuntu and Ubuntu can't connets to Internet
- Poj 1656 Counting Black
- JAVA并发处理经验(四)并行模式与算法4:并行搜索模式
- 讨论:什么才算是真正的编程能力?
- C#基础精华08(反射,程序集)
- IOS级联(省份和城市)
- HibernateUtil公共类的使用------java操作数据库(1)
- python tkinter实现简单计算器
- hdu2191(多重背包问题)
- AlertDialog(自定义对话框)示例