牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)

牛客挑战赛47 D Lots of Edges
在这里插入图片描述
思路:点的权值最多只有(1<<17)-1(131071) ,那我们可以枚举终点的值来算最短路,每个点能连边的值都是固定的,可以通过递归枚举子集(技巧)来找,每个点最多入队一次,所以最多只有131071次,枚举时会按位遍历 还有*17;

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i=0;(i)<(n);i++)
#define rep1(i,n) for(int i=1;(i)<=(n);i++)
#define se second
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define ac cout<<ans<<"\n"
using namespace std;
typedef long long  ll;
typedef unsigned long long  ull;
typedef pair<ll,ll> pii;
int dx[4]= {-1,1,0,0},dy[4]= {0,0,1,-1};
const ll mod=1e9+7;
const ll N =1e6+10;
const double eps = 1e-4;
//const double pi=acos(-1);
ll gcd(ll a,ll b){return !b?a:gcd(b,a%b);}
int a[N];
int n,s;
int d[N];
int b[N],q[N];
int tt=1,hh=0;
void dfs(int k,int y){if(d[k]!=inf&&d[k]!=0) return;d[k]=y;if(b[k]) q[++tt]=k;for(int i=k;i;i-=lowbit(i)) dfs(k^lowbit(i),y);
}
void sovle(){FILL(d,0x3f);cin>>n>>s;for(int i=1;i<=n;i++){cin>>a[i];b[a[i]]=1;}int t=(1<<17)-1;//cout<<t<<endl;q[1]=a[s];d[a[s]]=0;while(hh<tt){//cout<<hh<<" "<<tt<<endl;int k=q[++hh];dfs(k^t,d[k]+1);}for(int i=1;i<=n;i++){if(i==s) cout<<0<<" ";else if(d[a[i]]==inf) cout<<-1<<' ';else cout<<d[a[i]]<<" ";}
}
int main()
{iosint t=1;// cin>>t;while(t--){sovle();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round #715 (Div. 2) C. The Sports Festival 区间dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定一个序列aaa&#xff0c;每次拿出来任意一个数(注意每次选的数不同)&#xff0c;让后定义maxmax(a1,a2,...,ai)maxmax(a_1,a_2,...,a_i)maxmax(a1​,a2​,...,ai​)&#xff0c;minmin(a1,a2,...,ai)min…

.NET CORE下最快比较两个文件内容是否相同的方法

最近项目有个需求,需要比较两个任意大小文件的内容是否相同,要求如下:项目是.NET CORE,所以使用C#进行编写比较方法文件大小任意,所以不能将文件内容全部读入到内存中进行比较(更专业点说,需要使用非缓存的比较方式)不依赖第三方库越快越好为了选出最优的解决方案,我搭建了一个…

牛客挑战赛47 A 一道GCD问题

牛客挑战赛47 A 一道GCD问题 思路参考牛客上的题解&#xff1a; 根据多维的更相减损术得gcd(x,y,z)gcd(x,y−x,z−y)得 gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2-a1,a3-a2…)gcd(a1k,a2k,a3k…,ank)gcd(a1k,a2−a1,a3−a2…) 我们很容易可以求得等式右边的值为g我们很容易可以求得等…

Codeforces Round #715 (Div. 2) D. Binary Literature 构造

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个nnn和三个长度为n∗2n*2n∗2的串&#xff0c;让你构造一个长度≤n∗3\le n*3≤n∗3的串&#xff0c;使其子序列包含至少两个给定串。 思路&#xff1a; 先考虑如果没有长度限制&#xff0c;那么我们…

[译]试用新的System.Text.Json API

译注尝试新的System.Text.Json API对于.NET Core 3.0&#xff0c;我们 提供了一个名为System.Text.Json的全新命名空间 &#xff0c;支持读取器/写入器&#xff0c;文档对象模型&#xff08;DOM&#xff09;和序列化。在这篇博文中&#xff0c;我告诉你为什么我们建造它&#x…

牛客挑战赛47 C 条件(Floyd bitset优化)

牛客挑战赛47 C 条件 思路&#xff1a;首先我们要两个图&#xff0c;一个是一定能到达的&#xff0c;一个是可能到达的&#xff0c;如果我们使用floyd (n^3)就有可能会超时&#xff0c;因为只要求询问能否到达&#xff0c;所以权值只有0和1&#xff0c;那我们可以使用bitset来…

Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String 序列自动机

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你两个串s,ts,ts,t&#xff0c;每次可以取sss串的一个子序列&#xff0c;问你最少取多少次子序列&#xff0c;将这些子序列拼起来能得到ttt。 思路&#xff1a; 发现我题解里面没写过序列自动机&#xf…

牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作&#xff0c;最后得到的答案会是最大的&#xff0c;那我们可以将它放进一个最小堆中来维护&#xff0c;但是里面的数是需要取模的&#xff0c;当它取模的时候&#xff0c;将会变小。那我们可以用一…

C#规范整理·资源管理和序列化

源管理&#xff08;尤其是内存回收&#xff09;曾经是程序员的噩梦&#xff0c;不过在.NET平台上这个噩梦似乎已经不复存在。CLR在后台为垃圾回收做了很多事情&#xff0c;使得我们现在谈起在.NET上进行开发时&#xff0c;都会说还是new一个对象吧&#xff01;回收&#xff1f;…

Codeforces Round #615 (Div. 3) A-F

传送门 这场比较简单&#xff0c;简单的题就不说题意了。 A. 问加nnn个数&#xff0c;能否使a,b,ca,b,ca,b,c相等。 直接先加到相等再看看模333是否为000即可。 //#pragma GCC optimize(2) #include<cstdio> #include<iostream> #include<string> #incl…

使用Elasticsearch 构建 .NET 企业级搜索

最近几年出现的云计算为组织和用户带来了福音。组织对客户的了解达到前所未有的透彻&#xff0c;并能够采用个性化通信锁定客户。用户几乎可以随时随地获取其数据&#xff0c;使其更加易于访问和使用。为了存储所有这些数据&#xff0c;大型数据中心遍布全世界。但是&#xff0…

牛客练习赛73 D 离别(线段树+右端点排序离线查询)

牛客练习赛73 D 离别 思路: 对于每一个固定的右端点i&#xff0c;我们都找到一个区间&#xff08;l,r&#xff09;使得区间中的点为左端点时 里面最大的的种数为k。 这个可以用队列或者vector来维护。 然后我们对于q个查询&#xff0c;安装r从小到大排序。 开始遍历&#xff0…

Codeforces Round #617 (Div. 3) F. Berland Beauty 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给定一棵树&#xff0c;再给定若干两点最短路之间边权的最小值&#xff0c;让你给树的边权赋值&#xff0c;使得满足给定的条件&#xff0c;如果不存在输出−1-1−1。 思路&#xff1a; 观察一个性质&…

书籍推荐:《More Effective C#》

很多年前看过Bill Wagner的《Effective C#》第一版&#xff0c;涵盖了C#2.0相关语言特性的最佳实践&#xff0c;教我们怎样更优雅地去编写C#代码&#xff0c;当时觉得受益匪浅。最近拿到了《More Effective C#》第二版&#xff0c;目前看了大概三分之二&#xff0c;让我对C#的的…

Codeforces Round #717 (Div. 2) D(倍增dp)

Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问&#xff0c;每一个询问有l和r&#xff0c;问你l到r这段区间中最少能分成几段&#xff0c;每一段中的数都是互质的。 思路&#xff1a;首先预处理出每一个点向左走最多能走多远&#xff0c;可以分解质因数来找&#xff0c…

使用 docker 部署常用的开发环境

使用 docker 部署常用的开发环境Intro前段时间电脑之前返厂修了&#xff0c;所有的软件都要重新装一遍&#xff0c;很麻烦&#xff0c;既然用了 docker 有些环境就直接用 docker 部署了&#xff0c;免去了还要再下载软件重新安装的麻烦。部署 SqlServerdocker 部署 SqlServer 2…

Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 让你给一个串染色&#xff0c;不同颜色且相邻的一对字符可以互换位置&#xff0c;用最少的颜色&#xff0c;使交换后这个字符串字典序最小。 思路&#xff1a; 考虑将字符串分成若干个非递减的子序列&…

Codeforces Round #716 (Div. 2) D(随机算法)

Codeforces Round #716 (Div. 2) D 题意:区间查询&#xff0c;问区间最少能分成几部分使得最多的数不超过总数的一半 向上取整。 思路:找到区间的总数s&#xff0c;如果不超过一半的话就是一部分。超过一半的话&#xff0c;那我们只要考虑超过一半的那一个数怎么组合&#xff…

Codeforces Round #716 (Div. 2) D. Cut and Stick 主席树 + 思维

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你个长为nnn的数组aaa&#xff0c;定义好的区间为这个区间中每个数出现的次数≤⌈n2⌉\le \left \lceil \frac{n}{2} \right \rceil≤⌈2n​⌉&#xff0c;定义划分为将这个区间的若干个子序列拿出来构成若…

如何从现在开始写博客?

在前不久知名博主《纯洁的微笑》在博客园分享了他写博客的心得&#xff0c;获得了读者圈的广泛共鸣&#xff0c;同时也引起了一些老生常谈的争议&#xff0c;这样的讨论在我们长沙.NET技术社区内部也经常发生。1、写博客的好处在《软技能代码之外的生存指南》这本书中&#xff…