zoukankan      html  css  js  c++  java
  • 洛谷春季 ACM 多校训练第五周

    T127120 Change

    二分图匹配;

    回忆一下二分图匹配算法,一个点被匹配当且仅当   (!match[v]||findpath(match[v]))  ,但你记录时一定要用一个vis来记录,

    不然一定会卡在某一个点出不来。而且每次找增广路都必须清空vis。

    注意:

    1.定义一个vis,否则陷入一个点找增广路出不来,

    2.每次遍历清空vis,否则答案必定不对。

    #include<bits/stdc++.h>
    using namespace std;
    #define pb push_back
    const int N=300+5;
    vector<int>e[N];
    int match[N];
    int n;
    bool vis[N];
    bool findpath(int u){
        for(int i=0;i<e[u].size();i++){
        int v=e[u][i];
        if(!vis[v]){
        vis[v]=1;
        if(!match[v]||findpath(match[v])){//能匹配就匹配 不然换个匹配
        match[v]=u;
        return 1;
        }
        }
        }
        return 0;
    }   
    char s[150];
    int main(){
        memset(vis,0,sizeof vis);
        memset(match,0,sizeof match);
        int k;scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&k);
            char tmp[30]={0};
            for(int j=1;j<=k;j++){
                scanf("%s",s);
                int x=s[0]-'a'+101;
                if(s[0]-'a'+1>n)continue;
                if(!tmp[s[0]-'a'])e[i].pb(x);
                tmp[s[0]-'a']=1;        
        }
        }
        bool flag=1;
        for(int j=1;j<=n;j++){
            memset(vis,0,sizeof vis);
            findpath(j);
        }
        for(int i=1;i<=n;i++)if(!match[i+100])flag=0;
        if(flag)puts("Yes");
        else puts("No");
        // system("pause");
        return 0;
    }
    View Code

    T127124 Flaw

    按题意模拟即可。
    #include<bits/stdc++.h>
    using namespace std;
    #define pb push_back
    typedef long long ll;
    const int N=300+5;
    int main(){
        // cout<<<<endl;    
        // ll a=pow(2,31);
        // cout<<a<<endl;    
        ll n1,n2;
        ll M=pow(2,31);
        char op;
        scanf("a+%lld%c%lld",&n1,&op,&n2);
        if(op=='>')printf("%lld
    ",M-n2-1);
        else printf("lld
    ",M+n2);
    
        // system("pause");
        return 0;
    }
    View Code

    T127125 Gene

    普通dp

    #include<bits/stdc++.h>
    using namespace std;
    #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
    #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
    #define pb push_back
    #define pf push_front
    #define fi first
    #define se second 11
    typedef long long ll;
    typedef unsigned long long ull;
    typedef long double ldb;
    typedef double db;
    const db PI=acos(-1.0);
    const ll INF=0x3f3f3f3f3f3f3f3fLL;
    const int inf=0x3f3f3f3f;//0x7fffffff;
    const double eps=1e-9;
    const ll MOD=1e9+7;
    const int N=5e3+5;
    ll dp[N][N];
    int main(){
        ll n,m,a,b,c;
        scanf("%lld %lld %lld %lld %lld",&n,&m,&a,&b,&c);
        string s1,s2;
        cin>>s1>>s2;
        for(int i=0;i<=n;i++)dp[i][0]=-i*c;
        for(int i=0;i<=m;i++)dp[0][i]=-i*c;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
            if(s1[i-1]==s2[j-1])
            dp[i][j]=dp[i-1][j-1]+a;
            else dp[i][j]=max(max(dp[i-1][j],dp[i][j-1])-c,dp[i-1][j-1]-b);
    
            }
        }
        printf("%lld
    ",dp[n][m]);
        // system("pause");
        return 0;
    }
    View Code
    想的太多,做的太少;
  • 相关阅读:
    解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
    解决:“MediaPlayer error (1, -2147483648)”问题
    EasyUI 验证
    ANT简明教程[转载]
    [转]Android开源框架ImageLoader的完美例子
    [转]Android精品开源项目整理
    【转】25个非常实用的jQuery/CSS3应用组件
    [转]8款实用的jQuery/CSS3最新插件应用
    解决IE6下浮层遮盖select刺穿的问题
    jQuery AJAX中文乱码处理
  • 原文地址:https://www.cnblogs.com/littlerita/p/12590273.html
Copyright © 2011-2022 走看看