前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Wannafly Winter Camp 2020-Day3

Wannafly Winter Camp 2020-Day3

作者头像
wenzhuan
发布2022-08-15 12:21:52
2180
发布2022-08-15 12:21:52
举报
文章被收录于专栏:你会烧尽还是结冰

赛时爆零了 记的是补题qwq

3A. 黑色气球
代码语言:javascript
复制
#include<bits/stdc++.h>
#define pf printf
#define sc(x) scanf("%d", &x)
#define scs(x) scanf("%s", x)
#define scl(x) scanf("%lld", &x)
#define mst(a,x) memset(a, x, sizeof(a))
#define rep(i,s,e) for(int i=s; i<e; ++i)
#define dep(i,e,s) for(int i=e; i>=s; --i)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 2e5 + 5;
int a[1005][1005],h[1005];
int main(){
    int n; sc(n); ll sum(0); rep(i,0,n) rep(j,0,n)
        sc(a[i][j]),sum+=1ll*a[i][j],h[i]+=a[i][j];
    if(n==2) return pf("1 1\n"),0;
    sum/=(2ll*n-2); rep(i,0,n) pf("%d ",(-1*sum+h[i])/(n-2));
}
3C. 无向图定向
代码语言:javascript
复制
#include<bits/stdc++.h>
#define sc(x) scanf("%d", &x)
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
int n,m,ans,c[20];
vector<int>vv[20];
int judge(int x,int id){
    for(int t:vv[x]) if(c[t]==id) return 1;
    return 0;
}
void dfs(int x,int num){
    if(ans<=num) return;
    if(x>n) return ans=min(ans,num),(void)0;
    rep(i,1,num+1) if(!judge(x,i)){
        c[x]=i; dfs(x+1,num); c[x]=0;
    } c[x]=num+1; dfs(x+1,num+1); c[x]=0;
}
int main(){
    sc(n); sc(m); ans=1e9; while(m--){
        int u,v; sc(u); sc(v);
        vv[u].push_back(v); vv[v].push_back(u);
    } dfs(1,0); printf("%d\n",ans-1);
}
3E. 棋技哥
代码语言:javascript
复制
#include<bits/stdc++.h>
#define sc(x) scanf("%d", &x)
#define scs(x) scanf("%s", x)
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
char s[505],c;
int main(){
    int _; sc(_); while(_--){
        int n,m; sc(n); sc(m); scs(s); c=s[0];
        rep(i,1,n) scs(s); puts(c=='0'?"aoligei":"call");
    }
}
3G. 火山哥周游世界
代码语言:javascript
复制
#include<bits/stdc++.h>
#define pf printf
#define sc(x) scanf("%d", &x)
#define scs(x) scanf("%s", x)
#define scl(x) scanf("%lld", &x)
#define mst(a,x) memset(a, x, sizeof(a))
#define rep(i,s,e) for(int i=s; i<e; ++i)
#define dep(i,e,s) for(int i=e; i>=s; --i)
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pii;
const int maxn = 5e5 + 5;
int n,k,vis[maxn];
ll num[maxn],sum[maxn];
ll mx1[maxn],mx2[maxn];
vector<pii>vv[maxn];
void upd(int id,ll x){
    if(x>=mx1[id]) mx2[id]=mx1[id],mx1[id]=x;
    else if(x>mx2[id]) mx2[id]=x;
}
void dfs1(int x,int f){
    if(vis[x]) num[x]++;
    sum[x]=mx1[x]=mx2[x]=0;
    for(pii t:vv[x]){
        ll y=t.first,z=t.second;
        if(y==f) continue; dfs1(y,x);
        num[x]+=num[y];
        sum[x]+=sum[y]+(num[y]>0)*z;
        upd(x,mx1[y]+(num[y]>0)*z);
    }
}
void dfs2(int x,int f){
    for(pii t:vv[x]){
        ll y=t.first,z=t.second;
        if(y==f) continue;
        sum[y]=sum[x]-z*(num[y]>0)+z*(n-num[y]>0);
        if(num[y]!=n&&mx1[y]+z==mx1[x]) upd(y,mx2[x]+z);
        else if(num[y]!=n) upd(y,mx1[x]+z); dfs2(y,x);
    }
}
int main(){
    sc(n); sc(k); rep(i,1,n){
        ll u,v,w; scl(u); scl(v); scl(w);
        vv[u].push_back(make_pair(v,w));
        vv[v].push_back(make_pair(u,w));
    } int a0; sc(a0); vis[a0]++; k--;
    while(k--){ int a; sc(a); vis[a]++; }
    dfs1(a0,0); dfs2(a0,0);
    rep(i,1,n+1) pf("%lld\n",sum[i]*2-mx1[i]);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3A. 黑色气球
  • 3C. 无向图定向
  • 3E. 棋技哥
  • 3G. 火山哥周游世界
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档