首页 > 试题广场 >

画板

[编程题]画板
  • 热度指数:1861 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

沫璃有一个画板,画板可以抽象成有100行每行100个像素点的正方形。沫璃在画板上画画,她一共画了n次,每次将一个矩形涂上颜色。沫璃想知道一共有多少个像素点被她涂过颜色。若一个像素点被涂了k次,那么认为有k个像素点被涂过颜色。


输入描述:
第一行一个数T(T<=100),表示数据组数。

对于每组数据,第一行一个整数n , (1<=n<=100)

接下来n行,每行4个整数x1, y1,
x2, y2 (1 <= x1 <= x2 <= 100, 1 <= y1 <= y2 <= 100),表示矩形的两个对角所对应的像素点的坐标。


输出描述:
对于每组数据,输出一行,表示沫璃一共涂了多少个像素点。
示例1

输入

2
2
1 1 2 3
2 2 3 3
2
1 1 3 3
1 1 3 3

输出

10
18
说实话,没有理解题意!
发表于 2019-07-31 15:53:20 回复(3)
//我解释一下题意,刚开始我也没读懂题意,以下用题目中用例说明下
/* 输入例子1: 
 * 2
 * 2
 * 1 1 2 3
 * 2 2 3 3
 * 2 
 * 1 1 3 3
 * 1 1 3 3
 * 
 * 从(1,1)点填涂到(2,3)点,一共涂了6个格子(包括了点(1,1),一开始没考虑这个点就懵了,直接跳下一题),
 * 用下图解释下这一操作(0表示已经涂色,1表示未涂色)
 * 0 0 0 1 1 1 1...
 * 0 0 0 1 1 1 1... 
 * 1 1 1 1 1 1 1...
 * ..
 * ..
 * 同理从点(2,2)涂到(3,3),一共涂了4个格子,所以用例输出10;第二个用例输出18.
 */
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int t = sc.nextInt();
            int sum=0;
            for (int j = 0; j < t; j++) {
                int x1 = sc.nextInt();
                int y1 = sc.nextInt();
                int x2 = sc.nextInt();
                int y2 = sc.nextInt();
                sum+=(x2-x1+1)*(y2-y1+1);
            }
            System.out.println(sum);
        }
    }
}

发表于 2019-08-15 16:06:29 回复(1)
importjava.util.*;
publicclassMain{
    publicstaticvoidmain(String[] args){
        Scanner sc = newScanner(System.in);
        intT = sc.nextInt();
        intn;
        int[] point = newint[4];
         
        for(inti = 0; i < T; i++){
            intnum = 0;
            n = sc.nextInt();
            for(intj = 0; j < n; j++){
                for(intk = 0; k < 4; k++){
                    point[k] = sc.nextInt();//输入坐标
                }
                //记录像素点
                num = num + (point[2] - point[0] + 1)*(point[3] - point[1] + 1);
            }
            //输出数据
            System.out.println(num);
        }
         
    }
     
}
发表于 2019-08-08 21:40:49 回复(1)
#include<iostream>
 
 
 
 
classpaint
{
public:
    paint(intx1, inty1, intx2, inty2) :_x1(x1), _y1(y1), _x2(x2), _y2(y2)
    {
 
    }
    ~paint()
    {
        _x1 = 0;
        _y1 = 0;
        _x2 = 0;
        _y2 = 0;
    }
    intmianji(intx1, inty1, intx2, inty2)
    {
        return(y2 - y1 + 1)*(x2 - x1 + 1);
    }
private:
    int_x1;
    int_y1;
    int_x2;
    int_y2;
};
usingnamespacestd;
intmain(void)
{
     
    intx1, y1, x2, y2, T, n;
    intsum[100] = {0};
    cin>>T;
    if(T > 0 && T < 101)
        for(inti = 0; i < T; ++i)
        {
            sum[i] = 0;
            cin >> n;
            if(n>0&&n<101)
                for(intj = 1; j <= n; ++j)
                {
                    cin >> x1 >> y1 >> x2 >> y2;
                    paint pa(x1, y1, x2, y2);
                    sum[i] += pa.mianji(x1, y1, x2, y2);
 
                }
            else
                cout << "false!"<< endl;
 
        }
    else
    {
        cout << "false!"<< endl;
    }
    for(inti = 0; sum[i] != 0; ++i)
        cout << sum[i] << endl;
 
    return0;
}
发表于 2019-08-05 14:20:58 回复(0)
T =int(input())
for i in range(T):
    sum1 =0
    n =int(input())
    for j in range(n):
        s =list( map(int,input().strip().split()))
        sum1 +=(s[2]-s[0]+1)*(s[3]-s[1]+1)
    print(sum1)
编辑于 2021-08-28 15:52:25 回复(0)
sum = int(input())

for i in range(sum):
    num = int(input())
    result = 0
    for j in range(num):
        my_list = list(map(int, input().split(" ")))
        x1 = my_list[0]
        y1 = my_list[1]
        x2 = my_list[2]
        y2 = my_list[3]
        square = (abs(x1-x2)+1)*(abs(y1-y2)+1)
        result += square
    print(result)
