Noip2015普及组第四题 Salesman的解题报告
【题意分析】
#include<cstring>
using namespace std;
int n,i,ans,sum,o,j,maxy=0,p;
unsigned long long a[100003],b[100003],maxx=0;
bool bo[100003];
int main()
{
freopen("salesman.in","r",stdin);
freopen("salesman.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<=n;i++) scanf("%d",&b[i]);
p=0;
memset(bo,1,sizeof(bo));
for(i=1;i<=n;i++)
{
int maxo=0;
for(j=1;j<=n;j++)
if(bo[j]==1)
{
if(a[j]>p) p=a[j];
if((p*2+b[j])>maxo) { maxo=p*2+b[j]; o=j;}
}
if(p<a[o]) p=a[o];
bo[o]=0;
if(a[o]>maxy) maxy=a[o];
maxx+=b[o];
printf("%lld\n",maxx+(maxy*2));
}
return 0;
}
第二步:在k的前面找ai的最大值与下标记录,在k的后面找ai+di*2的最大值与下标记录(预处理)
第三步:比较二者选较大值,如果值在k的后面则将k的值改变
第四步:打印当前答案,转(2),循环n-1次。
#include<cstdio>
using namespace std;
int n,i,j,a[100010],b[100010],c[100010],t[100010];
int max,k1,k2,k,i1;
int main()
{
freopen("salesman.in","r",stdin);
freopen("salesman.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
max=k=-1;
for(i=0;i<n;i++)
if((a[i]*2)+b[i]>max)
{
max=(a[i]*2)+b[i];
k=i;
}
printf("%d\n",max);
c[n-1]=n-1;
for(i=n-2;i>=0;i--)
{
if(a[i+1]*2+b[i+1]<a[i]*2+b[i])
c[i]=i;
else c[i]=c[i+1];
}
for(i=0;i<k;i++) t[b[i]]++;
for(i=1;i<n;i++)
{
i1=k1=-1;
if(k<n-1)
{
i1=c[k+1];
k1=(a[i1]-a[k])*2+b[i1];
}
for(j=1000;j>=1;j--)
if(t[j]>0)
{
k2=j;
--t[j];
break;
}
if(k1>k2)
{
max+=k1;
k=i1;
printf("%d\n",max);
}
else
{
max+=k2;
printf("%d\n",max);
}
}
return 0;
}
转载于:https://www.cnblogs.com/ouqingliang/p/9245336.html
Noip2015普及组第四题 Salesman的解题报告相关推荐
- NOIP2015普及组第1题 45 金币 方法三(python3实现)
OpenJudge - 45:金币 信息学奥赛一本通(C++版)在线评测系统 [NOIP2015 普及组] 金币 - 洛谷 n=int( input() )x=1 #x为每天收到的金币数sum=0t= ...
- NOIP2016 普及组第四题 魔法阵magic 题解
题目描述 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法能量. 大魔法师有m个魔法物品,编号分别为1,2,-,m.每个物品具有一个魔法值,我们用Xi表示编号为i的物品的魔法值.每 ...
- NOIP2016普及组第四题——魔法阵
题目描述 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法能量. 大魔法师有m个魔法物品,编号分别为1,2,-,m.每个物品具有一个魔法值,我们用Xi表示编号为i的物品的魔法值.每 ...
- 洛谷 P1070 道路游戏(noip 2009 普及组 第四题)
题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 nn个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 nn个机器人工厂编 ...
- 子矩阵(NOIP2014 普及组第四题)
描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与 列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第 2.4 行和第 2.4.5 列交叉位置 ...
- 2002普及组第四题过河卒
题目描述 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例如 ...
- NOIP普及组第1题(1995-2018)
NOIP1995普及组复赛第1题 https://blog.csdn.net/secret_zz/article/details/76862335 https://blog.csdn.net/WDAJ ...
- noip2004普及组第2题 花生采摘
题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". 鲁宾逊先生和多多都很 ...
- 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏
[题目链接] ybt 1970:[15NOIP普及组]扫雷游戏 OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏 [题目考点] 1 ...
最新文章
- Gartner:人工智能将改变个人设备领域的游戏规则
- PSP 2.0降级至1.5详细教程(转)
- Python网页抓取、模拟登录
- 本地安装Docker
- ElementUI的el-table隐藏id列
- 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
- 详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)
- Mac常用快捷键组合
- 高等数学---不定积分的计算---基本积分法
- [敏捷开发实践] 用Sonarqube评估系统中的 Technical Debt (技术债)
- APARNET阿帕网
- c语言getch常见错误,getch()出错
- 【MQTT】MQTT协议学习
- 7-20 打印九九口诀表(15 分)
- 大疆Tello开发教程
- 微博舆情 之 自然语言处理
- vulnhub靶场{GoldenEye-v1靶场实战}
- 电子邮件营销七大案例
- YOLOv5改进添加解耦头、ASFF
- Matlab函数trainingOptions参数解析