BZOJ2215: [Poi2011]Conspiracy

LDA模型参数优化实战:从auto设置到passes调优 本文深入探讨了LDA主题模型的参数优化实战,重点解析了如何通过设置alpha='auto'与eta='auto'让模型自适应语料,并详细阐述了passes参数对训练效果的核心影响。文章提供了系统的调优方法与评估策略,旨在帮助用户从“能用”到“用好”LDA,产出清晰、可解释的主题分析结果。 阅读详情

题目大意:给定一张无向图,要求你把图中的每个点染成红色或蓝色,使得红色的点形成一个团,蓝色的点形成一个独立集


首先假设我们已经求出了一组可行解,那么其他方案至多是本方案中从后勤和同谋组各出一个人进入对方组,因为一旦从某一组出来两个就一定不满足题意

这时我们考虑处理出每个人是否只与对面集合中的一个人冲突,然后分类三种情况(只有后勤去同谋,只有同谋去后勤,两边交换一个人)枚举就可以了。

现在考虑如何求可行解

我们可以想到2SAT,对于每个点,红色和蓝色就是它的两种对立状态,然后有边的用一种限制条件,没边的用另外一种限制条件,然后tarjan缩点判冲突情况。接着给图反向,按拓扑序染色求方案即可

代码巨恶心....


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define N 10010
#define M 25000010
using namespace std;
void NO(){puts("0");exit(0);}
bool a[5010][5010];
struct ljb
{
	int to[M],nxt[M],pre[N<<1],cnt;
	ljb()
	{
		cnt=0;
		memset(pre,0,sizeof(pre));
	}
	void ae(int ff,int tt)
	{
		cnt++;
		to[cnt]=tt;
		nxt[cnt]=pre[ff];
		pre[ff]=cnt;
	}
}Z,F;
int dfn[N<<1],low[N<<1],cn;
bool zai[N<<1];
int s[N<<1],t;
int b[N<<1],c;
vector<int>V[N<<1];
void tarjan(int x)
{
	cn++;
	low[x]=dfn[x]=cn;
	zai[x]=true;
	t++;s[t]=x;
	int i,j;
	for(i=Z.pre[x];i;i=Z.nxt[i])
	{
		j=Z.to[i];
		if(!dfn[j])
		{
			tarjan(j);
			low[x]=min(low[x],low[j]);
		}
		else if(zai[j]) low[x]=min(low[x],dfn[j]);
	}
	if(low[x]==dfn[x])
	{
		c++;
		while(s[t]!=x)
		{
			b[s[t]]=c;
			zai[s[t]]=false;
			V[c].push_back(s[t]);
			t--;
		}
		b[x]=c;
		zai[x]=false;
		V[c].push_back(x);
		t--;
	}
}
int du[N<<1];
int q[N<<1],h,col[N<<1];
int f[N];
int p1[N<<1],p0[N<<1];
int n;
int ct[N<<1];
void gaoyigao()
{
	int i,j,x,y;
	h=1;t=0;
	for(i=1;i<=c;i++)
	if(!du[i])
	{
		t++;
		q[t]=i;
	}
	while(h<=t)
	{
		x=q[h];h++;
		if(col[x]==2) continue;
		col[x]=1;
		for(i=0;i<V[x].size();i++)
		col[b[V[x][i]^1]]=2;
		for(i=F.pre[x];i;i=F.nxt[i])
		{
			j=F.to[i];
			du[j]--;
			if(du[j]==0&&!col[j])
			{
				t++;
				q[t]=j;
			}
		}
	}
	int tot1=0,tot0=0;
	for(i=1;i<=c;i++)
	if(col[i]==1)
	{
		for(j=0;j<V[i].size();j++)
		{
			if(V[i][j]&1) f[V[i][j]/2]=1,tot1++,p1[tot1]=V[i][j]/2;
			else f[V[i][j]/2]=0,tot0++,p0[tot0]=V[i][j]/2;
		}
	}
	int ans=0;
	for(i=1;i<=n;i++)
	{
		if(f[i]==1)
		{
			for(j=1;j<=tot0;j++)
			if(!a[p0[j]][i])
			{
				if(!ct[i]) ct[i]=p0[j];
				else ct[i]=-1;
			}
		}
		else
		{
			for(j=1;j<=tot1;j++)
			if(a[p1[j]][i])
			{
				if(!ct[i]) ct[i]=p1[j];
				else ct[i]=-1;
			}
		}
	}
	if(tot0>1)
	{
		for(i=1;i<=tot0;i++)
		if(!ct[p0[i]])
		ans++;
	}
	if(tot1>0)
	{
		for(i=1;i<=tot1;i++)
		if(!ct[p1[i]])
		ans++;
	}
	if(tot0&&tot1)
	{
		ans++;
		for(i=1;i<=tot0;i++)
		for(j=1;j<=tot1;j++)
		if((!ct[p0[i]]||ct[p0[i]]==p1[j])&&(!ct[p1[j]]||ct[p1[j]]==p0[i]))
		ans++;
	}
	printf("%d",ans);
}
int main()
{
	scanf("%d",&n);
	int i,j,x,y;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		for(j=1;j<=x;j++)
		{
			scanf("%d",&y);
			a[i][y]=true;
		}
	}
	for(i=1;i<=n;i++)
	for(j=i+1;j<=n;j++)
	{
		if(a[i][j])
		{
			Z.ae(2*i+1,2*j);
			Z.ae(2*j+1,2*i);
		}
		else
		{
			Z.ae(2*i,2*j+1);
			Z.ae(2*j,2*i+1);
		}
	}
	for(i=2;i<=2*n+1;i++)
	if(!dfn[i]) tarjan(i);
	for(i=2;i<=2*n;i+=2)
	if(b[i]==b[i+1]) NO();
	for(j=2;j<=2*n+1;j++)
	for(i=Z.pre[j];i;i=Z.nxt[i])
	if(b[j]!=b[Z.to[i]])
	{
		F.ae(b[Z.to[i]],b[j]);
		du[b[j]]++;
	}
	gaoyigao();
}