编辑于 2020-08-29 09:17:46 回复(0)
#include<iostream>
using namespace std;
int main()
{
    int T;
    cin>>T;
    for(int i=0;i<T;i++)
    {
        int n;
        cin>>n;
        int total=0;
        for(int j=0;j<n;j++)
        {
            int x1,y1,x2,y2;
            cin>>x1>>y1>>x2>>y2;
            total+=(x2-x1+1)*(y2-y1+1);
        }
        cout<<total<<endl;
    }
}

发表于 2020-04-05 11:22:37 回复(0)
读懂题意的话就简单加减乘除运算即可,没有大数陷阱
#include <iostream>
(720)#include <cmath>
using namespace std;
int main(){
    int T;
    cin>>T;
    while(T--){
        int n;
        cin>>n;
        int sum = 0;
        for(int i=0;i<n;i++){
            int x1,y1,x2,y2;
            cin>>x1>>y1>>x2>>y2;
            sum+=((abs(y2-y1)+1)*(abs(x2-x1)+1));
        }
        cout<<sum<<endl;
    }
    return 0;
}

发表于 2020-03-21 21:26:48 回复(1)
#include <iostream>
#include <vector>
using namespace std;

void show_num()
{
	long long fre;
	cin >> fre;
	long long num;
	long long flag = 0;
	long long gg[4];
	while (fre--)
	{
		for (long long i = 0; i < 4; i++)
		{
			cin >> gg[i];
		}
		flag += (gg[2] - gg[0] + 1) * (gg[3] - gg[1] + 1);

	}
	cout << flag<<endl;
}

int main()
{
	long long fre;
	cin >> fre;
	while (fre--)
		show_num();

}

发表于 2019-11-03 19:25:27 回复(0)
T = int(input())
ind = 1
for j in range(T):
    sums = 0
    n = int(input())
    for i in range(n):
        [x1,y1,x2,y2] = list(map(int,input().split()))
        sums = sums+(x2-x1+1)*(y2-y1+1)
    print(sums)
python3
发表于 2019-09-26 17:47:17 回复(0)

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int T = in.nextInt();
        while(in.hasNext()){
        int n = in.nextInt();
        int [][]a = new int [n][4];
        for(int i=0;i<n;i++){
            for(int j=0;j<4;j++){
                a[i][j]=in.nextInt();
            }
        }
        int t = 0;
        for(int i=0;i<n;i++){
          t = t+(a[i][3]-a[i][1]+1)*(a[i][2]-a[i][0]+1);
        }
        System.out.println(t);
        }
    }
}

发表于 2019-08-26 15:30:43 回复(0)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main(void){
    int T;
    int N;
    int i;
    int x1;
    int y1;
    int x2;
    int y2;
    int x;
    int y;
    int sum;
    int t;
    
    while(scanf("%d",&T)!=EOF){
        for(t=0;t<T;t++){
            sum = 0;
            scanf("%d",&N);
            for(i=0;i<N;i++){
                scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
                x = abs(x1-x2)+1;
                y = abs(y1-y2)+1;
                sum = sum + x*y;
            }
            printf("%d\n",sum);
        }
    }
    
    return 0;
}

发表于 2019-08-19 23:55:52 回复(0)
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //数组个数
        int a=sc.nextInt();
        int[] c=new int[a];
        for(int z=0;z<a;z++){
            int sum=0;
            //有几行
            int b=sc.nextInt();
            int num=0;
            for(int j=0;j<b;j++){


                   int aax=sc.nextInt();
                   int aay=sc.nextInt();
                   int bbx=sc.nextInt();
                   int bby=sc.nextInt();
                    int d=0;
                    int e=0;
                    if(aax>bbx){
                        d=aax-bbx+1;
                    }else {
                        d=bbx-aax+1;
                    }
                    if(aay>bby){
                        e=aay-bby+1;
                    }else {
                        e=bby-aay+1;
                    }
                    sum=sum+d*e;


            }
            c[z]=sum;
        }
        for(int t=0;t<a;t++){
            System.out.println(c[t]);
        }



    }
}

发表于 2019-08-16 10:34:05 回复(0)
n=int(input())
A=[[] for i in range(n)]
for i in range(n):
    num=int(input())
    A[i]=[input().split() for j in range(num)]
for i in range(n):
    sum_case=0
    for j in range(2):
        sum_ju=(int(A[i][j][2])-int(A[i][j][0])+1)*(int(A[i][j][3])-int(A[i][j][1])+1)
        sum_case=sum_case+sum_ju
    print(sum_case)

本地运行正确
发表于 2019-08-15 16:19:59 回复(0)
#include <iostream>
#include <cstdio>
#include <vector>
 
usingnamespacestd;
 
