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;
    }
}

 

时间: 2024-12-03 22:04:59

poj 2585 Window Pains的相关文章

【POJ 2823 Sliding Window】 单调队列

题目大意:给n个数,一个长度为k(k<n)的闭区间从0滑动到n,求滑动中区间的最大值序列和最小值序列. 最大值和最小值是类似的,在此以最大值为例分析. 数据结构要求:能保存最多k个元素,快速取得最大值,更新时删去"过期"元素和"不再有希望"的元素,安放新元素. 单调队列的基本概念百度百科讲得比较清楚了:http://baike.baidu.com/view/3771451.htm   我的大致思路是: 1. 每个元素存储为结构体,包含它的秩和值.维护最大长度为

js中window.showModalDialog各浏览器居中和传参实例兼以及一些兼容性问题

  浏览器居中以及传参实例 window.showModelDialog可设置center参数为yes,保证其在子窗口在父窗口居中. 但是该参数只对IE浏览器有效,对火狐无效,只有通过计算模态窗口的居中位置.   解决办法 function openShowModalDialog(url,param,whparam,e){    // 传递至子窗口的参数  var paramObj = param || { };    // 模态窗口高度和宽度  var whparamObj = whparam

javascript-JavaScript中window.Simple是个什么方法

问题描述 JavaScript中window.Simple是个什么方法 var $ = window.Simple = function (t) { return ""string"" == typeof t ? document.getElementById(t) : t};从一个JS中摘出的语句 不明 解决方案 变量.......... 解决方案二: Javascript:window对象的方法javascript的window.location方法javasc

iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)

我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已.当然如果需要我也会使用它.一个东西的存在没有绝对的好与坏,只是存在时间与空间决定了它的价值. (忘了讲了,我的环境是xcode4.2) 首先要弄懂几个基本的概念.   一)三个结构体:CGPoint.CGSize.CGRect 1.  CGPoint   [plain] view plaincopy   /* Point

JavaScript Window浏览器对象模型方法与属性汇总

  本文给大家汇总分享的是JavaScript Window浏览器对象模型方法与属性,十分的细致全面,这里推荐给大家,有需要的小伙伴可以参考下. Window 对象 所有浏览器都支持 window 对象.它表示浏览器窗口. 所有 JavaScript 全局对象.函数以及变量均自动成为 window 对象的成员. 全局变量是 window 对象的属性. 全局函数是 window 对象的方法. 1. open方法 语法格式: window.open(URL,窗口名称,窗口风格) 功能:打开一个新的窗

dos 命令-window xp 有forfiles 命令吗 没有的话 需要安转什么 可以运行forfiles

问题描述 window xp 有forfiles 命令吗 没有的话 需要安转什么 可以运行forfiles window xp 有forfiles 命令吗 没有的话 需要安转什么 可以运行forfiles 解决方案 不需要安装,有的.但是山寨ghost系统不好说了. 解决方案二: 不好意思,我的系统是2003,xp是没有的.如果你需要,我可以给你. 解决方案三: http://download.csdn.net/detail/tx_yu/1812302

项目中用到的window.showModalDialog(来自网络)

window.showModalDialog相关: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框. window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框. 使用方法: vReturnValue = window.showModalDialog(sURL [, vArguments]

javascript-Javascript中出现window未定义,zepto未定义时该如何解决

问题描述 Javascript中出现window未定义,zepto未定义时该如何解决 Javascript中出现window未定义,zepto未定义时该如何解决

windows-Unity3D 能支持直接发布APP到window phone的版本号是多少?

问题描述 Unity3D 能支持直接发布APP到window phone的版本号是多少? Unity3D现在的版本号是4.1.2不过还不能发布APP到windows phone.据说到4.2.**版本时可以直接发布APP到Windows phone,不知道是否是真的?或者Unity3D支持直接发布APP到window phone的版本号是多少?Thanks! 解决方案 好吧,还是自己来回答4.2版本已经支持发布到windows phone