SAP 替代关系完全替代简介 这里产生了成品物料的计划订单,我们查看计划订单中BOM的变化,如下图可以看到物料的需求仍然落在了优先级为1的这个302300005555这个物料上面,并没有考虑到302300006666的这个库存,和我们理解的MRP的完全替代不一样,按我们的理解需求应该是要落在302300006666这个物料料,但是MRP计算后并没有这样进行分配。最近用户在对长周期物料进行备料的时候又提出替代料的问题,主料库存不足的时候需要考虑替代料的在途库存,经常会忘了SAP标准的替代料逻辑,这次一次性把这个逻辑写清楚。 阅读详情

相关推荐

ANSYS MAXWELL内置式永磁同步电机(IPMSM)转矩最大时输入电流相位的确定

1.在转子转速为零时看一个周期内的转矩变化

qq_41752507的博客 6517

LOJ #2155. 「POI2011 R1」同谋者 Conspiracy(深入性质分析)

题目 性质一: 两个合法方案中,在一个方案AAA是后勤组且在另一个方案BBB中不是的人最多有一个,同谋者同理。 证明:反证,如果有两个,那么在AAA中同为后勤组保证他们间有边,与他们在BBB中同为同谋者矛盾。 那么拿到这个性质就可以按照网上的大多数题解直接2−sat2-sat2−sat一波找出特解然后一个人一个人的尝试切换组之类的就可以了。 但是我们初步算一下,这个题没给边数的范围,所以我们是可能...

Freopen的博客 322

【电磁场计算】磁偶极子在外磁场中的受力

最近在总结电磁场计算公式的时候发现,关于磁偶极子受力的计算公式,在不同文献中的说明有点出入,在此特地写一篇博客澄清一下。

sky4403的博客 7474

LOJ#2155. 「POI2011 R1」同谋者 Conspiracy

题目描述 题解: 这个题目要求的是把一张无向图变成一个团和一个独立集的方案数。这看似好像无从下手。那么我们可以换一个角度思考,我们考虑先求出一个解,然后通过调整得出所有解。 假设已经求出了一个解,我们会发现,其它所有的解只可能由这个解通过三种方式得到: 1.将一个原本在独立集里面的点放到团中(可行的条件下)。 2.将一个原本在团中的点放到独立集中(可行的条件下)。 3.将一个独立集中的点和团中的点...

dyt's Blog 575

CAN收发器TJA1145A休眠唤醒应用

TJA1145的唤醒工作原理主要依赖于其内部的唤醒机制和外部硬件的配合,主要涉及低功耗状态、选择性唤醒功能。TJA1145是一款CAN收发器,它支持多种工作模式,包括NormalStandbySleep等。在这些模式中,Sleep模式是最低功耗状态,而Normal模式则是最活跃的状态,其中Standby模式处于两者之间,允许一定的功能操作但功耗较低。TJA1145可以通过接收特定的唤醒源从Sleep或Standby模式唤醒到Standby或Normal模式。唤醒源的检测与处理。

radix关于mcu的博客,持续更新中... 5954

