首页 > 其他分享 >CF27D Ring Road 2

CF27D Ring Road 2

时间:2023-10-16 18:47:09浏览次数:34  
标签:typedef now top CI low Ring include Road CF27D

好一眼的题,据说出题人给的做法不是2-SAT,因此才会有这样的数据范围,但这个模型yysy实在是太典了啊喂

不难发现每条边的取法就是两种,并且内部和外部的边之间绝对不会相交,因此考虑使用2-SAT模型

枚举两条边\(i,j\),如果\(i,j\)同时放在一边会产生冲突,就钦定两者的状态必须相异,然后这题就做完了

如果数据范围较大不允许\(O(m^2)\)建图的话会有点麻烦,应该要用数据结构优化下建图啥的

#include<cstdio>
#include<iostream>
#include<utility>
#include<vector>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<set>
#include<array>
#include<random>
#include<bitset>
#include<ctime>
#include<limits.h>
#include<assert.h>
#include<unordered_set>
#include<unordered_map>
#define RI register int
#define CI const int&
#define mp make_pair
#define fi first
#define se second
#define Tp template <typename T>
using namespace std;
typedef long long LL;
typedef long double LDB;
typedef unsigned long long u64;
typedef __int128 i128;
typedef pair <int,int> pi;
typedef vector <int> VI;
typedef array <int,3> tri;
const int N=205;
int n,m,x[N],y[N],dfn[N],low[N],stk[N],col[N],vis[N],top,idx,scc; vector <int> v[N];
inline void addedge(RI x,CI y)
{
	v[x].push_back(y); v[y].push_back(x);
}
inline void Tarjan(CI now)
{
	dfn[now]=low[now]=++idx; stk[++top]=now; vis[now]=1;
	for (int to:v[now]) if (!dfn[to]) Tarjan(to),low[now]=min(low[now],low[to]);
	else if (vis[to]) low[now]=min(low[now],dfn[to]);
	if (low[now]==dfn[now])
	{
		col[now]=++scc; vis[now]=0;
		while (stk[top]!=now) col[stk[top]]=scc,vis[stk[top--]]=0; --top;
	}
}
int main()
{
	//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
	RI i,j; for (scanf("%d%d",&n,&m),i=1;i<=m;++i)
	if (scanf("%d%d",&x[i],&y[i]),x[i]>y[i]) swap(x[i],y[i]);
	auto ID=[&](CI x,CI tp)
	{
		return tp*m+x;
	};
	auto check=[&](CI a,CI b)
	{
		return (x[i]<a&&a<y[i])&&!(x[i]<=b&&b<=y[i]);
	};
	for (i=1;i<=m;++i) for (j=i+1;j<=m;++j)
	if (check(x[j],y[j])||check(y[j],x[j])) addedge(ID(i,1),ID(j,0)),addedge(ID(i,0),ID(j,1));
	for (i=1;i<=2*m;++i) if (!dfn[i]) Tarjan(i);
	for (i=1;i<=m;++i) if (col[ID(i,0)]==col[ID(i,1)]) return puts("Impossible"),0;
	for (i=1;i<=m;++i) putchar(col[ID(i,0)]>col[ID(i,1)]?'i':'o');
	return 0;
}

标签:typedef,now,top,CI,low,Ring,include,Road,CF27D
From: https://www.cnblogs.com/cjjsb/p/17768073.html

相关文章

  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(7)事件组
    8.事件组之前已经介绍了多任务之间的交流桥梁,包括了队列和信号量。与队列和信号量不同:事件组允许任务在“阻塞”状态下等待一个或多个事件的组合发生。事件组在事件发生时,取消等待同一事件或事件组合的所有任务的阻塞状态。事件组的这些独特属性可用于同步多个任务、向多个任务......
  • Spring Boot 2.0 @ModelAttribute
    SpringBoot2.0中的注解@ModelAttribute有什么作用呢?通常情况下,我们会将@ModelAttribute注解放置在Controller中的某个方法上,那么,如果您在请求这个Controller中定义的URI时,会首先调用这个被注解的方法,并将该方法的结果作为Model的属性,然后才会调用对应URI的处理......
  • SpringCloud专题面试
    1.微服务架构优缺点1)单体应用开发的效率比较低,由于代码量大,项目启动缓慢,部署麻烦,后期难以维护。2)服务拆分分为多个小应用,提高了开发效率,降低了代码的耦合程度,不同的服务可以采用不同的语言,提高了灵活性;小的改动进行快捷部署,方便维护。3)拆分的依据原则就是高内聚低耦合,每个服......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(6)资源管理
    7.资源管理(互斥量)在多任务系统中,如果一个任务开始访问资源,但在从运行状态转换出来之前没有完成访问,则可能会出现错误。如果任务使资源处于不一致状态,则任何其他任务或中断对同一资源的访问都可能导致数据损坏或其他类似问题。这里的资源管理,应该是指计算机的外设资源,比如LCD显示......
  • 数组有没有length()这个方法? String有没有length()这个方法?
    数组没有length()这个方法,有length的属性。String有有length()这个方法。 [1,2,3].lengh属性"123".length()方法......
  • java -jar命令及SpringBoot通过java -jav启动项目的过程
    本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的,以及介绍java-jar命令的详细内容,对SpringBootjava-jav启动过程感兴趣的朋友跟随小编一起看看吧本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(5)中断管理
    6.中断管理在读这一章之前一直有一些疑惑,FreeRTOS中的中断是软中断吗,还是将外部硬中断的触发后,导入FreeRTOS的内部进行调度处理。如果是第一种,软中断和第三章讲的任务有区别吗,还是只是优先级比所有任务高。如果是第二种的话,外部中断的服务函数是不是不能写内容了,FreeRTOS的运行和......
  • java-springboot和servlet的项目搭建
    1.404->启动tomcat->tomcat闪退->配置jre全局环境,重启电脑->8080端口被占用->下载太多tomcat->重新配置->还是被占用->命令行找netstat-ano|findstr80得到PID,在任务管理器找到(用PID排序会更好找)是一个java.exe,结束进程。->成功运行2.入口类3.mysql命令不生效->因为没加分号(我......
  • SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数
    最近在研究这块的信息,记录下一些大神的文章:SpringBoot最大连接数及最大并发数是多少???https://blog.csdn.net/weixin_44421461/article/details/132486085SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数https://blog.csdn.net/myyhtw/article/details/129069586Sprin......
  • Nacos源码 (7) Nacos与Spring
    SpringCloud工程可以使用Nacos作为注册中心和配置中心,配置和使用非常简单,本文将简单介绍使用方式,并分析其实现方式。SpringCloud工程集成NacosSpringCloud工程使用Nacos非常简单,只需要引入依赖、编写配置参数、在启动类上添加注解即可。引入依赖<dependencyManagement><dep......