SCC::poj2186 Popupar Cows && poj2553 The Bottom of A Graph

Game Theory: 公平博弈 Notes: The following excerpt is from a book 《GAME THEORY》by Thomas && S.Ferguson and a paper by Ulyssess. 一. 公平聯合博弈 公平聯合博弈(Impartial combi 阅读详情
 

关于SCC的知识与算法,参见《SCC》一文。这两道题本质是一样的,细微的区别只在于输出而已。夜鱼只给我做前一道题,大概是看到我做的《图算法》的小结里面没有SCC的地位,想给我提个醒。后来我在那篇小结里面补上了SCC,顺便也对SCC的知识梳理了一遍,觉得手痒,网上查了一下还有poj2553也是关于SCC的,但没想到poj2553一题是赤裸裸的SCC,但这道题我却WA了几次,原因是在输出的时候没有“按序”!

 1. poj2186"Popupar Cows"

题目大意:一次调查结果(A,B)表示牛A认为B受欢迎,这种关系具有传递性。有N(1~10000)头牛牛,做了M(0~50000)次调查。求被所有其他牛牛欢迎的牛的头数。

分析:画了图就知道,其实就是求最大连通分量图G^{SCC},然后求该图每个“点”的出度,若出度为零的个数大于1,则无解,否则输出出度为零的“点”的内容。求SCC的时候选用的是tarjan算法。

#include "stdafx.h"       //Memory:1816k    Time:454ms
#include <iostream>
using namespace std;
#define MaxN 10010
#define MaxE 50010
//========================模板开始=====================================
typedef struct node{
	int data;
	struct node *next;
}SLink;
SLink to[MaxE];
int dfu[MaxN],low[MaxN]; //dfu[i]为节点i搜索的次序编号,low[i]为i或i的子树能够追溯到的最早的栈中节点的次序编号
int order[MaxN],SCC[MaxN]; //order记录遍历次序,SCC[i]记录i所属的SCC
int count[MaxN];        //记录每个SCC的出度
bool ifstack[MaxN];         //相当于栈的作用
int dex=0,st=0,cnt=0;
int N,M;

void tarjan(int i){
	dfu[i]=low[i]=++dex;
	ifstack[i]=1;     //i入栈
	order[++st]=i;   //记录遍历顺序
	int j;
	for(SLink *e=&to[i];e;e=e->next){      //这个for为DFS
		j=e->data;
		if(!dfu[j]){
			tarjan(j);
			if(low[j]<low[i])
				low[i]=low[j];
		}
		else if(ifstack[j] && dfu[j]<low[i])
			low[i]=dfu[j];
	}
	if(dfu[i]==low[i]){  //当dfu(i)=low(i)时,以i为根的搜索子树上所有节点是一个强连通分量。
		cnt++;
		do{
			j=order[st--];
			ifstack[j]=0;
			SCC[j]=cnt;
		}while(j!=i);
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	cin>>N>>M;
	for(int i=1;i<=N;i++){
		to[i].data=i;
		to[i].next=NULL;
	}
	int temp1,temp2;
	for(int i=1;i<=M;i++){
		cin>>temp1>>temp2;
		SLink *p=new SLink;
		p->data=temp2;
		p->next=to[temp1].next;
		to[temp1].next=p;
	}

	memset(dfu,0,sizeof(dfu));
	for(int i=1;i<=N;i++){
		if(!dfu[i])
			tarjan(i);
	}

	memset(count,0,sizeof(count));
	for(int i=1;i<=N;i++){
		for(SLink *e=&to[i];e;e=e->next){
			if(SCC[i]!=SCC[e->data])
				count[SCC[i]]++;
		}
	}
//=========================模板结束======================================
	int cow=0,k=1;
	for(int i=1;i<=cnt;i++){
		if(count[i]==0){         
			cow++;k=i;
		}
	}
	
	if(cow!=1) cout<<0<<endl;
	else{
		int num=0;
		for(int i=1;i<=N;i++){
			if(SCC[i]==k)
				num++;
		}
		cout<<num<<endl;
	}

	return 0;
}

2. poj2553"The Bottom of A Graph"

赤裸裸的一道题,出题者大概是知道现在的文化潮流:快餐!连衣服都不穿。

借用poj2186的代码,其中“//======模板开始====……//=====模板结束=====”部分的代码一字不改,只是改写输出部分。一开始WA几次,觉得没道理,后来测了数据【10 1 1 5】就发现问题了,用了一个hash表排了下序,比较ugly地AC了。

…… ……                 // M:2396K        T:375MS
while((cin>>N) && N && (cin>>M)){
	dex=st=cnt=0;
…… ……
	int pri[MaxN]={0};
	for(int i=1;i<=cnt;i++){
		if(count[i]==0){
			for(int k=1;k<=N;k++){
				if(SCC[k]==i){
					pri[k]=1;
				}
			}
		}
	}
	for(int k=1;k<=N;k++){
		if(pri[k]==1){
			cout<<k<<" ";
		}
	}
	cout<<endl;
}


3. 总结:

这些题目,模板性太强了,主体的算法一经写出来,剩下的就是一下细节上的处理了。相对与poj1112"team them up"来说,这两题很简单,poj1112的复杂之处在于求完SCC之后还要DP一下,甚为拐弯抹角。

 

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

相关推荐

FPGA实现16x16点阵汉字滚动显示:Verilog代码与Quartus仿真详解

本文详细介绍了如何使用FPGA实现16x16点阵汉字滚动显示,包括Verilog代码设计、Quartus仿真及硬件连接技巧。通过字模数据存储和扫描控制逻辑,实现汉字的动态显示效果,并提供了优化建议和常见问题解决方案,适合FPGA开发者和硬件爱好者学习参考。

weixin_29172963的博客 352

图算法

1. 图的基本概念 2. 图的存储结构 (1)邻接矩阵 一般来说,邻接矩阵所占空间与边数无关(不考虑压缩存储),适合于存储稠密图。为了反映一个图的全面信息,通常采用以下类型定义: #define MAXVEX 100 typedef char VertexType;

我以我心照人 1883

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

貪心::poj1328 radar installation && poj2109 Power of Cryptography && poj2586 Y2K Accounting Bug

貪心,就是步步為贏。 這是ACM知識表里基礎算法中的貪心部分,屬於水題範疇。 1. poj1328 radar installation 題目:照抄了。 Assume the coasting is an infinite straight line. Land is

我以我心照人 1356

LIN协议栈 AUTOSAR架构下 状态管理

LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

汽车电子从业者,电子爱好者。 2051

从寄存器到驱动:深入解读RFSoC RF-ADC阈值与校准API的底层逻辑

本文深入解析Xilinx RFSoC中RF-ADC的阈值检测与校准API的底层逻辑,涵盖寄存器映射、驱动实现及Gen3增强功能。通过详细代码示例和寄存器操作流程,揭示如何精准控制信号阈值检测与校准时序,提升系统稳定性与性能。特别探讨RF数据转换器在无线通信和雷达信号处理中的关键应用。

weixin_30552811的博客 687

时间代价分析

(1)主方法,对于具有递归式的方程很有用,其原理是递归树的计算。但此方法不是万能的。比如递归式T(n)=5T(n/5)+n/lgn,就得老老实实地用递归树去计算了。  (2)待续

我以我心照人 1259

Windows 10/11下R与RStudio最新版安装避坑指南(含镜像加速配置)

本文提供了Windows 10/11系统下R与RStudio最新版的详细安装指南,包含镜像加速配置和常见问题解决方案。通过分步教程帮助用户避开安装陷阱,优化开发环境设置,特别适合国内用户快速搭建高效的数据分析平台。

weixin_29065959的博客 1005

DFS.枚舉::poj1753 flip game && poj2965 the Pilots Brothers'refrigerator

枚舉,對於狀態或者搜索空間很少的情況可以用,是一種笨重的聰明方法!! 但有時候可以更深入地挖掘題目,得到更好的算法,例如poj2965 1.poj1753 flip game 題目:一个4*4的棋盤放滿棋子,每個棋子不是白色就是黑色。每次选择任意一个棋子翻轉变成相反的颜色

我以我心照人 1014

普通用户也能免费使用 SAP Joule!

点击 SAP Joule 给出的按钮之后,SAP Business Application Studio 左侧显示的界面,就从 SAP Joule 替换成了 SAP Fiori tools 的 Project Accelerator 工具。接下来就是在后者中标准的操作流程了。笔者之前的文章,有朋友提问,既然 ChatGPT,DeepSeek,Grok 这些主流 AI 工具,回答 SAP 相关问题时都经常翻车,那 SAP 自家的 Joule 表现又如何呢?还有朋友评论:如何才能使用 SAP Joule?

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1018

从数字后端角度谈谈occ电路(一)

摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件

芯冰乐 585

SCC

注:大部分参见百度百科。 在有向图G中,如果两个顶点vi,vj间有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,

我以我心照人 932

用 CDS 作为 Referenced Data Source 开发 SAP Gateway OData 服务,一条更轻的 SEGW 路线

本文介绍了SAP Gateway项目中从传统手工建模到基于CDS View的现代化开发方式转变。主要内容包括: 传统方式需要在SEGW中手动创建Entity Type、Entity Set等元素,并在DPC_EXT中编写大量查询逻辑,存在模型层和业务逻辑重复表达的问题。 7.50版本后,SAP Gateway与ABAP CDS深度集成,可通过SEGW直接引用CDS View作为数据源,自动生成数据模型和SADL读取逻辑,支持完整的OData查询功能。 最佳实践建议通过Consumption View而非直接

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 706

單調隊列::poj2823 Sliding Window

题目: 一个长度为 N 的数组,一个长为 K 的滑动窗体从最左移至最右端, 你只能见到窗口的K个数,每次窗体向右移动一位,如下表: 要找出窗口在各位置时的 max value,min value Window position Min va

我以我心照人 738

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DP/單調隊列::poj3250 Bad Hair Day

题目: Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ

我以我心照人 637

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OS學習小結

《現代操作系統1~6》總結 Lyle 2011-8-25 一.       操作系統概論         一般計算機系統包含硬件、系統程序和應用程序三個部分。粗略地講,系統程序中最重要的操作系統,它夾在硬件和應用程序之間,其任務就是有效地管理計算機各種資源,使得使用計算機

我以我心照人 607

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DP::poj1159 Palindrome

被1112卡了一个多星期,虽然思路很清晰了,各部分的独立跟踪测试也没什么问题,但,就是AC不了!无奈,只好先放着。     今天下午夜鱼又给我布置了一道题目,回文字符,挺有意思的,看完题目我就接着看村上的《当我跑步时 我谈些什么》,还美美地睡了半个小时。这些天实在缺午觉啊!醒来

我以我心照人 580

DP::Poj1050 To the max

题目:给定一个N*N方阵,元素为整数,求连续子阵全部元素和的最大值。   一开始我想直接在二维上解决问题,在构造递归方程的时候令max[k](k=i+j)为大小i*j的子阵的子阵和的最大值,然而下面的例子说明了没有最优子结构 0 -2 -7 0 9 2 -6 2 -4

我以我心照人 548

DP::Poj1015 July Compromise

初学DP,夜鱼就给我找了这么条难缠的“大鱼”,有点打击到我~~~~  问题:n個候選人,要挑m個組成陪審團。選人方法:控方和辯方根據喜歡程度為每個候選人打分(0~20),選出的這m個人,必須滿足辯方總分和控方總分的差的絕對值最小。如有多種方案,則選辯控雙方總分之和最大的方案即可

我以我心照人 454

DP::Poj1088 滑雪

这题不难,状态转移方程很快就写出来 m[i, j]=max{m[i-1, j](下)+1,m[i, j-1](左)+1,m[i+1, j](上)+1,m[i, j+1](右)+1}(若下左上右对应元素比s[i, j]小,则对应的m[ ]就可以出现在方程中) 具体实现的话也很简单

我以我心照人 432

DP.單調隊列::poj1631 Bridging signals

题目大意:两岸的同等数目的信号灯一一对应,连线,从中找出最多的线出来,它们之间互不交叉。只要求输出最大的线条数。   本题不需要画图了,因为画了图会尝试用二维的DP去做,吃力不讨好,既然输入是一维的一个串,而且该串简洁地包含了全部的信息,那么直接DP何乐而不为呢? 通过对例

我以我心照人 408

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 206

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 312

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 571

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20
上一篇: SCC
下一篇: Game Theory: 公平博弈
初四
博客等级 码龄15年 3粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值