每日一练之贪心算法(P2587)
洛谷——P2587 [ZJOI2008]泡泡堂
两队人马进行比赛, 战斗力值各有差异, 如果一方获胜得两分,战平各得一分,失败不得分,求可取得的最佳战绩与最差战绩。
思路:1)最强的打得过最强的就直接上;
2)最弱的打得过最弱的直接上;
3)我方最弱的打不过对方最弱的,送人头消耗对方最强的兵。这样我方就有效保留了一位战力强的兵。为什么是有效,因为已经打不过了,打最弱是挂,打最强也是挂呀,弱者也要死得其所。。。如果此时是打平呢?分析下得失,如果送人头消耗了最强的兵,则我方最强的兵至少对战最弱的兵可以获胜,这就更有优势;比如1,4与1,4;打平不如打消耗。
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX=;
int fight(int a[],int b[],int n,bool high); int main()
{
int a[MAX],b[MAX];
int n;
cin>>n;
for(int i=;i<n;i++) cin>>a[i];
for(int i=;i<n;i++) cin>>b[i];
sort(a,a+n);
sort(b,b+n);
cout<<fight(a,b,n,true)<<" "<<fight(b,a,n,false)<<endl; //反复提交n次发现不要求分行,mmm return ;
} int fight(int a[],int b[],int n,bool high)
{
int iLeft,iRight,jLeft,jRight,win;
iLeft=jLeft=;
win=;
iRight=jRight=n-;
while(iLeft<=iRight&&jLeft<=jRight)
{
if(a[iRight]>b[jRight])
{
win+=;
iRight--;
jRight--;
}
else if(a[iLeft]>b[jLeft])
{
win+=;
iLeft++;
jLeft++;
}
else if(a[iLeft]==b[jRight]) //相等则说明剩下的数都是相等的,即打平
{
win+=(iRight-iLeft+);
break;
}
else
{
iLeft++;
jRight--;
}
}
if(high) return win; //如果high为真,求a队最高分
else return (*n-win); //如果high为假,求a队最低分,此时b队得分最高,总分为2*n
}
提交了n遍就是不过,出现Wrong Answer Too short on line 1,后来对比别人的才发现输出时换行导致与要求格式不同。
小结:
1、提交前先上IDE确认能否通过;
2、不要盲目提交,分析原因 ( 比对结果格式/题目要求,分析对比他人结果);
3、方法总比问题多,放空思绪, 歇会再来。
每日一练之贪心算法(P2587)的更多相关文章
- 每日一练之排序算法(P1097 统计数字)
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5×10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. ...
- 每日一小练——高速Fibonacci数算法
上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...
- 每日一小练——Eratosthenes 筛选法
上得厅堂.下得厨房,写得代码.翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:Eratosthenes筛选法 内容: 求质数是一个非常普遍的问题,通常不外乎用数去除.除到不尽时,给定的数就是质数.可是 ...
- 贪心算法(Greedy Algorithm)
参考: 五大常用算法之三:贪心算法 算法系列:贪心算法 贪心算法详解 从零开始学贪心算法 一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以 ...
- 算法导论----贪心算法,删除k个数,使剩下的数字最小
先贴问题: 1个n位正整数a,删去其中的k位,得到一个新的正整数b,设计一个贪心算法,对给定的a和k得到最小的b: 一.我的想法:先看例子:a=5476579228:去掉4位,则位数n=10,k=4, ...
- LEETCODE —— Best Time to Buy and Sell Stock II [贪心算法]
Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...
- ACM_ICPC hdu-2111(简单贪心算法)
一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #inclu ...
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- 增强学习贪心算法与Softmax算法
(一) 这个算法是基于一个概率来对探索和利用进行折中:每次尝试时,以概率进行探索,即以均匀概率随机选取一个摇臂,以的概率进行利用,即以这个概率选择当前平均奖赏最高的摇臂(如有多个,则随机选取). 其中 ...
随机推荐
- JavaScript判断该对象是否为数组
typeof 用来检测数据类型,Function, String, Number, Undefined都可以使用typeof来判断. function test(){} console.log(typ ...
- c# BackgroundWorker初试
/* * Created by SharpDevelop. * User: Administrator * Date: 2017/7/31 * Time: 16:18 * * To change th ...
- HTTPD三种工作模型
HTTPD三种工作模型 MPM是apache的多道处理模块,用于定义apache对客户端请求的处理方式.在linux中apache常用的三种MPM模型分别是prefork.worker和event. ...
- 搞懂iobuffer就得先学习bytebuffer
ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要比单纯看资料效果来的好,所以干脆写个详细点的文章来记录一下. ...
- 一位工作8年的java软件工程师该如何发展
从08年到现在已工作8年多了,但是对职业生涯的规划还没有很清晰的定义,可能之前做的工作太杂太广,回想第一家公司从事了6年有得也有失,虽然涉及到开发.设计.管理等岗位,但从技术上总结并没有很擅长的技术, ...
- error: Cannot find OpenSSL's <evp.h> Mac
问题 mac安装php需要openssl ./configure –with-openssl 报错 error: Cannot find OpenSSL’s 解决 brew install opens ...
- System.DllNotFoundException: Unable to load DLL 'libgdiplus': The specified module could not be found.
netcore 使用System.Drawing 出现如下错误: Unhandled Exception: System.TypeInitializationException: The type i ...
- ORACLE 数据库使用正则表达式重新计算指定位置的数字为新的数字
昨天工作中遇到这个问题: 有一个这样的字符串expression变量,里面可能存储的值类似于以下[Index_CivilWork,0]*(1+[Y10814,1])/[Y10674,1] [300,1 ...
- Presto 性能优化点
1.指定需要返回的字段 [GOOD]: SELECT time,user,host FROM tbl[BAD]: SELECT * FROM tbl 2.合理设置分区字段 当过滤条件作用在分区字段上面 ...
- 【总结】Java异常分类
链接:https://www.nowcoder.com/questionTerminal/3ded1983c85c4ae197e005bd31777bc7来源:牛客网 Throwable是所有异常的根 ...