intmain(){
    //freopen("1.in","r",stdin);
    intT,i,j,z,n,sum,length;
     
    cin >> T;
     
     
    //input
    for(z=0; z<T; z++){
        sum=0;
        cin>>n;
        vector<int> a(4*n);
         
        for(i=0; i<n; i++){
            for(j=0; j<4; j++){
                scanf("%d",&a[j]);
            }
            sum+=(a[2]-a[0]+1)*(a[3]-a[1]+1);
        }
        cout<<sum<<endl;
 
    }
 
 
    return0;
}
编辑于 2019-08-12 18:20:36 回复(1)

PHP版本

<?php 
$groups = intval(fgets(STDIN));
$pixSumArr = [];
for($i = 0; $i < $groups; $i++) {
    $columns = intval(fgets(STDIN));
    $pixelSum = 0;
    for($j = 0; $j < $columns; $j++) {
        $coordinate = explode(" ", rtrim(fgets(STDIN)));
        $pixelSum += ($coordinate[2] - $coordinate[0] + 1) * ($coordinate[3] - $coordinate[1] + 1);
    }
    $pixSumArr[] = $pixelSum;
}
for($k = 0; $k < $groups; $k++) {
    echo $pixSumArr[$k] . PHP_EOL;
}

Go版本

package main

import (
    "bufio"
    "fmt"
    "os"
    "strconv"
    "strings"
)    

var (
    groups int
    columns    int
)
func main() {
    inputReader := bufio.NewReader(os.Stdin)
    groupsStr, err := inputReader.ReadString('\n')
    if err != nil {
        fmt.Println("groups read error: ", err)
        return
    }
    groupsStr = strings.Replace(groupsStr, "\n", "", -1)
    groups, err := strconv.Atoi(groupsStr)
    if err != nil {
        fmt.Println("convert groups to int failed, err: ", err)
        return
    }
    var pixelSumSlice []int
    for groups > 0 {
        columnsStr, err := inputReader.ReadString('\n')
        columnsStr = strings.Replace(columnsStr, "\n", "", -1)
        columns, err := strconv.Atoi(columnsStr)
        if err != nil {
            fmt.Println("columns convert to int failed, err: ", err)
            return
        }
        var pixelSum int
        for columns > 0 {
            columnsArgsStr, err := inputReader.ReadString('\n')
            if err != nil {
                fmt.Println("columns args read failed, err: ", err)
                return
            }
            columnsArgsStr = strings.Replace(columnsArgsStr, "\n", "", -1)
            columnsArgs := strings.Split(columnsArgsStr, " ")
            x1, _ := strconv.Atoi(columnsArgs[0])
            x2, _ := strconv.Atoi(columnsArgs[2])
            y1, _ := strconv.Atoi(columnsArgs[1])
            y2, _ := strconv.Atoi(columnsArgs[3])
            pixelSum += (x2 - x1 + 1) * (y2 - y1 + 1)
            columns--
        }
        pixelSumSlice = append(pixelSumSlice, pixelSum)
        groups--
    }
    if len(pixelSumSlice) == 0  {
        return
    }
    for _, val := range pixelSumSlice {
        fmt.Println(val)
    }
}
编辑于 2019-08-09 18:00:51 回复(0)
算长X宽就好了

# coding:utf-8
import sys
try:
    num = int(input())
    while num:
        n = int(input())
        sum = 0
        while n:
            [x1, y1, x2, y2] = list(map(int, sys.stdin.readline().strip().split(' ')))
            sum += (x2-x1+1) * (y2-y1+1)
            n -= 1
        num -= 1
        print(sum)
except:
    pass


发表于 2019-08-08 14:50:54 回复(0)
#include<stdio.h>
intnum[100][4];
intmain()
{
    intT,sum=0,i,j,n,k=0;
    scanf("%d",&T);
    if(T>100)
        printf("input error!");
else  
{
    while(k < T)
    {
     sum = 0;
     scanf("%d",&n);
     for(i = 0;i < n;i++)
          {
            for(j = 0;j < 4;j++)
            scanf("%d",&num[i][j]);
            sum += (num[i][3]-num[i][1]+1)*(num[i][2]-num[i][0]+1);
          }
     printf("%d\n",sum);k++;
    }
}
}
发表于 2019-08-05 20:22:06 回复(0)
什么垃圾网站,我在eclipse运行挺好的,到这就数组越界?溜了溜了
发表于 2019-08-05 15:54:31 回复(0)
#include <iostream>
#include <vector>
usingnamespacestd;
 
intmain(){
    inttupleNum;
    cin>>tupleNum;
    intarr[4];
    //int result[tupleNum];
    intarea=0;
    for(inttup_i=0;tup_i<tupleNum;tup_i++){
        intarrayNum;
        cin>>arrayNum;
        for(intarr_i=0;arr_i<arrayNum;arr_i++){
            for(intonerow_i=0;onerow_i<4;onerow_i++){
                cin>>arr[onerow_i];
            }
            area+=(arr[2]-arr[0]+1)*(arr[3]-arr[1]+1);
        }
        //result[tup_i]=area;
        cout<<area<<endl;
        area=0;
    }
}

发表于 2019-08-03 13:54:40 回复(1)