CF1579C (1500) 枚举

https://codeforces.com/problemset/problem/1579/C

 题目大意:

给出 n,m,k,给出一个大小为 nm 的矩形。矩形仅包含 " * " 和 " . "。需要你用任意个仅包含 " * " 的开口向上 v 形结构,两边斜率为1,且边长严格大于 k(包含交点),来包含所有矩形的 " * "。

 思路

用 st(i,j) 表示第 i 第 j 列有没有被涵盖。

暴力枚举每一个点作为 "V" 的交点,尽可能地延伸,即尽量地去找更长的满足条件的边,如果长度小于 k 就找到不为 " * " 的点,就不更新,否则就一直往上找,不断地更新 vis 数组。最后判断所有需涵盖是否全部涵盖就行了。

代码实现:

#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>

using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);

char a[25][25], ch;
bool st[25][25];
int n, m, k, x;

int check1(int x, int y)
{
    int s = -1;
    while(x && y && a[x][y]) -- y, -- x, ++ s;
    return s;
}
int check2(int x, int y)
{
    int s = -1;
    while(x && y <= m && a[x][y]) -- x, ++ y, ++ s;
    return s;
}
void color1(int x, int y, int z)
{
    st[x][y] = 1;
    while(z --) st[--x][--y] = 1;
}
void color2(int x, int y, int z)
{
    while(z --) st[--x][++y] = 1;
}

void solve()
{
    memset(st, 0, sizeof st);
    cin >> n >> m >> k;
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= m; j ++)
        {
            cin >> ch;
            if(ch == '*') a[i][j] = 1;
            else a[i][j] = 0;
        }
    }
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= m; j ++)
        {
            if( (x = min(check1(i,j), check2(i,j))) >= k ) color1(i, j, x),color2(i, j, x);
        }
    }
    for (int i = 1; i <= n; i ++ )
    {
        for(int j = 1; j <= m; j ++)
        {
            if(a[i][j] && !st[i][j])
            {
                cout << "NO" << endl; return;
            }
        }
    }
    cout << "YES" << endl;
}

int main()
{
    IOS
    int T = 1;
    cin >> T;
    while(T --)
    {
        solve();
    }
    
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
H3C CF8800是一款高性能的企业级交换机设备,用户手册是为了帮助用户正确配置和使用这款设备而编写的详细指南。 H3C CF8800用户手册主要包括以下内容: 1. 产品介绍:介绍了CF8800交换机的主要特点和硬件结构,包括端口配置、指示灯功能等。用户可以通过阅读这部分内容了解设备的基本情况。 2. 硬件安装:详细介绍了CF8800的安装步骤,包括机柜安装、电源连接、网线连接、风扇插入等。用户可以按照手册中给出的指引一步步完成设备的安装。 3. 系统配置:介绍了CF8800的系统配置方法,包括设备开机、登录认证、管理口配置等。用户可以根据手册中的说明设置设备的基本参数。 4. VLAN配置:详细介绍了CF8800的VLAN配置方法,包括新建VLAN、端口划分、端口模式设置等。用户可以根据手册中的指引配置设备的VLAN。 5. 路由配置:介绍了CF8800的路由配置方法,包括静态路由、动态路由、路由汇总等。用户可以按照手册中给出的步骤配置设备的路由。 6. 安全配置:详细介绍了CF8800的安全配置方法,包括访问控制列表(ACL)、端口安全、防护组等。用户可以根据手册中的说明加强设备的安全性。 总之,H3C CF8800用户手册是一本重要的工具,可以帮助用户快速熟悉设备的各项功能和配置方法。用户在使用CF8800交换机时,可以随时参考手册来解决设备配置和使用过程中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永夜天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值