首页 > 其他分享 >P8724 [蓝桥杯 2020 省 AB3] 限高杆

P8724 [蓝桥杯 2020 省 AB3] 限高杆

时间:2024-06-03 22:22:54浏览次数:25  
标签:struct val read ll 蓝桥 AB3 2020 now dis

原题链接

题解

分层图,太奥妙了
每层图都是一样的 \(d=0\) 的边建的图, \(d=1\) 就像梯子,可以去上一层走,总共有三层

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long

inline void read(ll &x) {
    x = 0;
    ll flag = 1;
    char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        x = (x << 3) + (x << 1) + (c ^ 48);
        c = getchar();
    }
    x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}

struct node
{
    ll to, len;
};
vector<node> G[30015];
struct unit
{
    ll x, y, w;
};
struct fresh
{
    ll pos, val;
    bool operator<(const fresh &b)const
    {
        return val > b.val;
    }
};

ll dis[30015];
int main()
{
    memset(dis, 0x3f, sizeof dis);
    ll n, m;
    read(n);
    read(m);

    for(ll i = 1; i <= m; i++)
    {
        ll x, y, w, c;
        read(x);
        read(y);
        read(w);
        read(c);
        if(c)
        {
            G[x].push_back({y+n, w});
            G[x+n].push_back({y+2*n, w});
            G[y].push_back({x+n, w});
            G[y+n].push_back({x+2*n, w});
            continue;
        }

        G[x].push_back({y, w});
        G[y].push_back({x, w});
        G[x+n].push_back({y+n, w});
        G[y+n].push_back({x+n, w});
        G[x+2*n].push_back({y+2*n, w});
        G[y+2*n].push_back({x+2*n, w});
    }

    priority_queue<fresh> q;
    q.push({1, 0});
    while(q.size())
    {
        ll now = q.top().pos, val = q.top().val;
        q.pop();
        if(dis[now] <= val) continue;
        dis[now] = val;
        for(auto next: G[now])
        {
            ll to = next.to, len = next.len;
            if(dis[to] > dis[now] + len)
            {
                q.push({to, dis[now] + len});
            }
        }
    }

    // for(ll i = 1; i <= 3 * n; i++) cout << dis[i] << " ";
    write(dis[n] - min(dis[2*n], dis[3*n]));

    return 0;
}

标签:struct,val,read,ll,蓝桥,AB3,2020,now,dis
From: https://www.cnblogs.com/pure4knowledge/p/18229808

相关文章

  • P8779 [蓝桥杯 2022 省 A] 推导部分和
    原题链接题解1.集合+搜索2.把数字看成间隔而不是点3.类似于差分约束,这里的建边意味着相对大小,根据传递性可知,如果ab建边,bc建边,那么ac之间的关系也能确定,可以用搜索维护所以unknown代表两个点没有之间或者间接的边相连,可以用集合维护code#include<bits/stdc++.h>#definel......
  • 蓝桥杯CA国二——试题回忆
    试题顺序可能会记错A.填空,查日历查出来后又验证了一下5分B.和平方有关,直接先看看给的数是不是一个平方数,发现是,然后推式子,但是最后还是算错了0分C.简单题,随便写10分D.一共有9!种状态,bfs预处理每种的步数,T次查询,没时间写,重大决策失误0分E.线段树维护区间最小值,固定r......
  • 第十五届蓝桥杯国赛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和神秘......
  • dbg修改EIP动调 [BJDCTF 2020]Easy
    教程多是patching,但是我下载错误(以后有时间再试试),那用dbg吧还有这道题蜜汁让我幻视pwn题目DieIDA主函数很好找,代码只是输出提示,没有其他东西了关键函数在其他地方 看看左边函数框 发现在main函数前面有一个名字一看就是自定义的函数ques这个函数在main函数之前运行......
  • 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]......
  • 蓝桥杯真题
    2023省赛A颜色平衡树写的启发式合并multiset(用来求出现次数的最值)最好的做法应该是dsuontree买瓜unordered_map会T,gp_hash_table会M,只能手写哈希表网络稳定性答案为最大生成树上两点路径上边权最小值,为kruskal过程中将两点联通的那条边把询问挂到点上,启发式合......
  • 【备战蓝桥杯】蓝桥杯省一笔记:算法模板笔记(Java)
    蓝桥杯0、快读快写模板1、回文判定2、前缀和3、差分4、二分查找5、快速幂6、判断素数7、gcd&lcm8、进制转换9、位运算10、字符串常用API11、n的所有质因子12、n的质因子个数13、n的约数个数14、n阶乘的约数个数15、n的约数和16、阶乘&双阶乘17、自定义升序降序18、动态......
  • 2023 蓝桥杯国赛
    vp了3h。AWA(想错了,也没手玩),B不会(应该是欧拉定理,忘了),H40%(背不过板子)。其他过了H\(O(n^2\logn)\)本地1s+,I本地3.4s/jk,想了下这么典的问题应该没有更优做法。相信评测机大部分题都随手测了一下,只拍了E(二分)I(点分治),FH(正解)I也值得拍。今天状态不错,几乎没挂分,也没怎么调,......
  • 蓝桥杯补题
    知识点模块1.x=(y2-z2),x=(y-z)*(y+z);说明x由两个奇偶性相同的数相乘而得令y-z=a,y+z=b,消元一下得出2*y=(a+b),因为y为整数,所以a+b为偶数,所以a和b的奇偶性肯定是相同的2.一个数由两个偶数相乘而得到那么它一定是4的倍数题解模块P8635[蓝桥杯2016省AB]四平方和这题做过两次了,还......