京东商品数据爬取实战:用Selenium+代理IP绕过最新反爬机制(附完整代码)

本文深入解析京东商品数据采集技术,详细介绍了如何利用Selenium与智能反反爬策略绕过京东最新的反爬机制。通过实战案例和完整代码,帮助开发者掌握高效采集京东商品数据的方法,包括动态参数加密、行为验证识别及分布式采集架构设计等关键技术。

cc789的博客 1060

bzoj2215: [Poi2011]Conspiracy

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2215 思路:一道很好的2-sat题 首先一个人要么分配给同谋者,要么分配给后勤组织 这可以考虑2-sat 那么怎么连边?这个很显然 如果(i,j)有边,那么一个在同谋者,则另一个必不在同谋者 如果(i,j)无边,那么一个在后勤组织,另一个必不在后勤组织 然后考虑...

weixin_30832405的博客 163

手把手教你学Simulink——基于Simulink的轮毂电机独立驱动转矩矢量分配

阐述了轮毂电机独立驱动的核心价值与转矩分配的必要性在 Simulink 中实现了完整的“上层稳定控制 + 下层最优分配”架构对比了三种分配策略在极限工况下的性能差异提供了工程落地的关键考量特斯拉 Cybertruck(后轮双电机矢量控制)Rivian R1T(四电机坦克掉头)宝马 iX(精准牵引力控制)核心思想“以软件定义底盘,以算法驾驭动力;化四轮之独立,为整车之协同。—— 让汽车在极限边缘依然从容不迫。

MHD0815的博客 369

[POI2011]KON-Conspiracy

根据2-SAT模型建边后,可以得到两个组分别是:一个团和一个独立集。 之后需要思考的就是有多少种不同的方案数。 我们发现,对于团和独立集,我们每次只能最多各自拿出一个点,放到对方中去(当然可以不拿)。而由于n恰好满足n^2的数据范围,所以,我们枚举从团中拿出放到独立集中的点,和从独立集中拿出放到图那种的点,n ^2判断操作后是否能满足条件即可。 #include <bits/stdc++.h> using namespace std; const int N=5e3+5; int n; bool

Love_xyh的博客 282

lammps教程:实例讲解npt、nvt系综的选择

对于lammps新手来说,系综的选择令人困惑,到底是应该用nvt系综还是npt系综? 我在初学lammps时就被这个问题困扰了很久。如果去问别人,可能会告诉你一个答案:根据模拟需要确定。 其实和没说一样。 到底如何确定系综,确实不是一句两句能够说清楚的,不同的体系、不同的模拟目的要选择不同的系综。 前几天遇到的一个合金的模拟案例,比较有代表性,分享出来供大家参考。 建模方法和之前介绍过的高熵合金建模方法类似,先建立单晶模型,然后使用替换原子的命令获得合金结构。 建模完成后,按照常规,先上nvt系综进行驰豫

lammps_jiayou的博客 9767

AUTOSAR 3万字面试题全面解析(持续更新)

ECU抽象层(EAL)是AUTOSAR架构中的一部分,它位于微控制器抽象层(MCAL)之下,但通常与MCAL一起被提及。EAL的目标是提供一个统一的接口来访问和管理ECU(Electronic Control Unit,电子控制单元)的硬件资源,包括处理器、存储器和外围设备。通过这种抽象,EAL使得上层软件能够以一种标准化的方式与ECU硬件交互,而不需要关心具体的硬件实现细节。EAL解决了硬件异构性带来的问题,即不同ECU可能采用不同类型的处理器和硬件配置。

大模型大数据攻城狮的专栏 5609

BZOJ2215[Poi2011]Conspiracy——2-SAT+tarjan缩点

题目描述 Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动。国王需要选一些人来进行这场运动,而这些人被分为两部分:一部分成为同谋者活动在被占领区域,另一部分是后勤组织在未被占领的领土上运转。但是这里出现了一个问题: 1. 后勤组织里的任意两人都必须是熟人,以促进合作和提高工作效率。 2. 同谋者的团体中任意两人都不能是熟人。 3. 每一部分都至少要有一个人。国王想...

weixin_34146805的博客 178

路径跟踪 | 图解纯追踪算法Pure Pursuit(附ROS C++/Python/Matlab仿真)

纯追踪算法(Pure Pursuit)参考了人类驾驶行为,其基本思想是在待跟踪路径上设置预瞄点(goal-ahead),通过简单的几何方法驱动机器人跟踪预瞄点直至抵达目标位置.本文详细推导纯追踪算法的理论原理及其变种——自适应纯追踪算法(APP)和规范化纯追踪算法(RPP),并提供ROS C++/Python/Matlab三种仿真实现加深理解

