LINK:Quantifier Question

题面过长 引起不适 读题花了好长时间 对于 和 存在符合不是很熟练 导致很懵逼的做完了。

好在还算很好想。不过wa到了一个坑点上面 自闭一大晌 还以为自己思路错了 看了某个强者的blog才知道自己有个地方没处理好。

题目中明确指出 这种关系运算符只能顺序的添加 也就是说 \(\forall x_2\exists x_1\) 这是不能被表达的 只能表达出\(\exists x_1\forall x_2\)

如果有题目中的f函数 那么后者将会被判定为错误的。再次定义 对于x<y 表达为x向y连了一条有向边。

考虑存在环的时候 容易证明是无解的 全是\(\exists\)都不行。

所以接下来考虑 有向无环的图 尝试给每个x赋上一个符号 容易想到 若对于一个较大的数字赋上\(\forall\)

一个显然的事实 两个\(\forall\)不能连在一起。一个显然的事实大的是\(\forall\)小的是\(\exists\)也不行。

而且尽可能多放\(\forall\)所以应该从小到大开始放。

放了一个\(\forall\)之后观察 和这个点相连的前驱和后继 容易发现都不能是\(\forall\) 继续考察 前驱和前驱 和后继的后继 容易想到 都不能放\(\forall\)

而那些点被连向的边则暂时合法 因为还有满足大小关系。

至此 没便利到一个点可以dfs一下前驱和后继 把他们都标记为不合法即可。

值得注意的是 对于标记后继 只能是反图上的后继 前驱同理 所以 如果使用一个vis数组的话 可能之前便利过了前驱 现在需要便利后继 便利不了了 所以需要开两个vis数组。

const int MAXN=200010;
int n,m,ans,len1,len;
int flag=0;
int vis[MAXN],ru[MAXN],vis1[MAXN],q[MAXN],mark[MAXN];
int lin[MAXN],nex[MAXN],ver[MAXN];
int lin1[MAXN],nex1[MAXN],ver1[MAXN];
inline void add(int x,int y)
{
ver[++len]=y;
nex[len]=lin[x];
lin[x]=len;++ru[y];
ver1[++len1]=x;
nex1[len1]=lin1[y];
lin1[y]=len1;
}
inline void topsort()
{
int t=0,h=0;
rep(1,n,i)if(!ru[i])q[++t]=i;
while(h++<t)
{
int x=q[h];
go(x)
{
--ru[tn];
if(!ru[tn])q[++t]=tn;
}
}
rep(1,n,i)if(ru[i])flag=1;
}
inline void dp(int x)
{
vis[x]=1;
go(x)if(!vis[tn])dp(tn);
}
inline void dp1(int x)
{
vis1[x]=1;
for(int i=lin1[x];i;i=nex1[i])
{
int tn=ver1[i];
if(vis1[tn])continue;
dp1(tn);
}
}
int main()
{
freopen("1.in","r",stdin);
get(n);get(m);
rep(1,m,i)
{
int get(x),get(y);
add(x,y);
}
topsort();
if(flag){puts("-1");return 0;}
rep(1,n,j)
{
if(vis[j]||vis1[j]){dp(j);dp1(j);continue;}
dp1(j);dp(j);mark[j]=1;++ans;
}
put(ans);
rep(1,n,i)if(mark[i])putchar('A');
else putchar('E');
return 0;
}

CF R639 div 2 E Quantifier Question 数学 dfs 图论的更多相关文章

  1. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  2. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

  3. CF #374 (Div. 2) D. 贪心,优先队列或set

    1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...

  4. CF #374 (Div. 2) C. Journey dp

    1.CF #374 (Div. 2)    C.  Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...

  5. CF #371 (Div. 2) C、map标记

    1.CF #371 (Div. 2)   C. Sonya and Queries  map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...

  6. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组

    题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...

  7. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)

    转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...

  8. 题解-Quantifier Question

    Quantifier Question 有长度为 \(n\) 的序列 \(x\{n\}\),有 \(m\) 个条件 \((j_i,k_i)\).有 \(n\) 个待定的条件符 \(Q_i\in\{\f ...

  9. CF #305(Div.2) D. Mike and Feet(数学推导)

    D. Mike and Feet time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

随机推荐

  1. 重学 Java 设计模式:实战策略模式「模拟多种营销类型优惠券,折扣金额计算策略场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 文无第一,武无第二 不同方向但同样努力的人,都有自身的价值和亮 ...

  2. HDU 2236 无题II 题解

    题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\)表示\(T\)组数据. 对于每组数 ...

  3. OutOfMemory相关问题(内存溢出异常OOM)

    OutOfMemory(内存溢出异常OOM) java.lang.OutOfMemoryError :Thrown when the Java Virtual Machine cannot alloc ...

  4. JAVA服务实例内存高问题排查及解决

    生产服务内存高问题 问题描述 1."计算中心" 服务在生产环境运行一段时间后,实际占用内存4.8G,业务运行正常,未出现OOM.(本文以此服务进行排查) 2.生产环境的老项目,均出 ...

  5. day31 反射,内置方法,元类

    目录 一.反射 1 什么是反射 2 如何实现反射 二.内置方法 1 什么是内置方法 2 为什么要用内置方法 3 如何使用内置方法 3.1 str 3.2 del 三.元类 1 什么是元类 2 clas ...

  6. 怎么查看HBase表的创建时间

    前几天HBase出现了RIT告警,忽然发现发出告警的Region所属的表并不是我创建出来的,于是就想看看这些表是怎么来的. 一时也没什么头绪,就先看看这些表是什么时候创建出来的吧,然后再根据时间点看看 ...

  7. 智联家园-四大人工智能虚拟形象首秀MV

    2020 世界人工智能大会云端峰会在上海举行,由微软小冰作曲并携手其他 AI 演唱的 2020 世界人工智能大会云端峰会主题曲<智联家园> 今天正式发布,同时这也是小冰上海音乐学院毕业后的 ...

  8. java 基本语法(十九)Optional类的使用

    java.util.Optional类1.理解:为了解决java中的空指针问题而生!Optional<T> 类(java.util.Optional) 是一个容器类,它可以保存类型T的值, ...

  9. golang第一天--安装

    先上吉祥物 安装 下载链接:https://studygolang.com/dl 下载好之后开始安装 next.next.next,选择好目录.next.等待.finish. 成了!! 配置环境变量: ...

  10. 使用Python来写mock代码(桩代码)-其实很简单

    1.Mock基本用法 使用Mock能创建你能访问(模拟)的属性和方法 指定类或者函数的返回值和断言方式 创建handle_mock_01.py文件 # 1. 导入mock模块 from unittes ...