Codeforces 1857D:Strong Vertices 与图论无关的出度最大统计

1857D.Strong Vertices


Description:

  • 给定两个长度均为 n 的数组 ab (编号1~n),如果 auavbubv (uv),那么从 uv 建立一条有向边。"Strong"定义为:一个点 V 可以经过有向图中合法的通路到达其他所有的点。请求解出"Strong"点的数量和对应的编号(升序输出)。

image


Constraints:

  • 2n2·105
  • 109ai,bi109

Analysis:

  • 显然,数字这么大无法存图,那就从数字比较角度考虑。
  • 对题目中的关系移项可得,aubuavbv,出度最大的点是"Strong",那肯定差值越大越可能,统计最大值出现的次数和对应下标即可
    (注意代码的写法细节以及 max_element函数 对于普通数组 a[]vector 的差别)

Solution:

void solve() {
	int n; cin >> n;
	vector<int> a(n+1),b(n+1);
	for(int i=1;i<=n;i++) cin >> a[i];
	for(int i=1;i<=n;i++) {
		cin >> b[i];
		a[i] -= b[i]; // a[i]-b[i]数组
	}
	// 如果是普通数组,maxx = *max_element(a+1,a+1+n);
	int maxx = *max_element(a.begin()+1,a.begin()+1+n);
	vector<int> ans;
	for(int i=1;i<=n;i++) {
		if(a[i] == maxx) ans.push_back(i);
	}
	cout << ans.size() << endl;
	for(auto t : ans) cout << t << " ";
	cout << "\n";
}
posted @   Trilliverse  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示