【UVA】201 Squares(模拟)

题目

题目
?



?

分析

记录一下再预处理一下。
?



?

代码

#include <bits/stdc++.h>
int main()
{
    int t=0,s,n;
    while(scanf("%d",&s)==1)
    {
        if(t!=0) printf("\n**********************************\n\n");
        int ans[11],H[21][21],V[21][21];
        memset(V,0,sizeof(V));memset(H,0,sizeof(H));memset(ans,0,sizeof(ans));
        scanf("%d",&n);
        for(int k=0;k<n;k++)
        {
            char s1[5];
            int i,j;
            scanf("%s%d%d",s1,&i,&j);
            if(s1[0]=='H') H[i][j]=1;
            else V[j][i]=1;
        }
        for(int k=1;k<=s;k++)
        {
            for(int i=1;i<=s;i++)
            for(int j=1;j<=s;j++)
            {
                int flag=1;
                for(int h=j;h<j+k;h++)
                    if(!H[i][h] || !H[i+k][h]) flag=0;
                for(int h=i;h<i+k;h++)
                    if(!V[h][j] || !V[h][j+k]) flag=0;
                ans[k]+=flag;
            }
        }
        printf("Problem #%d\n\n",++t);
        bool flag=true;
        for(int i=1;i<=s;i++)
        {
            if(ans[i]>0)
            {
                flag=false;
                printf("%d square (s) of size %d\n",ans[i],i);
            }
        }
        if(flag) printf("No completed squares can be found.\n");
    }
    return 0;
}
时间: 2024-11-05 22:06:01

【UVA】201 Squares(模拟)的相关文章

uva 201 - Squares(自己的方法,同学有更好一点点的方法)

#include<stdio.h> #include<string.h> #include<string> #include<iostream> #include<algorithm> using namespace std; int h[20][20]; int v[20][20]; int size_[20]; int n,m; int flag; void judge(int x,int y)//这是关键部分的代码,用来判读那是否能构成sq

UVA - 201 Squares(模拟 + 暴力)

题意:给出一些单位线段, 问各种大小的正方形有多少个.要控制输出格式. 解题思路:模拟存储横线和竖线,暴力枚举各种尺寸,O(N ^ 4),此题数据弱, 实际所用时间很短. 题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19423 Memory: 0 KB   Time: 16 MS Language: C++ 4.8.2   Result: Accepted #include<algorithm> #include

UVA - 201 Squares

Squares Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A children's board game consists of a square array of dots that contains lines connecting some of the pairs of adjacent dots. One part of the

uva 201 Squares 暴力

暴力 把边的信息装到一个field数组里面 第一维存水平线 第二维存竖直线 多重循环 先从边长为1正方形开始检查 每次检查都重新扫一下它的外圈 注意竖直线的地方它先给列坐标再给行坐标 输出有些繁琐 注意输出空行还有星星 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <cmath

UVA 712(二叉树模拟)

L - S-Trees Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Appoint description:  System Crawler  (2014-04-01) Description  S-Trees  A Strange Tree (S-tree) over the variable set  is a binary tree representing a B

UVA 246 - 10-20-30 (模拟+STL)

UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,如果有牌堆形成了以下3种情况(按顺序判断): 1.头两张+尾一张和为10或20或30 2.头一张+尾两张和为10或20或30 3.尾三张和为10或20或30 就把这三张牌拿走,放到总牌堆底(这步要不断执行直到不再满足条件或牌堆没了) 如果有一个牌堆因为这个操作被取完了,那么以后将不在这个位置发牌. 如果最后7个牌堆都可以消掉,那么赢,总牌堆用完,那么输,否则平(即不断循环)

HDU 1264 Counting Squares(模拟)

题目链接 Problem Description Your input is a series of rectangles, one per line. Each rectangle is specified as two points(X,Y) that specify the opposite corners of a rectangle. All coordinates will be integers in the range 0 to 100. For example, the lin

UVa 11988 (数组模拟链表) Broken Keyboard (a.k.a. Beiju Text)

题意: 模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键. 问最终屏幕上显示的结果是什么字符串. 分析: 如果在数组用大量的移动字符必然很耗时.所以next数组表示显示屏中s[i]右边的字符编号,变量cur模拟光标,即当前光标位于s[cur]的右边. 变量last记录显示屏最后一个字符的下标. 我理解的连接的情况应该是这样子的: 1 //#define LOCAL 2 #include <cstdio> 3 #include <cs

UVa 514 Rails(模拟栈)

题意  n辆火车按顺序依次进站  判断给定的出战顺序是否可能 用数组模拟模拟栈代表车站  车依次进站  每当栈顶火车序号与当前要出站的b[cur] 相等时 就让栈顶元素出栈  即top-- #include<cstdio> #include<cstring> using namespace std; const int N = 2000; int b[N], c[N]; int main() { int l, cur, top; while(scanf("%d"