题目描述 Description
  小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。 
  在游戏中,小涵和计算机各执一方,组建各自的军队进行对战。游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之间有一个“默契值”,表示若此两位武将作为一对组合作战时,该组合的威力有多大。游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方。
  游戏开始,小涵和计算机要从自由武将中挑选武将组成自己的军队,规则如下:小涵先从自由武将中选出一个加入自己的军队,然后计算机也从自由武将中选出一个加入计算机方的军队。接下来一直按照“小涵→计算机→小涵→……”的顺序选择武将,直到所有的武将被双方均分完。然后,程序自动从双方军队中各挑出一对默契值最高
的武将组合代表自己的军队进行二对二比武,拥有更高默契值的一对武将组合获胜,表示两军交战,拥有获胜武将组合的一方获胜。 
  已知计算机一方选择武将的原则是尽量破坏对手下一步将形成的最强组合,它采取的具体策略如下:任何时刻,轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。 下面举例说明计算机的选将策略,例如,游戏中一共有 6 个武将,他们相互之间的默契值如下表所示:

双方选将过程如下所示: 

小涵想知道,如果计算机在一局游戏中始终坚持上面这个策略,那么自己有没有可能必
胜?如果有,在所有可能的胜利结局中,自己那对用于比武的武将组合的默契值最大是多
少? 
  假设整个游戏过程中,对战双方任何时候均能看到自由武将队中的武将和对方军队的武将。为了简化问题,保证对于不同的武将组合,其默契值均不相同。
 输入输出格式 Input/output
输入格式:
输入文件名为 sanguo.in,共 N 行。 
第一行为一个偶数 N,表示武将的个数。 
第 2 行到第 N 行里,第(i+1)行有(Ni)个非负整数,每两个数之间用一个空格隔
开,表示 i 号武将和 i+1,i+2,……,N 号武将之间的默契值(0≤默契值≤1,000,000,000)。
输出格式:
输出文件 sanguo.out 共 1 或 2 行。 
若对于给定的游戏输入,存在可以让小涵获胜的选将顺序,则输出 1,并另起一行输出
所有获胜的情况中,小涵最终选出的武将组合的最大默契值。 
如果不存在可以让小涵获胜的选将顺序,则输出 0。
 输入输出样例 Sample input/output
样例测试点#1
输入样例:

【输入样例1】
6
5 28 16 29 27
23 3 20 1
8 32 26
33 11
12
【输入样例2】
8
42 24 10 29 27 12 58
31 8 16 26 80 6
25 3 36 11 5
33 20 17 13
15 77 9
4 50
19

输出样例:

【输出样例1】
1
32
【输出样例2】
1
77

说明 description
【数据范围】 
对于 40%的数据有 N≤10。 
对于 70%的数据有 N≤18。 
对于 100%的数据有 N≤500
思路:这题呢,虽然是第四题,其实十分简单呢。。。
运用递推,仔细想一下:
①从题目中可以隐约读出:小涵必胜
②如果要使小涵最大,那么必须要让计算机选最大的,小涵选第二大的,才可以
实现过程:先把这个三角形补成一个正方形阵,然后扫描每一行,把整个矩阵的每行的第二大值存入数组,找出这个数组中的最大的,这个就是正解!
找第二大的过程:
①种情况:最大值和次大值依次迭代掉,最大值变为次大值,然后取新的最大值
②种情况:默契值[i,j]在最大值和次大值之间的情况,迭代次大值即可,最大值不变
最后次大值站首位,输出即可!

代码如下:

 #include <stdio.h>
#include <stdlib.h>
int fun(const void *a,const void *b)//小
{
return *(int*)b-*(int*)a;
}
int main() {
int n,a[][];
int i,j,flag,flag2,flag3;
scanf("%d",&n);
for(i=;i<=n;i++)//浣??(?)
{
for(j=i+;j<=n;j++)
{
scanf("%d",&a[i][j]);
a[j][i]=a[i][j];
}
}
flag=a[][];//
flag2=a[][];//??
flag3=;//???
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(a[i][j]>flag)
{
flag2=flag;
flag=a[i][j];
}
else if(a[i][j]>flag2)
{
flag2=a[i][j];//?
}
}
if(flag2>flag3) flag3=flag2;
flag=;
flag2=;
}
printf("1\n%d\n",flag3);
return ;
}

