1. 程式人生 > >Codeforces Round #526 (Div. 1)

Codeforces Round #526 (Div. 1)

畢竟是上紫之後的第一場div1,還是太菜了啊,看來我要滾回去打div2了。

A. The Fair Nut and the Best Path

這題本來是傻逼貪心dfs,結果我越寫越麻煩,然後就只有150了。。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<cctype>
using namespace std;

typedef long long ll;
const int Maxn=610000;

int to[Maxn],nxt[Maxn],first[Maxn],tot=1;
int n,u,v;
ll a[Maxn],ans,w[Maxn],wi;
queue<int>q;

inline void add(int u,int v,ll wi) {
    to[tot]=v;
    nxt[tot]=first[u];
    w[tot]=wi;
    first[u]=tot++;
    to[tot]=u;
    nxt[tot]=first[v];
    w[tot]=wi;
    first[v]=tot++;
}

ll dfs(int root,int fa) {
    ll mx=0,cd=0,sxz=a[root];
    for(int i=first[root];i;i=nxt[i])
        if(to[i]!=fa) {
            ll temp=dfs(to[i],root)-w[i];
            if(temp>mx) cd=mx,mx=temp;
            else cd=max(cd,temp);
        }
    sxz+=mx;
    ans=max(ans,sxz+cd);
    return sxz;
}

int main() {
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);
    for(int i=1;i<n;i++) {
        scanf("%d%d%I64d",&u,&v,&wi);
        add(u,v,wi);
    }
    dfs(1,1);
    printf("%I64d\n",ans);
    return 0;
}

B - The Fair Nut and Strings

這道題開始時看上去很毒瘤,但是仔細一想會發現這裡面有個樹的結構,具體講不太明白,自己看看程式碼就好了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cmath>
#include<cctype>
using namespace std;

typedef long long ll;
const int Maxn=610000;

int n,k;
char a[Maxn],s[Maxn];

int main() {
    scanf("%d%d",&n,&k);
    scanf("%s",a);
    scanf("%s",s);
    if(k==1||strcmp(a,s)==0) {
        printf("%d\n",n);
        return 0;
    }
    int temp=0;ll sxz=2,ans=0;
    while(a[temp]==s[temp]) temp++;ans+=temp;ans+=2;
    for(int i=temp+1;i<n;i++) {
        sxz<<=1;
        if(a[i]=='b') sxz--;
        if(s[i]=='a') sxz--;
        if(sxz>=k) {
            ans+=1ll*(n-i)*k;
            break;
        }
        ans+=sxz;
    }
    printf("%I64d\n",ans);
    return 0;
}

還是自己太菜啊。。