我是靠谱客的博主 震动蜻蜓,最近开发中收集的这篇文章主要介绍2016 青岛区域赛补题 B(模拟), G(费用流),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

B: 就模拟下。
感觉自己不太熟悉这种代码。

#include<bits/stdc++.h>
using namespace std;
#define N 35
int b[N],a[N];
//int r[6][8]{
    //1,2,22,24,12,11,19,17,
    //3,4,21,23,10,9,19,17,
    //2,4,16,14,12,10,8,6,
    //1,3,5,7,9,11,13,15,
    //5,6,21,22,14,13,17,18,
    //7,8,23,24,14,13,19,20,
//};
int r[6][8]={
        16,17,0,1,20,21,11,10,
        18,19,2,3,22,23,9,8,
        0,2,4,6,8,10,12,14,
        1,3,5,7,9,11,13,15,
        4,5,22,20,15,14,17,19,
        6,7,23,21,13,12,16,18
    };
bool ok(){
    for(int i=0;i<6;++i){
        int t=b[i*4];
        for(int j=1;j<4;++j){
            if(b[i*4+j]!=t)return 0;
        }
    }
    return 1;
}
bool solve(){
    if(ok())return 1;
    for(int i=0;i<6;++i){
        for(int j=0;j<24;++j)b[j]=a[j];
        for(int j=0;j<8;++j){
            b[r[i][j]]=a[r[i][(j+2)%8]];
        }
        if(ok())return 1;
    }
    for(int i=0;i<6;++i){
        for(int j=0;j<24;++j)b[j]=a[j];
        for(int j=0;j<8;++j){
            b[r[i][j]]=a[r[i][(j-2+8)%8]];
        }
        if(ok())return 1;
    }
    return 0;
}
int main(){
    int T;scanf("%d",&T);
    //for(int i=0;i<6;++i){
        //for(int j=0;j<8;++j){
            //r[i][j]--;
        //}
    //}
    while(T--){
        for(int i=0;i<24;++i){
            scanf("%d",&a[i]);
            b[i]=a[i];
        }
        if(solve())puts("YES");
        else puts("NO");
    }
}

G:
这个去了对数之后的正负号转不过来。。。
参考:http://blog.csdn.net/xlzhang223/article/details/53260587


int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&m);
        init(n+50);
        for(int i=1;i<=n;i++){
            scanf("%d%d",&a[i],&b[i]);
            c[i]=a[i]-b[i];
        }
        int u,v,f;
        double p;
        for(int i=0;i<m;i++){
            scanf("%d%d%d%lf",&u,&v,&f,&p);
            p=-log2(1.0-p);
            if(f>0) addedge(u,v,1,0.0);
            if(f-1>0) addedge(u,v,f-1,p);
        }
        for(int i=1;i<=n;i++){
            if(c[i]>0) addedge(0,i,c[i],0);
            else if(c[i]<0) addedge(i,n+1,-c[i],0);
        }
        double ans=0;
        minCostMaxflow(0,n+1,ans);
        ans=pow(2,-ans);
        printf("%.2fn",1.0-ans);
    }
    return 0;
}

最后

以上就是震动蜻蜓为你收集整理的2016 青岛区域赛补题 B(模拟), G(费用流)的全部内容,希望文章能够帮你解决2016 青岛区域赛补题 B(模拟), G(费用流)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部