NOIP2010-普及组复赛-第四题-三国游戏的更多相关文章

  1. NOIP2014-普及组复赛-第四题-子矩阵

    题目描述 Description 给出如下定义: 1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行 ...

  2. NOIP2018普及组复赛游记

    2018年11月10日,NOIP2018普及组复赛. 这是我初中阶段最后一次复赛了. 和往常一样,我们在预定的早上7点,没有出发. 10分钟之后,人终于到齐了,于是出发了,一路无话. 到了南航,合照三 ...

  3. NOIP2016普及组复赛解题报告

    提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...

  4. NOIP2005-普及组复赛-第三题-采药

    题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山 ...

  5. noip普及组考纲+样题合集——初级篇(OIer必看)

    很明显我是想发提高组合集的.普及组考纲……用发么. 当然如果你想看的话也可以,就一点点: 递归.排序…… 很明显上面那都不是重点.普及组只要掌握搜索.二分.单调队列.数学.随机化等等,一等奖没问题的, ...

  6. 2010年NOIP普及组复赛题解

    题目及涉及的算法: 数字统计:入门题: 接水问题:基础模拟题: 导弹拦截:动态规划.贪心: 三国游戏:贪心.博弈论. 数字统计 题目链接:洛谷 P1179 这道题目是一道基础题. 我们只需要开一个变量 ...

  7. NOIP2010普及组题解 -SilverN

    三国游戏 题目内容不放了 由于电脑总是会拆掉最大的组合,所以玩家最多只能得到数值第二大的组合 那么找出第二大的组合就行了 #include<iostream> #include<cs ...

  8. [NOIP2010] 普及组

    三国游戏 题目内容不放了 由于电脑总是会拆掉最大的组合,所以玩家最多只能得到数值第二大的组合 那么找出第二大的组合就行了 #include<iostream> #include<cs ...

  9. NOIP2010普及组T4 三国游戏——S.B.S.

    题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...

随机推荐

  1. 照片处理软件(iSee图片专家) 3.930 中文免费版

    软件名称: 照片处理软件(iSee图片专家) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 13.5MB 图片预览: 软件简介: iSee图片专家,免费一 ...

  2. C#编程之“串口通讯多次接收”

    摘要: 主要记录了再C#的串口开发时遇到的问题,以便后续遇到相同问题再重复砍树造轮子. 1.问题场景 板卡和PC间通过UART进行数据通讯,由PC给板卡发送控制命令,板卡返回相应的数据. 2.遇到的问 ...

  3. c#语言简介

    语言的历史:c,c++,java,c#, c语言最早,c++语言复杂,而java把其中难的一部分去掉,也成为c--,而c#早期类似java. c#简单高效,并且与web结合. C#的运行环境是.net ...

  4. BFS - leetcode [宽度优先遍历]

    127. Word Ladder int size = q.size(); for(int k = 0; k < size; k++){//for 次数 找到一个erase一个 q里面加入的是所 ...

  5. tomcat7或8如何修改浏览器标题上的ICON小图标

    替换tomcat根目录/webapps/ROOT下的favicon.ico文件,之后重启了服务器,可是还是显示那只猫的图标. 如果不能显示,请清除浏览器的缓存

  6. LeetCode 395. Longest Substring with At Least K Repeating Characters C#

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  7. A标签-一个按钮样式

    该文件引用jquery-1.11.3.js库 <!doctype html> <html> <head> <meta charset="UTF-8& ...

  8. uiwebview 加载html时字体变小 加载前或加载后改变字体大小

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #6122ae } p.p2 { margin: 0.0px 0. ...

  9. github 上传文件

    1.删除项目 2.  包管理器初始化  npm  init name  必填项   后面可一直回车 最后选择yes 3.建立本地仓储 在git bash 中输入命令  git  init 4. 添加 ...

  10. loadrunner破解方法--lm70.dll,mlr5lprg.dll下载地址

    一.由于在压力测试执行中,出现一个-10803的错误 ,为解决这个错误,重新设置的环境变量,在次执行错误,这个问题解决了,但另外一个问题出来了,LR,打开脚本编辑器老提示找不到TEMP目录,当时没有想 ...