码迷,mamicode.com
首页 > 其他好文 > 详细

博弈论

时间:2018-02-13 14:05:12      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:algo   open   img   英雄   pre   inf   三国   情况   技术   

1.三国游戏

代码:

技术分享图片
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>


#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 1000
#define MAX 1<<30
#define V vector<int>

using namespace std;

int a[LEN][LEN];

int main(){
//    freopen("D:\\CbWorkspace\\博弈论\\三国游戏.txt","r",stdin);
    int i,j,n;
    I("%d",&n);
    for(i=1;i<=n;i++){
        a[i][i]=-1;
        for(j=i+1;j<=n;j++){
            I("%d",&a[i][j]);
            a[j][i]=a[i][j];
        }
    }
    //对于每一个英雄,进行排序
    for(i=1;i<=n;i++) sort(a[i]+1,a[i]+1+n);
    //在第二小的value中寻找
    int ans=-1;
    for(i=1;i<=n;i++) ans=max(ans,a[i][n-1]);
    printf("%d\n%d\n",1,ans);
    i=0;
    return 0;
}
View Code

排序前:

技术分享图片

排序后:

技术分享图片(排序取第n-1最大值的目的:拿到最大的次大值)

理解:

每个武将对应的所有配对值中最大的值,已经被拆散在这种情况下,场上存在的只剩所有的“次大值”,就是我们拿来排序的那一堆。

这时候小涵拿到了“次大值”中的最大值,肯定是场上最高的分数

1.从武将中找出武将,记下与i的默契值第二大的武将使得i与j的默契值最大(在第二大的列里面最大。这就是排序取n-1的意义)
2.小涵选出,那么计算机只会选出与i默契值最大的武将

此时与p的默契值最大值一定是i。

因此,我们第一次选了i,取得了次大值中的最大值同时拆掉了i的最大值和p的最大值

 


 

博弈论

标签:algo   open   img   英雄   pre   inf   三国   情况   技术   

原文地址:https://www.cnblogs.com/TQCAI/p/8446496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!