头像

无名之人


访客:1345

离线:18小时前


新鲜事 原文

看到高三,初中,小学都放假了,高一高二满满的寂寞啊。


活动打卡代码 AcWing 101. 最高的牛

#include<bits/stdc++.h>
#define N 10010
#define PII pair<int,int>
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
map<PII,bool> st;
int q[N];
int main(){
    int n,p,h,m;int a,b;

    cin>>n>>p>>h>>m;
    q[1]=h;
    For(i,1,m){
        cin>>a>>b;
        if(a>b)swap(a,b);
        if(st[{a,b}])continue;
        st.insert({{a,b},1});st[{a,b}]=1;
        q[a+1]--,q[b]++;
    }
    For(i,1,n){
        q[i]+=q[i-1];
        cout<<q[i]<<endl;
    }
}


活动打卡代码 AcWing 100. IncDec序列

#include<bits/stdc++.h>
#define N 100010
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int q[N];
int n;
long long neg,pos;
int main(){
    cin>>n;
    For(i,1,n){
        cin>>q[i];
    }
    for(int i = n;i>=1;i--){
        q[i]-=q[i-1];

    }
    For(i,2,n){
        if(q[i]<0)neg-=q[i];
        else pos+=q[i];
    }
    long long limit = min(pos,neg)+abs(pos-neg);
    long long cnt = abs(pos-neg)+1;
    cout<<limit<<endl<<cnt;
}


活动打卡代码 AcWing 99. 激光炸弹

#include<bits/stdc++.h>
#define N 5010
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int g[N][N];
int n,r;
int x,y,w;
int main(){
    cin>>n>>r;
    r = min(r,5001);
    while(n--){
        cin>>x>>y>>w;
        g[++x][++y]+=w;
    }
    For(i,1,5001){
        For(j,1,5001){
            g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1];
        }
    }
    int res = 0;
    For(i,r,5001){
        For(j,r,5001){
            res = max(res,g[i][j]-g[i-r][j]-g[i][j-r]+g[i-r][j-r]);
        }
    }
    cout<<res;

}



#include<bits/stdc++.h>
#define N 1000010
#define INF 0x3f3f3f3f
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int h[N],ne[N],e[N],w[N],idx;
bool st[N];int dist[N];
int n,m;
void add(int a,int b,int v){e[idx]=b,w[idx]=v,ne[idx]=h[a],h[a]=idx++;}
int Prim(int u){
    int res = 0;
    dist[u]=0;
    For(i,1,n){
        int t = -1;
        For(j,1,n){
            if(!st[j]&&(dist[j]<dist[t]||t==-1)){
                t=j;
            }
        }
        if(dist[t]==INF)return INF;
        res+=dist[t];
        st[t]=true;
        for(int i = h[t];i!=-1;i=ne[i]){
            t=e[i];
            dist[t]=min(dist[t],w[i]);
        }
    }
    return res;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    memset(h,-1,sizeof h);
    memset(dist,0x3f,sizeof dist);
    cin>>n>>m;
    int a,b,v;
    For(i,1,m){
        cin>>a>>b>>v;
        add(a,b,v);add(b,a,v);
    }
    int t = Prim(1);
    if(t==INF)puts("impossible");
    else cout<<t;
}



#include<bits/stdc++.h>
#define N 10010
#define INF 0x3f3f3f3f
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std; 
struct Edge{
    int a,b,w;
};
Edge e[N];
int dist[N],backup[N];
int n,m,k;
int bellman_ford(int u){
    dist[u]=0;
    For(i,1,k){
        memcpy(backup,dist,sizeof dist);
        For(j,1,m){
            int a = e[j].a,b=e[j].b,w=e[j].w;
            dist[b]=min(dist[b],backup[a]+w);
        }
    }
    return dist[n]>INF/2?-1:dist[n];
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    memset(dist,0x3f,sizeof dist);
    cin>>n>>m>>k;
    For(i,1,m)cin>>e[i].a>>e[i].b>>e[i].w;
    int t = bellman_ford(1);
    if(t==-1)puts("impossible");
    else cout<<t;
}



