G. Rudolf and CodeVid-23 codeforces1846G

这篇具有很好参考价值的文章主要介绍了G. Rudolf and CodeVid-23 codeforces1846G。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Problem - G - Codeforces

题目大意:给出一长度为n的二进制字符串s,和m对二进制字符串e1和e2,,费用为d,s和一对字符串操作后s中是1且e1中也是1的位置会变成0,s中是0,e2中是1的位置会变成1,得到新的s,每对字符串可以操作任意次,问能否使s变成全0字符串

1<=n<=10;1<=m<=1000;1<=d<=1000

思路:可以发现s和一对字符串操作,就相当于s&(~e1)|e2(可以用真值表推导),因为字符串的位数最高是10位,也就是说无论怎么操作,最多出现1024个不同的字符串,所以我们可以把每个不同的字符串当做一个节点,先用bitset把字符串都转化为数字,然后每一对字符串作为边,用set来做bfs的队列,从起点开始,将set中的每个点都用上面的到的公式与每对字符串进行操作,如果到新的的距离小于之前记录的距离,就更新这个最短距离,最后队列为空后输出到0点的距离即可

//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + 5;
ll n, m;
pair<ll, pair<ll, ll>>e[N];
ll dis[5000];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		cin >> n >> m;
		bitset<10>sx;
		cin >> sx;
		ll s = sx.to_ullong();//将二进制字符串转化为long long型数据
		for (int i = 1; i <= m; i++)
		{
			ll dx;
			bitset<10>ux, vx;
			cin >> dx >> ux >> vx;
			ll u = ux.to_ullong();
			ll v = vx.to_ullong();
			e[i].first = dx;
			e[i].second = make_pair(u, v);//记录每对字符串的费用,和e1,e2对应的数字
		}
		for (int i = 0; i <= (1 << (n + 1)); i++)
		{//初始化每个点到起点的距离
			dis[i] = 0x7fffffff;
		}
		dis[s] = 0;
		set<pair<ll, ll>>q = { make_pair(0, s) };//用集合记录创造出的点,及到其的最短距离,避免重复
		while (!q.empty())
		{
			pair <ll, ll> temp = *q.begin();
			q.erase(q.begin());//set弹出堆顶元素的方法
			ll d = temp.first;
			ll u = temp.second;
			for (int i = 1; i <= m; i++)
			{
				ll v = u & (~e[i].second.first) | e[i].second.second;//得到新的点
				if (dis[v] > d + e[i].first)
				{
					q.erase(make_pair(dis[v], v));//更新距离要把原先记录的删掉
					dis[v] = d + e[i].first;
					q.insert(make_pair(dis[v], v));
				}
			}
		}
		if (dis[0] == 0x7fffffff)
		{//到终点的距离没更新,就是没通路
			cout << -1 << endl;
		}
		else
		{
			cout <<dis[0] << endl;
		}
	}
	return 0;
}

  文章来源地址https://www.toymoban.com/news/detail-548640.html

 

到了这里,关于G. Rudolf and CodeVid-23 codeforces1846G的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图论做题笔记:bfs

    题目: 基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是  \\\'A\\\' 、 \\\'C\\\' 、 \\\'G\\\'  和  \\\'T\\\'  之一。 假设我们需要调查从基因序列  start  变为  end  所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。 例如, \\\"AACCGGTT\\\" -- \\\"AACCGGTA

    2024年04月09日
    浏览(42)
  • 图论岛屿问题DFS+BFS

    leetcode 200 岛屿问题 BFS代码

    2024年02月09日
    浏览(38)
  • 【图论】BFS中的最短路模型

    算法提高课笔记 BFS可以解决边权为1的最短路问题,下面是相关例题 将源点在开始时存进队列 原题链接 给定一个 n×n 的二维数组,如下所示: 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最

    2024年02月14日
    浏览(46)
  • 图论之dfs与bfs的练习

    dfs--深度优选搜索 bfs--广度优先搜索 迷宫问题--dfs 问题: 给定一个n*m的二维迷宫数组其中S是起点,T是终点,*是墙壁(无法通过), .是道路 问从起点S出发沿着上下左右四个方向走,能否走到T点?能输出\\\"YES\\\",否则输出\\\"NO\\\"。 8 8 *****... *.S...** *****.** *****..* *T..**.* .**.**.* ..*...

    2024年02月20日
    浏览(33)
  • 搜索与图论第二期 BFS

    BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。 如果所有节点均被访问,则算法中止。 BFS同样属于盲目搜索。 一般用队列数据结构来辅助实现BFS算法。 1首先将根节点放入队列中。 2从队列中取出第一个节点,并检验它是否为目标。如果找到目标,则结束搜寻并回

    2024年01月21日
    浏览(49)
  • U4_1:图论之DFS/BFS/TS/Scc

    由点(vertices)和边(edges)组成 G = ( V , E ) G=(V,E) G = ( V , E ) , ∣ V ∣ = n |V|=n ∣ V ∣ = n , ∣ E ∣ = m |E|=m ∣ E ∣ = m (这里默认有向图,无向图用 G G G = = = { V V V , E E E }表示 顶点的度是关联在其上的边的数量。满足 ∑ d e g r e e ( v ) = 2 ∣ E ∣ sum degree(v)=2|E| ∑ d e g ree ( v ) = 2∣

    2024年02月05日
    浏览(39)
  • 红与黑(bfs + dfs 解法)(算法图论基础入门)

    献给阿尔吉侬的花束( 入门级bfs查找 + 模版解读 + 错误示范 在之前的博客当中,详细地介绍了这类题目的解法,今天为大家带来一道类似的题目练练手,后续还会更新更有挑战的题目以及更为详细的解析,喜欢的小伙伴可以点个关注啦! 有一间长方形的房子,地上铺了红色、

    2024年01月20日
    浏览(54)
  • 【寸铁的刷题笔记】树、回溯、图论、bfs、dfs(四)

    大家好 我是寸铁👊 金三银四 , 图论基础 、 回溯 结合 bfs 、 dfs 是必考的知识点✨ 快跟着寸铁刷起来!面试顺利上岸👋 喜欢的小伙伴可以点点关注 💝 🌞详见如下专栏🌞 🍀🍀🍀 寸铁的刷题笔记 🍀🍀🍀 考点 dfs、回溯 代码 考点 dfs、回溯 代码 考点 bfs、宽度搜索、哈

    2024年03月11日
    浏览(54)
  • 【LeetCode 热题 100】图论 专题(bfs,拓扑排序,Trie树 字典树)

    from: https://leetcode.cn/studyplan/top-100-liked/ bfs 具有 边权为1 的最短路性质 拓扑排序,入度 Trie树, 高效存储 字符串【见鬼,不知道为什么写错,需要掌握熟练度】 dfs 写法,比较简洁 bfs 写法,有最短路性质 bfs 具有 边权为1 的最短路性质 拓扑排序 模板题 数组写法,简洁,需

    2024年02月13日
    浏览(52)
  • 【算法基础:搜索与图论】3.2 树与图的dfs和bfs

    要学会建树、建图的通用方法。 dfs 和 bfs 的代码框架。 https://www.acwing.com/problem/content/848/ 在 dfs 的过程中,统计各个节点作为断点时的连通块最大值。 https://www.acwing.com/problem/content/849/ 看到最短距离就可以想到使用宽搜。 注意! :题目中说明了 a 和 b 表示存在一条从 a 走到

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包