• ABC 192 题解


    A

    模拟

    B

    模拟

    C

    模拟

    #include<bits/stdc++.h>
    using namespace std;
    #define SET0(a) memset(a,0,sizeof(a))
    #define FOR(i,a,b) for(int i=(a);i<=(b);i++)
    #define DWN(i,a,b) for(int i=(a);i>=(b);i--)
    #define INF 0x3f3f3f3f
    typedef long long ll;
    
    int main(){
        int n,k;
        cin>>n>>k;
        
        int tmp=n;
        while(k--){
            vector<int> v1,v2;
    
            int rec=tmp;
            while(rec){
                v1.push_back(rec%10);
                v2.push_back(rec%10);
                rec/=10;
            }
    
            sort(v1.begin(),v1.end());
            sort(v2.begin(),v2.end(),greater<int>());
    
            while(v2.size() && v2.back()==0) v2.pop_back();
    
            int t1=0,t2=0;
            while(v1.size()){
                t1=10*t1+v1.back();
                v1.pop_back();
            }
    
            while(v2.size()){
                t2=10*t2+v2.back();
                v2.pop_back();
            }
    
            tmp=t1-t2;
        }
    
        cout<<tmp<<endl;
        
        return 0;
    }
    

    D

    二分,开int128(毒瘤)

    E

    dijkstra板子题,开longlong

    #pragma GCC optimize("O3")
    #include<bits/stdc++.h>
    using namespace std;
    #define SET0(a) memset(a,0,sizeof(a))
    #define FOR(i,a,b) for(int i=(a);i<=(b);i++)
    #define DWN(i,a,b) for(int i=(a);i>=(b);i--)
    
    typedef long long ll;
    
    const ll INF=LLONG_MAX;
    typedef pair<ll,ll> PII;
    
    const int N=1e5+5;
    ll d[N];
    struct node{
        ll to,next,w,k;
    }e[N<<1];
    int head[N],tot;
    void add(ll u,ll v,ll w,ll k){e[tot].to=v;e[tot].w=w;e[tot].k=k;e[tot].next=head[u];head[u]=tot++;}
    bool vis[N];
    int n,m;
    int s,t;
    
    ll dijk(){
        for(int i=1;i<=n;i++) d[i]=INF;
    
        priority_queue<PII,vector<PII>,greater<PII> > pque;
        pque.push({0,s});
        d[s]=0;
    
        while(pque.size()){
            auto hd=pque.top(); pque.pop();
            int ver=hd.second;
    
            if(vis[ver]) continue;
            vis[ver]=true;
    
            for(int i=head[ver];~i;i=e[i].next){
                int go=e[i].to;
                int w=e[i].k-(d[ver]%e[i].k==0?e[i].k:d[ver]%e[i].k)+e[i].w;
                if(d[go]>d[ver]+w){
                    d[go]=d[ver]+w;
                    pque.push({d[go],go});
                }
            }
        }
    
        if(d[t]==INF) return -1;
        else return d[t];
    }
    
    int main(){
        memset(head,-1,sizeof head);
        cin>>n>>m>>s>>t;
        while(m--){
            ll u,v,w,k;
            cin>>u>>v>>w>>k;
            add(u,v,w,k);
            add(v,u,w,k);
        }
    
        cout<<dijk()<<endl;
        return 0;
    }
    
  • 相关阅读:
    二进制拆分线段树
    2017 初赛PJ 错题解析
    线段树基操
    2015 初赛PJ 错题解析
    2016 初赛TG 错题解析
    拓扑排序找最大环最小环
    长乐集训合集
    java读取网页
    java下socket传图片
    java下socket传文件
  • 原文地址:https://www.cnblogs.com/Tenshi/p/14423527.html
Copyright © 2020-2023  润新知