洛谷——P2587 [ZJOI2008]泡泡堂

两队人马进行比赛, 战斗力值各有差异, 如果一方获胜得两分,战平各得一分,失败不得分,求可取得的最佳战绩与最差战绩。

思路:1)最强的打得过最强的就直接上;

2)最弱的打得过最弱的直接上;

3)我方最弱的打不过对方最弱的,送人头消耗对方最强的兵。这样我方就有效保留了一位战力强的兵。为什么是有效,因为已经打不过了,打最弱是挂,打最强也是挂呀,弱者也要死得其所。。。如果此时是打平呢?分析下得失,如果送人头消耗了最强的兵,则我方最强的兵至少对战最弱的兵可以获胜,这就更有优势;比如1,4与1,4;打平不如打消耗。

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 const int MAX=100001;
 5 int fight(int a[],int b[],int n,bool high);
 6
 7 int main()
 8 {
 9     int a[MAX],b[MAX];
10     int n;
11     cin>>n;
12     for(int i=0;i<n;i++)    cin>>a[i];
13     for(int i=0;i<n;i++)    cin>>b[i];
14     sort(a,a+n);
15     sort(b,b+n);
16     cout<<fight(a,b,n,true)<<" "<<fight(b,a,n,false)<<endl;     //反复提交n次发现不要求分行,mmm
17
18     return 0;
19 }
20
21 int fight(int a[],int b[],int n,bool high)
22 {
23     int iLeft,iRight,jLeft,jRight,win;
24     iLeft=jLeft=0;
25     win=0;
26     iRight=jRight=n-1;
27     while(iLeft<=iRight&&jLeft<=jRight)
28     {
29         if(a[iRight]>b[jRight])
30         {
31             win+=2;
32             iRight--;
33             jRight--;
34         }
35         else if(a[iLeft]>b[jLeft])
36         {
37             win+=2;
38             iLeft++;
39             jLeft++;
40         }
41         else if(a[iLeft]==b[jRight])        //相等则说明剩下的数都是相等的,即打平
42         {
43             win+=(iRight-iLeft+1);
44             break;
45         }
46         else
47         {
48             iLeft++;
49             jRight--;
50         }
51     }
52     if(high)    return win;        //如果high为真,求a队最高分
53     else    return (2*n-win);    //如果high为假,求a队最低分,此时b队得分最高,总分为2*n
54 }

提交了n遍就是不过,出现Wrong Answer Too short on line 1,后来对比别人的才发现输出时换行导致与要求格式不同。

小结:

1、提交前先上IDE确认能否通过;

2、不要盲目提交,分析原因 ( 比对结果格式/题目要求,分析对比他人结果);

3、方法总比问题多,放空思绪, 歇会再来。

转载于:https://www.cnblogs.com/maxonzou/p/10629020.html

每日一练之贪心算法(P2587)相关推荐

  1. 每日一题:贪心算法解救生艇问题

    问题描述: 来源:LeetCode第881题 难度:中等 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时 ...

  2. Python|每日一练|素数对|优化算法|素数|素数对:找出素数对

    找出素数对 任意输入一个大于10的偶数,编程找出所有和等于该偶数的素数对 以下程序实现了这一功能,请你填补空白处内容: h = 0 def a(h): x = 0 for j in range(2, ...

  3. 每日一练———C语言算法题--平年闰年问题

    C语言算法题--平年闰年问题 概念 一.平年.闰年的判断 二.给出年.月.日,判断日期是否存在 概念    平年与闰年!!!(闰年比平年多一天,闰年二月29天,平年28天)    1. 普通闰年: 能 ...

  4. “365算法每日学计划”:03打卡-贪心算法

    自从开始做公众号开始,就一直在思考,怎么把算法的训练做好,因为思海同学在算法这方面的掌握确实还不够.因此,我现在想做一个"365算法每日学计划". "计划"的主 ...

  5. 每日一小练——高速Fibonacci数算法

    上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  6. java每日打卡_“365算法每日学计划”:03打卡-贪心算法

    自从开始做公众号开始,就一直在思考,怎么把算法的训练做好,因为思海同学在算法这方面的掌握确实还不够.因此,我现在想做一个"365算法每日学计划"."计划"的主要 ...

  7. 数据结构与算法——每日一练(4月)

    文章目录 每日一练 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 ...

  8. 数据结构与算法——每日一练(12月)

    文章目录 每日一练 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 12.10 12.11 12.12 12.13 12.14 12.15 12.16 12. ...

  9. 【软考备战·希赛网每日一练】2023年5月5日

    文章目录 一.今日成绩 二.错题总结 第一题 三.知识查缺 题目及解析来源:2023年05月05日软件设计师每日一练 一.今日成绩 二.错题总结 第一题 解析: 有返回消息的就是同步消息:不需要等待返 ...

最新文章

  1. 利用Spring的aop原理实现系统级日志管理 附带源码
  2. (多图) 基于并行流水线结构的可重配FIR滤波器的FPGA实现
  3. Cisco交换机端口安全介绍
  4. java sunjce,无法初始化类javax.crypto.SunJCE_b
  5. linux进程如何挂起自己,Linux Server HTTP进程每天挂起服务器
  6. python排序-堆排序
  7. DELPHI存储过程调用
  8. java线程池饱和策略_干货:Java几种线程池的分析和使用。
  9. 【存储测试】vdbench存储性能测试工具
  10. STM32入门开发:编写XPT2046电阻触摸屏驱动(模拟SPI)
  11. 三相PWM整流器Simulink仿真模型,包含SSRF-SPLL锁相环、SPWM调制环节以及电压电流双闭环PI控制器。 10kHz 110AC-350DC。
  12. 微信小程序tab切换,可滑动切换,导航栏跟随页面滚动
  13. Centos7之Hadoop完全分布式集群搭建和配置
  14. MicroPython之ADS1115+平滑滤波NTC温度采集
  15. python精确有理数实验_有理数类实验报告
  16. 关于宁盾平台Spring框架RCE 0day漏洞修复的公告
  17. 图形编辑器:对齐功能的实现
  18. 北京工程测量乙级资质申请流程
  19. Flink on yarn集群HA配置
  20. 大公司还是大城市该怎么选择?

热门文章

  1. Java常量字符串String理解
  2. Caliburn笔记-基本Command(wpf框架)
  3. 107.网络服务质量包括哪些(QoS)
  4. 使用 TensorFlow 的公司
  5. 从0到50家AI独角兽,中国人工智能凭什么让世界刮目相看?
  6. HashMap 的使用
  7. 010_SpringBoot视图层技术thymeleaf-变量输出与字符串操作
  8. 安徽工业大学计算机考研调剂,安徽工业大学2019年考研预调剂公告
  9. android 模拟飞行,安卓版模拟飞行 X Plane 9试玩
  10. Hyperledger Indy 理解