#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define N 1000010
#define PII pair<int,int>
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int h[N],ne[N],e[N],w[N],idx;
bool st[N];
int dist[N];
void add(int a,int b,int v){e[idx]=b,w[idx]=v,ne[idx]=h[a],h[a]=idx++;}
priority_queue<PII,vector<PII>,greater<PII> > q;
void Djkstra(int u){
    dist[u]=0;
    q.push({dist[u],u});
    int dis,ver;
    while(!q.empty()){
        PII t = q.top();q.pop();
        ver = t.second,dis=t.first;
        if(st[ver])continue;
        st[ver]=true;
        for(int i = h[ver];i!=-1;i=ne[i]){
            int j = e[i];
            if(dist[j]>dis+w[i]){
                dist[j]=dis+w[i];
                q.push({dist[j],j});
            }
        }
    }

}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int u,s;
    memset(h,-1,sizeof h);
    memset(dist,0x3f,sizeof dist);
    int n,m;
    cin>>n>>m;
    int a,b,c;
    For(i,1,m){cin>>a>>b>>c;add(a,b,c);}
    Djkstra(1);
    if(dist[n]==INF)cout<<-1;
    else cout<<dist[n];
}



#include<bits/stdc++.h>
#define N 100010
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int h[N],ne[N],e[N],idx;
int d[N];
int n,m;
void add(int a,int b){d[b]++,e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
struct que{
    int qu[N];
    int tt=0,hh = -1;
    void push(int x){qu[++hh]=x;}
    void pop(){tt++;}
    int front(){return qu[tt];}
    bool empty(){return tt>hh?1:0;}
};
que q;
void top(){
    For(i,1,n){if(!d[i])q.push(i);}
    while(!q.empty()){
        int t = q.front();q.pop();
        for(int i = h[t];i!=-1;i=ne[i]){
            int j = e[i];
            d[j]--;
            if(!d[j])q.push(j);
        }
    }
    if(q.tt==n){
        for(int i = 0;i<n;i++)cout<<q.qu[i]<<" ";
    }else cout<<-1;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie();
    memset(h,-1,sizeof h);
    cin>>n>>m;int a,b;
    For(i,1,m){cin>>a>>b;add(a,b);}
    top();
} 


活动打卡代码 AcWing 847. 图中点的层次

#include<bits/stdc++.h>
#define N 100010
#define INF 0x3f3f3f3f
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std; 
int h[N],ne[N],e[N],idx;
bool st[N];int w[N];
int n,m;
queue<int> q;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;}
void bfs(int u){
    st[u]=true;
    q.push(u);
    while(!q.empty()){
        int t = q.front();q.pop();
        for(int i = h[t];i!=-1;i=ne[i]){
            int j = e[i];
            if(!st[j]){
                w[j]=w[t]+1;
                st[j]=true;
                q.push(j);
            }
        }
    }
}



int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    memset(h,-1,sizeof h);
    cin>>n>>m;
    int a,b;
    For(i,1,m){cin>>a>>b;add(a,b);}
    bfs(1);
    cout<<(w[n]?w[n]:-1);
}


活动打卡代码 AcWing 846. 树的重心

#include<bits/stdc++.h>
#define N 200010
#define For(i,l,r) for(int i = l;i<=r;i++)
using namespace std;
int h[N],ne[N],e[N],idx=1;
int n;int ans = N;
bool st[N];
void add(int a,int b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int dfs(int u){
    st[u]=true;
    int sum = 1,res = 0;
    for(int i = h[u];i!=-1;i=ne[i]){
        int j = e[i];
        if(!st[j]){
            int s = dfs(j);
            res=max(s,res);
            sum+=s;
        }
    }
    res = max(n-sum,res);
    ans = min(res,ans);
    return sum;
}


int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    memset(h,-1,sizeof h);
    cin>>n;
    int a,b;
    For(i,1,n){
        cin>>a>>b;
        add(a,b);add(b,a);
    }
    dfs(1);
    cout<<ans;
}