首页 > 其他分享 >P8779 [蓝桥杯 2022 省 A] 推导部分和

P8779 [蓝桥杯 2022 省 A] 推导部分和

时间:2024-06-03 15:13:49浏览次数:27  
标签:int ll len 蓝桥 fa P8779 2022 now finds

原题链接

题解

1.集合+搜索
2.把数字看成间隔而不是点
3.类似于差分约束,这里的建边意味着相对大小,根据传递性可知,如果ab建边,bc建边,那么ac之间的关系也能确定,可以用搜索维护
所以unknown代表两个点没有之间或者间接的边相连,可以用集合维护

code

#include<bits/stdc++.h>

#define ll long long
using namespace std;
ll dis[100005]={0};
bool vis[100005]={0};
struct node
{
    ll to,len;
};
vector<node> G[100025];


void dfs(int now)
{
    vis[now]=1;
    for(auto next:G[now])
    {
        int to=next.to;
        ll len=next.len;
        if(!vis[to])
        {
            dis[to]=dis[now]+len;
            dfs(to);
        }
    }
}

int fa[100005];
int finds(int now){return fa[now]==now?now:fa[now]=finds(fa[now]);}

int main()
{
    ll n,m,Q;
    cin>>n>>m>>Q;

    for(int i=0;i<=n;i++)fa[i]=i,dis[i]=0;
    for(ll i=1;i<=m;i++)
    {
        ll l,r,s;
        cin>>l>>r>>s;

        G[l-1].push_back({r,s});
        G[r].push_back({l-1,-s});
        fa[finds(l-1)]=finds(r);
    }


    for(int i=0;i<=n;i++) if(!vis[i]) dfs(i);

    while(Q--)
    {
        ll l,r;
        cin>>l>>r;
        if(finds(l-1)==finds(r)) cout<<dis[r]-dis[l-1]<<endl;//dis表示其在所在集合内的相对大小
        else puts("UNKNOWN");
    }
    return 0;
}

标签:int,ll,len,蓝桥,fa,P8779,2022,now,finds
From: https://www.cnblogs.com/pure4knowledge/p/18228911

相关文章

  • 蓝桥杯CA国二——试题回忆
    试题顺序可能会记错A.填空,查日历查出来后又验证了一下5分B.和平方有关,直接先看看给的数是不是一个平方数,发现是,然后推式子,但是最后还是算错了0分C.简单题,随便写10分D.一共有9!种状态,bfs预处理每种的步数,T次查询,没时间写,重大决策失误0分E.线段树维护区间最小值,固定r......
  • 16位简单ASM题的记录——[HGAME 2022 week1]easyasm
    第一次遇见16位,和纯看汇编的题目,记录一下DIE16位,IDA用32位或者64位都可以打开IDA主要汇编部分seg003:0000;===============SUBROUTINE=======================================seg003:0000seg003:0000;Attributes:noreturnseg003:0000seg003:0000......
  • Visual Studio 2022创建C/C++项目
    没想到还有能用到C/C++的时候……刚好忘记怎么用VisualStudio了,写个博客记录一下 参考——https://blog.csdn.net/Long_xu/article/details/130599633https://learn.microsoft.com/zh-cn/visualstudio/extensibility/vsix/get-started/get-tools?view=vs-2022版本:VisualS......
  • 第十五届蓝桥杯国赛C++B组文字题解
    A:合法密码暴力跑一下即可,坑点是pdf有换行,字母不算字符,最后答案是:400。B:选数概率观察到第二个分数的分母很大,猜测\((a+b+c)\times(a+b+c-1)=20910‬\)发现无整数解,于是考虑到可能被约分了,将\(20910\times2=41820\)最后得到\(a+b+c=105\)然后就......
  • 第十五届蓝桥杯大赛软件赛国赛 C/C++ 大学 A 组 游记
    Preface前情提要:去年圈钱杯国赛游记,本来还想着今年报JAVA/PY的,结果语法一个学不懂还是去CPP组开卷了省赛很简单但因为最后一题看漏条件了还是遗憾离场,但也给了我一种今年篮球杯水的一批的刻板印象然后国赛被一堆数学题直接创飞了,但好在前面几个题还能胡几个做法出来,但FWT和神秘......
  • SQLServer2022创建表及字段增加备注
    SQLServer2022创建表及字段增加备注,导入Oracle12c示例数据库HRschema下的表及数据。在SQLServer中,可以使用系统视图sys.extended_properties来查看表或字段的描述官方文档地址https://learn.microsoft.com/en-us/sql/ssms/visual-db-tools/column-properties-visual-dat......
  • 微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
    安装配置相关软件安装PowerShell7/Coredotnettoolinstall--globalPowerShell安装VisualStudio扩展MicrosoftChildProcessDebuggingPowerTool2022安装插件后启动VisualStudio,可以在Debug->OtherDebuggingTargets中找到ChildProcessDebuggingSet......
  • Windows Server 2022 中 wbadmin 工具
    WindowsServer2022中wbadmin工具的初级应用大纲:1.理解wbadmin工具介绍wbadmin工具及其作用。解释wbadmin在WindowsServer2022中的重要性和作用。2.基本备份操作学习如何使用wbadmin工具执行基本备份操作。包括备份到本地磁盘或网络共享的示例。3.......
  • 6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考
            6月1日,今天参加了第十五届蓝桥杯国赛,本人打的是pb组,做完回来就把代码复盘了一下。但由于成绩未出,答案仅供参考。第一题:31第二题:没写出来第三题:dic={}n,m=map(int,input().split())ls=list(map(int,input().split()))foriinrange(1,n+1):dic[i]......
  • Windows Server 2022上使用DFS文件服务器
    WindowsServer2022上使用DFS(分布式文件系统)作为文件服务器的初级应用大纲:课程内容介绍DFS什么是DFS?DFS的优势和应用场景部署WindowsServer2022WindowsServer2022的安装和配置安装DFS角色在WindowsServer2022上安装DFS角色创建DFS命名空间创建DFS......