FRIGIDWINTER的博客 8410

# bzoj2215: [Poi2011]Conspiracy 2-sat

bzoj2215: [Poi2011]Conspiracy 2-sat 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2215 思路 一个点的属性为去当同谋者和后勤两种 求出一种方案来很简单(只需要用简单的2-sat) 我们发现一条特别重要的性质: 一个方案只会由已经求出的其他任意一种方案改变一方的一个人得来 (基本看出来就稳了)...

weixin_30955341的博客 118

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

BZOJ2215 : [Poi2011]Conspiracy

考虑构造一组可行解,把每个点拆成两个点x0,x1,x0表示后勤组织,x1表示同谋者。 若x与y认识,则x1向y0连边。 若x与y不认识,则x0向y1连边。 如此求出一组2-SAT的可行解,如果无解则答案为0。 若有解,那么最多只能把一个人从后勤组织改为同谋者,也最多只能把一个人从同谋者改为后勤组织。 于是预处理出若改变每个人的状态,他与另一个集合里哪一个人冲突。 然后枚举要改变的人,统...

weixin_34019929的博客 99

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BZOJ2278: [Poi2011]Garbage

题目大意:给定n个点m条边,每条边有一个初始权值0或1,有一个最终权值0或1,每次可以给一个简单环上的边权值异或1,求一种方案使得每条边从初始权值变成最终权值 一看这个样子就知道不需要该变的边没啥用,因为反正都要变两次,不如把这两次合起来,然后这些边不变.. 然后我就写了一个找欧拉回路的算法,交上去WA了.... 然后就要了数据,发现需要特判单独的点,否则会输出一些奇

commonc的博客 771

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

bzoj2215 POI2011 Conspiracy

题意 给出一张图,将其分为一个团和一个独立集。问有多少种方案。团和独立集都不能为空 思路 先考虑找可行方案应该怎么做 显然是个\(2-sat\)。可以将分到团和独立集中分别看为0和1。 如果两个点之间右边,那么必定不能同时在独立集中。如果两个点之间没有边,那么必定不能同时在团中。然后连边\(求2-sat\)即可 然后考虑统计方案 可以发现,如果在某个可行方案中两个点都在团中,那么在所有方...

diecimu4798的博客 170

POI2011 题解

把BZOJ上的POI2011刷完了,本来想把整个POI2011都刷完的,但是正好这段时间POI官网挂了,交不了题,所以就只能做这么多了 Stage I:   Conspiracy   Lollipop   Lightning Conductor   Shift   Plot Stage II :   Strongbox   Difference   Garbage   T

commonc的博客 1282

bzoj2215[POI2011]Conspiracy

题意 给出n个点的一个图,要求把所有点分成两部分,一部分是一个团,一部分是一个独立集.n<=5000 分析 记录自己的愚蠢... 首先考虑如何判断存在可行方案,那么每个点要么属于团,要么属于独立集,且可以根据一个点属于哪一部分推出其他某些属于哪一部分.(如果我们钦定点A属于团,那么所有和A没有连边的点都必须属于独立集,如果我们钦定点A属于独立集,那么所有和A有连边的点都必须属于团).这样的二...

weixin_30525825的博客 138

POI2011 同谋者 Conspiracy

POI2011 同谋者 Conspiracy 题目传送门 题意 \(Bitotia\)偷袭了\(Byteotia\)并占领了很大一块领地。\(Byteotia\)国王\(Byteasar\)正在被占领的领地内组织人们抵抗运动。国王需要选择一部分人来作为这场运动的核心。他们会被分成两部分:一部分人作为同谋者在领地内指挥,另一部分人作为后勤提供援助。这两部分人需要满足以下条件: 后勤组必须...

dieyi9889的博客 170

BZOJ2217: [Poi2011]Lollipop

题目大意:给一个只有1和2的序列,每次询问有没有一个子串的和为x 先预处理出前缀和,然后对于每个询问,假如恰好有一个前缀和=x,那么就直接输出 否则一定有一个前缀和为x+1的地方,这时只要开头是1或者开头是2后面是1都可以直接出解.. 也就是说不能直接出解的情况只是前后都是2,所以预处理出每个点向后最多有多少个连续的2,这道题就可以做了 #include #include

commonc的博客 934
上一篇: BZOJ1110: [POI2007]砝码Odw
下一篇: BZOJ2525: [Poi2011]Dynamite
commonc
博客等级 码龄11年 173粉丝 167原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值