每日一练之贪心算法(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算法
(一) 这个算法是基于一个概率来对探索和利用进行折中:每次尝试时,以概率进行探索,即以均匀概率随机选取一个摇臂,以的概率进行利用,即以这个概率选择当前平均奖赏最高的摇臂(如有多个,则随机选取). 其中 ...
随机推荐
- transmission跳过文件校验功能实现
贴吧链接:https://tieba.baidu.com/p/4839039900 GitHub:https://github.com/superlukia/transmission-2.92_ski ...
- Centos7 + Python3.6 + Django + virtualenv + gunicorn + supervisor 环境配置详解
跟着网上的教程走发现行不通阿!好多都是写个大概,而且每人的环境都是有些许差异的,比如说权限问题阿,等等都会造成安装的失败 说明:本教程在你已经拥有Centos7系统,已经安装好nginx服务器,已经安 ...
- Linux ①
目录 一.计算机简单认识 二.linux初始 三.安装虚拟机 四.安装Linux系统 五. 使用xshell 6 进行远程控制 六.linux文档与目录结构 七.常用命令 一.计算机简单认识 1.服务 ...
- [JAVA]字节数组流
import java.io.*; public class ByteArrayStream { public static void main(String[] args) { byte[] dat ...
- RN 时间戳
let curTime = Date.now(); 获取到当前时间 curTime: 1555120690696 是指从1970.1.1到现在的毫秒(ms)数 cxk() { //之前时间 let p ...
- CentOS7.4下部署hadoop3.1.1
CentOS7.4下部署hadoop3.1.1 契机 由于工作原因要部署hadoop的集群,习惯使用最新的稳定版本2018年的时候由于时间紧破部署了2.7.2版本,最新由于又要部署有研究了一下3.x的 ...
- Spring事件通知机制
在上图中,调用 getApplicationEventMulticaster()方法,该方法返回的ApplicationEventMulticaster类型的对象applicationEventMul ...
- [练习-1] android studio 从Activity 进入 Fragment
从activity 进入到 fragment,使用系统自带的ListFragment 1,新建empty activity 2,新建Fragment(List) 3,activity_main.xml ...
- idea 优先引用项目代码,而非jar包
1.现有项目,和jar包源码在同一层目录 2.idea直接打开ccccc,右键a,b两个文件中的pom.xml加入maven project,如下: 执行1,2 步骤,在b中引入a,刚引入a在最下方, ...
- php 操作mysql
//由于前期数据库字段设计问题,没太注意,字段内容,后台python采集数据直接插入,没做处理,数据又不想丢掉,只能对网站数据库字段内容进行处理,100万条数据,调试了半天,很多思路都试过,各种坑,弄 ...