ZOJ2193 AOV建模

每个窗口有四个小区域组成,那么不断往前递推,到达打开当前窗口时必然是那些在上面出现的窗口都已经被打开过了,那么我们可以认为是在第i个窗口的位置上出现了

j , 那么in[i]++ , 只有 i 入度为0时,才说明第i 个窗口上的所有数字对应的窗口已经出现了不用再考虑了,然后建好了AOV网络模型,我们直接判断是否有环就可以了

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <stack>
 4 #include <iostream>
 5 using namespace std;
 6 #define N 1005
 7
 8 int first[11] , in[11] , num[5][5] , k , vis[10][10];
 9 char s1[N] , s2[N];
10
11 struct Node
12 {
13     int y , next;
14 }node[N<<1];
15
16 void add_edge(int x,int y)
17 {
18     in[y]++;
19     node[k].y = y , node[k].next = first[x];
20     first[x] = k++;
21 }
22
23 void init()
24 {
25     memset(vis,0,sizeof(vis));
26     for(int i=1 ; i<=9 ;i++) vis[i][i] = 1;
27     k = 0;
28     for(int i=1 ; i<=9 ; i++){
29         int t = i-1;
30         int u = t%3 , v = t/3;
31         if(!vis[num[v+2][u+1]][i]){
32             add_edge(num[v+2][u+1] , i);
33             vis[num[v+2][u+1]][i] = 1;
34         }
35         if(!vis[num[v+1][u+1]][i]){
36             add_edge(num[v+1][u+1] , i);
37             vis[num[v+1][u+1]][i] = 1;
38         }
39         if(!vis[num[v+2][u+2]][i]){
40             add_edge(num[v+2][u+2] , i);
41             vis[num[v+2][u+2]][i] = 1;
42         }
43         if(!vis[num[v+1][u+2]][i]){
44             add_edge(num[v+1][u+2] , i);
45             vis[num[v+1][u+2]][i] = 1;
46         }
47     }
48 }
49
50 bool dag(int n)
51 {
52     stack<int> s;
53     for(int i = 1 ; i<=n ; i++){
54         if(!in[i])
55             s.push(i);
56     }
57     for(int i = 0 ; i<n ; i++){
58         if(s.empty()){
59             return false;
60         }
61         int u = s.top();
62         s.pop();
63         for(int i=first[u] ; i!=-1 ; i=node[i].next){
64             int v = node[i].y;
65             in[v]--;
66             if(!in[v]) s.push(v);
67         }
68     }
69     return true;
70 }
71
72 int main()
73 {
74    // freopen("a.in" , "rb" , stdin);
75
76     while(~scanf("%s",s1)){
77         if(strlen(s1) > 6) break;
78
79         memset(first , -1 , sizeof(first));
80         memset(in , 0 , sizeof(in));
81
82         for(int i=1 ; i<=4 ; i++)
83             for(int j=1 ; j<=4 ; j++){
84                 scanf("%d",&num[i][j]);
85             }
86
87         init();
88
89         if(dag(9)) puts("THESE WINDOWS ARE CLEAN");
90         else puts("THESE WINDOWS ARE BROKEN");
91
92         scanf("%s",s2);
93     }
94     return 0;
95 }
时间: 2024-10-03 23:16:49

ZOJ2193 AOV建模的相关文章

建筑建模学习笔记1——AutoCAD平面建模

建筑建模学习笔记1--AutoCAD平面建模 楼宇自控项目上位机控制展示软件需要展示成3D效果图,最近在学习3D建模的相关知识.3D建筑物建模多数都是导入2D的CAD建筑图纸,在其基础上进行建模,这样作出的3D模型则会完全与实物相符.现在记录一些AutoCAD画图的命令. 1.划线命令 1)Line 快捷键是 L,工具栏图标 下面是划线的操作动画: 划线时我们看到线不仅有长度还有角度,在在多数情况下画直角的线多一些,AutoCAD提供了正交按钮,在选中此项后,我们画的线与线间的夹角永远都是90度

sketchup8基础教程 3dmax高级建模教程 VR产品级渲染教程 家具设计制造教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

如何入门参加数学建模竞赛

1 网上资源 1.1 数学中国 可以去数学中国网站看看,在数学建模比赛的培训这一块做得很好的机构,如果自己有点银子,可以去参加他们的网上课程.另外他们有专门的数学建模群,群里面有很好关于数学建模的资料.而且这个机构自己也举办数学建模比赛,如果有时候可以在这里组队,直接参加比赛,累积一些经验,增长见识. 1.2 数学建模视频课程,现在网络上有一些比较好的关于数学建模比赛的视频资源,可以谷歌一下 1.3 网络上的一些关于数学建模的电子书,有时候你也不知道哪本书比较适合你,所以你可以先在网上找一些电子

软件项目需求开发过程实践之业务建模用例图

本次软件工程项目是重建办公业务流程管理平台,需要在继承原370个流程基础上,还需要提供快速流程开发能力,并要求体现出流程管理的规范性,以及流程的执行力.效率.效益,最终为企业管理创新提供流程再造的能力. 在项目前期及需求分析阶段,开发人员致力于"降低成本",以最小的代价完成项目,其可预见性的软件产品是经过系统平台升级的,并经过改良的第二个办公业务流程管理平台.按客户验收要求,"只能打60分,是不能给予验收". 在软件开发中,需求工作致力于解决"产品好卖&q

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

数据库建模模板、菜单显示出问题解决方案

数据库建模模板.菜单显示出问题解决方案 您使用的是哪个版本? 要查找您使用的 Visio 版本,请在"帮助"菜单上单击"关于 Microsoft Office Visio".版本的名称会显示在对话框最上面的文本行中. Standard     此版本不包含"数据库模型图"模板. Professional     此版本支持"数据库模型图"模板的反向工程功能(即在 Visio 中使用现有数据库创建模型),但是不支持正向工程功能(

数学建模需掌握的知识总纲

数学建模需要掌握许多知识,这里我列出总纲: 学建模中的算法 穷举法 神经网络 模拟退火 遗传算法 图论算法 蒙特卡洛算法 所需基础知识 高等数学 线性代数(矩阵加减乘除) 概率论与数理统计(概率论,参数估计,假设检验,回归分析) 评价 AHP模型(层次分析) 模糊评价 预测 分析场景 曲线拟合 模糊预测 神经网络 灰色理论 马尔科夫链 运筹 整数规划(分支界定法) 01规划 灵敏度分析 影子价格 概率统计 排队论 主成分分析法 回归分析法 曲线拟合 图论 动态规划 网络最大流 最小费用流 最短路

RobotStudio中的建模功能

1.学会使用RobotStudio进行基本的建模. 1.1使用RobotStudio建模功能进行3D模型的创建 1.2对3D模型进行相关设置 2.学会RobotStudio中测量工具的使用. 1.3测量工具的使用 测量圆柱体的直径 测量两个物体间最短距离 测量技巧 3.学会创建机械装置并进行设置. 创建机械装置 4.学会创建工具并进行设置.

数学建模基础理论【二】(定积分)

数学建模基础理论[二]                                                                               (定积分) 定义: 定积分分部计算: 平面图形面积: 直坐标情形 极坐标情形 平面曲线的弧长: 平行截面为已知的立体的体积: