BZOJ3495 : PA2010 Riddle

2-SAT。

建立n个变量,其中第i个变量表示第i个城市是否是首都。

对于边(x,y),连边x->y‘,y->x‘。

对于一个有y个城市的国家,新建2y个变量,分别表示前i个城市和后i个城市中是否有首都。

然后求出SCC,判断是否存在合法的方案即可,时间复杂度$O(n+m)$。

#include<cstdio>
const int N=1000010,M=6000010;
int n,m,k,i,x,y,tot,f[N][2],pre[N][2],suf[N][2],q[M],t,from[M];bool v[M];
struct E{int v;E*nxt;}*g[M],*h[M],pool[N*24],*cur=pool,*p;
inline void add(int x,int y){
  p=cur++;p->v=y;p->nxt=g[x];g[x]=p;
  p=cur++;p->v=x;p->nxt=h[y];h[y]=p;
}
void dfs1(int x){
  v[x]=1;
  for(E*p=g[x];p;p=p->nxt)if(!v[p->v])dfs1(p->v);
  q[++t]=x;
}
void dfs2(int x,int y){
  v[x]=0,from[x]=y;
  for(E*p=h[x];p;p=p->nxt)if(v[p->v])dfs2(p->v,y);
}
inline void read(int&a){char c;while(!(((c=getchar())>=‘0‘)&&(c<=‘9‘)));a=c-‘0‘;while(((c=getchar())>=‘0‘)&&(c<=‘9‘))(a*=10)+=c-‘0‘;}
int main(){
  read(n),read(m),read(k);
  for(i=1;i<=n;i++)f[i][0]=++tot,f[i][1]=++tot;
  while(m--)read(x),read(y),add(f[x][0],f[y][1]),add(f[y][0],f[x][1]);
  while(k--){
    read(y);
    for(i=1;i<=y;i++){
      pre[i][0]=++tot,pre[i][1]=++tot;
      suf[i][0]=++tot,suf[i][1]=++tot;
      read(x);
      add(f[x][1],pre[i][1]);
      add(f[x][1],suf[i][1]);
      add(pre[i][0],f[x][0]);
      add(suf[i][0],f[x][0]);
    }
    for(i=2;i<=y;i++){
      add(pre[i-1][1],pre[i][1]);
      add(pre[i-1][1],suf[i][0]);
      add(pre[i-1][0],suf[i][1]);
      add(suf[i][1],suf[i-1][1]);
      add(suf[i][1],pre[i-1][0]);
      add(suf[i][0],pre[i-1][1]);
    }
  }
  for(i=1;i<=tot;i++)if(!v[i])dfs1(i);
  for(i=tot;i;i--)if(v[q[i]])dfs2(q[i],q[i]);
  for(i=1;i<n;i+=2)if(from[i]==from[i+1])return puts("NIE"),0;
  return puts("TAK"),0;
}

  

时间: 2024-08-17 14:00:53

BZOJ3495 : PA2010 Riddle的相关文章

BZOJ 3495: PA2010 Riddle

Description \(n\)个城市,\(k\)个国家,\(m\)条边,边两边至少有一个首都,问是否存在合法解.\(1\leqslant k\leqslant n,m\leqslant 10^6\) Solution 2-SAT. 有几个限制条件一起列上... 这样建图是\(O(n^2)\)的...用前缀和表示来限制一下首都个数... 1.一个点不是首都,那么另一个点一定是首都. 2.前缀和为1,这个点一定为0. 3.这个点为1,前缀和一定为1. 4.这个点为1,前一个点一定为0. 5.这个

待 题表

题表 达哥终极杂题表Bzoj2839 hdu6021 Codeforces 804DBzoj2248 hdu5575 Codeforces 786CBzoj2013 bzoj2676 Codeforces 803CBzoj2386 bzoj3782 Codeforces 813DBzoj2699 cogs1667 Codeforces 814DBzoj4798 bzoj2064 Codeforces 814EBzoj4639 bzoj3505 Codeforces 815ABzoj4417 bz

联赛之前的题表(已完成)汇总(可能有遗漏)

联赛之前的搞搞(其实是懒得分类) 博弈论 poj3537 poj1704 hdu5996两个插头 HDU1693 Eat the Trees COGS1283. [HNOI2004] 邮递员kdtree板子1941: [Sdoi2010]Hide and Seek旋转卡壳 pj2187凸包 cogs896 bzoj2829 信用卡凸包莫比乌斯反演基础 bzoj 4173 zhao gui lv bzoj 3529 mobiwus bzoj 4407 mobiwus bzoj 2818 mobiw

网页闯关游戏(riddle webgame)--SQL注入的潘多拉魔盒

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. web开发初学者往往会忽视一些常见的漏洞, 比如SQL注入攻击, XSS攻击. 本文将简述SQL注入攻击的原理, 并分享下关卡设计, 其在打开潘多拉魔盒的情况下, 又能很好地限制危害. 效果展示: 先打下广告: 网页闯关游戏入口(请狠狠地点击我, ^_^). 本文的想法实施于第十一关--健忘的教授. 很直接的呈现一个登陆对话框, 考验玩家

网页闯关游戏(riddle webgame)--游戏玩法和整体介绍

前言: 记得上大学那会, 有位传说中的大牛, 写了一个网页闯关类的游戏. 当时我们玩得不亦乐乎, 也是第一次接触到这种形式的游戏. 不过当时纯玩家心态, 并没有想过去创造一个. 最近想起这事, 突然想复制实现一个类似的网页闯关游戏. 说干就干, 抄起家伙, 就是一顿猛打, ^_^. 期间的坎坷曲折暂且不表, 甚至中途自觉江郎才尽差点放弃, 所幸最后终于完工, 愿意和大家一起分享该游戏. 展示: 网页闯关游戏, 更多的被称为riddle, 是一种考验搜索, 推理, 分析能力的闯关模式游戏. 用户群

网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 本文讲描述, 如何在网页端实现一个仿微信的聊天窗口界面, 以及其中涉及到的一些技术点. 作者前端是初学者, 请大拿们轻拍. 效果展示: 先打下广告: 网页闯关游戏入口(请狠狠地点击我, ^_^) . 仿微信窗口的设计源于第四关--倾听女神的故事. 这种聊天对话的布局模式, 比PC端QQ的那种聊天方式更贴近移动端, 我个人感觉. 需求设定:

网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践

前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 对于刮刮卡, 想必大家都很熟悉, 也很喜欢这种方式. 你可能会很好奇, 它是如何实现的呢? 本文将阐述其原理, 并结合具体实例来演示如何借助H5的canvas来实现类刮刮卡的效果. 展示效果: 网页闯关游戏入口(请狠狠地点击我, ^_^) http://magic.mmxfgame.com. H5刮刮卡的实例源自第六关--拜访东方不败的故

智力大冲浪(riddle)

智力大冲浪(riddle) 题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则:首先,比赛时间分为n个时段(n≤500),它又给出了很多小游戏,每个小游戏都必须在规定期限ti 前完成(1≤ti≤n).如果一个游戏没能在规定期限前完成,则要从奖励费m元中扣去一部分钱wi,wi为自然数,不同的游戏扣去的钱是不一样的.当然,每个游戏本身都很简单,保证每个参赛

http://riddle.arthurluk.net walkthrough

MSVFMyU4MCU4MWh0dHAlM0ElMkYlMkZyaWRkbGUuYXJ0aHVybHVrLm5ldCUyRnN0YWdlb25lLnBocCUwRCUwQTIlRTMlODAlODFodHRwJTNBJTJGJTJGcmlkZGxlLmFydGh1cmx1ay5uZXQlMkZzbm93Zmxha2VzLnBocCUyMCUwRCUwQTMlRTMlODAlODFodHRwJTNBJTJGJTJGcmlkZGxlLmFydGh1cmx1ay5uZXQlMkZmcnVpdC5waH