poj 2585 Window Pains

简介:

  

     格子覆盖问题,有两种方法。

 

     1.可以当做一道模拟题,每次找到一块完整的玻璃,将其取下,看最后能否将所有玻璃取下即可,因为数据量比较少,所以复杂度很低。

 

     2.可以看成一个AOV网络,寻找拓扑排序,看是否存在环,我就这样写的,但是昨晚把topo的dfs写错了o(╯□╰)o,今早查书才发现,dfs的拓扑是从后往前做topo,所以发现已存在在序列中的点是木有影响的。

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#define INF 1E9
using namespace std;
vector<int> map[16];
bool ok[10][10];
int vis[10];
void init()//确定每个点对应的窗口号
{
    int i,now=0;
    for(i=1;i<10&&now<15;i++)
    {
        map[now].push_back(i);
        map[now+1].push_back(i);
        map[now+4].push_back(i);
        map[now+5].push_back(i);
        now++;
        if(i%3==0)now++;
    }
    return;
}
bool dfs(int m)
{
    int i;
    vis[m]=-1;
    for(i=1;i<10;i++)
    {
        if(!ok[m][i])continue;
        if(vis[i]<0)return 0;//存在环
        if(!vis[i]&&!dfs(i))return 0;
    }
    vis[m]=1;
    return 1;
}
bool topo()
{
    for(int i=1;i<10;i++)
      if(!vis[i]&&!dfs(i))return 0;//增加人为排序
    return 1;
}
int main()
{
    init();
    string s;
    int i,t,j;
    while(cin>>s&&s!="ENDOFINPUT")
    {
        memset(vis,0,sizeof(vis));
        memset(ok,0,sizeof(ok));
        for(i=0;i<16;i++)
        {
           scanf("%d",&t);
           for(j=0;j<map[i].size();j++)
           {
               if(t==map[i][j])continue;
               ok[t][map[i][j]]=1;
           }
        }
        if(topo())cout<<"THESE WINDOWS ARE CLEAN"<<endl;
        else cout<<"THESE WINDOWS ARE BROKEN"<<endl;
        cin>>s;
    }
}


 

目录
相关文章
|
10月前
|
机器学习/深度学习 人工智能 C++
《CMake:掌控 C++人工智能项目编译的魔法棒》
在 C++ 人工智能项目的开发中,CMake 作为一款强大的构建工具,能够高效管理项目的编译流程。本文深入探讨了如何利用 CMake 处理复杂的项目结构、管理库文件链接、定制编译选项、支持跨平台编译以及生成和管理构建系统,帮助开发者高效构建、扩展和维护 C++ 人工智能项目。
164 17
|
12月前
|
消息中间件 存储 NoSQL
物联网设备频繁断网,如何打赢智慧社区的流量洪峰之战?
本文详细介绍了智慧社区中物联网(IOT)技术的应用,重点讨论了物联网流量洪峰的处理方法。文章分析了上行和下行消息的特点,并提出了上下行拆分、多泳道消息队列、实时消息优先处理、连接计算存储分离及推拉结合的消息策略,以优化消息队列,确保系统稳定运行。通过这些技术手段,智慧社区的物联网设备能在各种场景中保持高效运作。
183 2
|
10月前
|
数据库
脏读、幻读、不可重复读的定义?
脏读、不可重复读和幻读是数据库事务处理中的三种异常现象。脏读指读取未提交的修改数据;不可重复读指同一事务中多次读取数据不一致;幻读指读取记录范围时,前后读取结果数量不一致。这些现象通常由并发事务操作引起。
373 7
|
11月前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
运维 安全 测试技术
自动化运维的利剑:Ansible在企业级部署中的应用与挑战
本文深入探讨了Ansible,这一领先的IT自动化工具,如何在企业级部署中扮演关键角色。我们将通过实际案例分析,揭示Ansible在简化配置管理、加速应用部署和提高运维效率方面的优势。同时,文章也将不回避Ansible实施过程中可能遇到的技术挑战与限制,并提供针对性的解决策略。阅读本文后,您将获得一个全面的视角,理解Ansible在现代企业运维中不可或缺的地位,以及如何克服其面临的主要问题。
246 1
|
传感器 存储 安全
机器通信 | 《5G移动无线通信技术》之八
本节主要介绍了机器通信的内容以及超可靠机器类通信。
机器通信  | 《5G移动无线通信技术》之八
|
供应链 机器人
什么是RPA?
什么是RPA?
885 0
|
传感器 人工智能 供应链
报告发布丨数字化助力乡村振兴:《县域数字生态创新趋势展望》
报告指出,借助数字新基建打造“新时空”,县域数字生态加速构建,并揭示了数字技术加速下沉全面赋能县域经济、新型信息基础设施重构县域生产要素、数字化加持下县域生态价值逐步释放等九大趋势。
报告发布丨数字化助力乡村振兴:《县域数字生态创新趋势展望》
|
Java 关系型数据库 数据库连接
快速配置多数据源(整合MyBatis)
本文内容: 在Springboot+Mybatis项目的基础上,学习多数据源的快速配置 避免网上某些配置数据源文章的深坑
543 0