设为首页 收藏本站
查看: 891|回复: 0

【HDU】2828 Lamp

[复制链接]
累计签到:15 天
连续签到:1 天
发表于 2015-8-19 14:44:42 | 显示全部楼层 |阅读模式
1 #include<cstdio>
  2 #include<cstring>
  3 #define MAXN 500010
  4 #define MAXM 1010
  5 #define INF 0x7FFFFFFF
  6 int L[MAXN], R[MAXN], U[MAXN], D[MAXN];
  7 int H[MAXM], C[MAXN], S[MAXM], X[MAXN];
  8 bool vis[MAXM];
  9 int size;
10 void Init(int n)
11 {
12     int i;
13     memset(vis, false, sizeof(vis));
14     memset(H, -1, sizeof(H));
15     for (i = 0; i <= n; i++)
16     {
17         R = i + 1;
18         L[i + 1] = i;
19         U = D = i;
20         S = 0;
21     }
22     R[n] = 0;
23     size = n + 1;
24 }
25 inline void Link(int r, int c)
26 {
27     D[size] = D[c];
28     U[size] = c;
29     U[D[c]] = size;
30     D[c] = size;
31     if (H[r] < 0)
32         H[r] = L[size] = R[size] = size;
33     else
34     {
35         L[size] = H[r];
36         R[size] = R[H[r]];
37         L[R[H[r]]] = size;
38         R[H[r]] = size;
39     }
40     S[c]++;
41     X[size] = r;
42     C[size++] = c;
43 }
44 void Remove(int c)
45 {
46     int i;
47     for (i = D[c]; i != c; i = D)
48     {
49         R[L] = R;
50         L[R] = L;
51     }
52 }
53 void Resume(int c)
54 {
55     int i;
56     for (i = D[c]; i != c; i = D)
57         R[L] = L[R] = i;
58 }
59 bool Dance()
60 {
61     if (R[0] == 0)
62         return true;
63     int i, j, temp, c;
64     for (temp = INF,i = R[0]; i; i = R)
65     {
66         if (temp > S)
67         {
68             temp = S;
69             c = i;
70         }
71     }
72     for (i = D[c]; i != c; i = D)
73     {
74         if (vis[X ^ 1])
75             continue;
76         vis[X] = true;
77         Remove(i);
78         for (j = R; j != i; j = R[j])
79             Remove(j);
80         if (Dance())
81             return true;
82         for (j = L; j != i; j = L[j])
83             Resume(j);
84         Resume(i);
85         vis[X] = false;
86     }
87     return false;
88 }
89 int main()
90 {
91     char s[10];
92     int n, m, q, x, i;
93     while (~scanf("%d%d", &n, &m))
94     {
95         Init(n);
96         for (i = 1; i <= n; i++)
97         {
98             scanf("%d", &q);
99             while (q--)
100             {
101                 scanf("%d %s", &x, s);
102                 if (strcmp(s, "ON") == 0)
103                     Link((x - 1) << 1, i);
104                 else
105                     Link((x - 1) << 1 | 1, i);
106             }
107         }
108         if (Dance())
109         {
110             if (!vis[1])
111                 printf("ON");
112             else
113                 printf("OFF");
114             for (i = 2; i < (m << 1); i += 2)
115             {
116                 if (!vis)
117                     printf(" OFF");
118                 else
119                     printf(" ON");
120             }
121             putchar('\n');
122         }
123         else
124             puts("-1");
125     }
126     return 0;
127 }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-101239-1-1.html 上篇帖子: How to Install Linux, Apache, MySQL, PHP (LAMP) stack on CentOS 6 【Reliable】 下篇帖子: 轻松获取LAMP,LNMP环境编译参数配置[转载]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表