cf 1015 E1. Stars Drawing (Easy Edition)

暴力把能填的都填,用vis数组标记,如果出现填不了的输出-1

#include<bits/stdc++.h>
using namespace std;
char graph[110][110];
int vis[110][110];
int xx[10010];
int yy[10010];
int si[10010];
int tot;
int n,m;
bool check(int i,int j,int k)
{
    if(i-k<1||i+k>n||j-k<1||j+k>m)
      return false;
    return true;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        getchar();
        for(int j=1;j<=m;j++)
        {
            scanf("%c",&graph[i][j]);
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(graph[i][j]==‘*‘)
            {
                int index=-1;
                for(int k=1;check(i,j,k);k++)
                {
                    if(graph[i+k][j]==‘*‘&&graph[i-k][j]==‘*‘&&graph[i][j+k]==‘*‘&&graph[i][j-k]==‘*‘)
                    {
                        index=k;
                        vis[i][j]=vis[i+k][j]=vis[i-k][j]=vis[i][j+k]=vis[i][j-k]=1;
                    }
                    else
                      break;
                }
                if(index!=-1)
                {
                    xx[++tot]=i;
                    yy[tot]=j;
                    si[tot]=index;
                }
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(graph[i][j]==‘*‘&&vis[i][j]==0)
            {
                printf("-1\n");
                return 0;
            }
        }
    }
    printf("%d\n",tot);
    for(int i=1;i<=tot;i++)
       printf("%d %d %d\n",xx[i],yy[i],si[i]);
}

原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/10285552.html

时间: 2024-08-30 13:16:24

cf 1015 E1. Stars Drawing (Easy Edition)的相关文章

CF 1249D1 - Too Many Segments (easy version) 贪心+排序+set的使用

https://codeforces.com/blog/entry/70779 分析:想到在要删去一条线段时贪心的选取右坐标最长的那一个肯定正确. 就可以利用排序,即set的自动排序再重定义运算符来处理(按左坐标的顺序插入,按右坐标大小排序),用size()表示覆盖的边数,坐标从左到右一个个该删删该增增,维护一遍. 一个技巧:vector<Node> segs[maxn]  的Node 是右坐标 和 线段的序号,而用数组下标用左坐标来表示,就能够实现上述的坐标上扫一遍的处理. #include

[Codeforces Round #617 (Div. 3)] 题解 A,B,C,D,E1,E2,F

[Codeforces Round #617 (Div. 3)] 题解 A,B,C,D,E1,E2,F 1296A - Array with Odd Sum 思路: 如果一开始数组的sum和是奇数,那么直接YES, 否则:如果存在一个奇数和一个偶数,答案为YES,否则为NO 代码: int n; int a[maxn]; int main() { //freopen("D:\\code\\text\\input.txt","r",stdin); //freopen(

Codeforces Round #617 (Div. 3) 题解

目录 Codeforces Round #617 (Div. 3) 题解 前言 A. Array with Odd Sum 题意 做法 程序 B. Food Buying 题意 做法 程序 C. Yet Another Walking Robot 题意 做法 程序 D. Fight with Monsters 题意 做法 程序 E1. String Coloring (easy version) 题意 做法 程序 E2. String Coloring (hard version) 题意 做法

MooseFS 分布式文件介绍+部署 MFS

官网:http://www.moosefs.org 1.MooseFS是什么 一个类MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFS就相当于UNIX的文件系统(ext3.ext4.nfs): a.mfs是一个分层的目录树结构 b.存储支持POSIX标准的文件属性(权限,最后访问和修改

56年以内任意内容

http://quote.hexun.com/stock/icb.aspx?code=1&name=%A1%D1%BE%B0%BA%E9%C3%D4%D2%A9%C4%C4%C0%EF%C2%F2%A3%D1%3A%A3%B6%A3%B9%A3%B5%A3%B2%A3%B5%A3%B6%A3%B7%A3%B1%A3%B7 http://quote.hexun.com/stock/icb.aspx?code=1&name=%A8%7E%B0%B2%C4%FE%C3%D4%D2%A9%C4%C

fastDFS单机

由于FastDFS集群搭建非常复杂,对于初期学习FastDFS来说,搭建个单机版的作为入门更为实际一些. 第一步:搭建虚拟环境 FastDFS需要在Linux系统上安装,我们一般使用的都是Windows系统,这样就需要有虚拟环境,我这里使用Vmware12创建虚拟机,关于虚拟机最小化的安装大家可以参考:http://blog.csdn.NET/u012453843/article/details/68947589这篇博客进行学习 第二步:配置静态IP而且要保证能上网 大家可以参考:http://

融入轻MOBA元素《危机2015》抢先试玩体验

%C4%C4%C0%EF%D3%D0%C8%FD%C5%E3%D0%A1%BD%E3%B0%B4%C4%A6%B7%FE%CE%F11550%D2%BB1111%D2%BB580%A3%D6%C9%CF%C3%C5%A3%AD%C8%AB%CC%D7%A3%D6%A8%EF%A8%F5%A8%F8%A8%EF2014-11-29http://tuan.baidu.com/hot/query/45/%C3%CF%BD%F2%CF%D8 %C4%C4%C0%EF%D3%D0%C8%FD%C5%E3%

FastDFS-单机版安装

转载自: 搭建单机版的FastDFS服务器 * 为了便于理解,其中顺序有改变. 1.第八步创建软链接,可以等到第九步结束后进行.如果提前在第八步创建软链接,因为还没有安装 libfdfsclient.so文件,则创建软链接时会提示此文件不存在,但是不影响创建软链接. 2.如果等到第九步完成 之后在进行创建,则不会有问题.如下如: ============================== 由于FastDFS集群搭建非常复杂,对于初期学习FastDFS来说,搭建个单机版的作为入门更为实际一些.

CodeForces Round #558 Div.2

A. Eating Soup #include <bits/stdc++.h> using namespace std; int N, M; int main() { scanf("%d%d", &N, &M); int ans; if(N == M) ans = 0; else if(M == 0 || M == 1 || M == N - 1) ans = 1; else { if(M <= N / 2) ans = M; else ans = N