【水题】NOIP201504推销员

时间:2021-08-04 21:31:32

NOIP201504推销员

【问题描述】  

阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有 N 家住户,第 i 家住户到入口的距离为 Si 米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的 X 家住户推销产品,然后再原路走出去。阿明每走 1 米就会积累 1 点疲劳值,向第 i 家住户推销产品会积累 Ai 点疲劳值。阿明是工作狂,他想知道,对于不同的 X,在不走多余的路的前提下,他最多可以积累多少点疲劳值。

【输入格式】  

第一行有一个正整数 N,表示街住户数量,接下来一行有 N 个正整数,其中第 i 个整数 Si 表示第 i 家住户到入口距离保证 S1<=S2<=S3....<10 的 8 次方。接下来一行有 N 个整数,其中第 i 个整数 Ai 表示向第 i 个住户推销产品会积累疲劳值。保证 Ai<=10 的 3 次方。

【输出格式】  

输出 N 行,每行一个正整数,其中第 i 行整数表示当 x=i,阿明积累的疲劳值。

【输入样例】    

5
1 2 3 4 5
1 2 3 4 5

【输出样例】

15
19
22
24
25

【数据规模与约定】

数据范围:1<= N <= 100000。

【试题分析】

不会做?会暴力吗?普通来说60分做法,100分其实一点也没问题!设一个结构体每次按优先级排序就可以了,想不到学校OJ都有那么多人抄的集训队爷的代码……

NOIP的数据水,在洛谷等oj上过了官方样例,但是没有过老师加上的样例……

不过放心,这是改了在学校OJ上AC的代码……

并木有线段树等等高深算法……

暴力搞定一切……

【代码】

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
inline long long read()
{
long long x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
struct data
{
long long num;//num为推销第i家推销花费的精力
long long k;//k为第i家距镇口的距离
long long f;//f为只对第i家进行推销的花费经历
}a[100001];
bool cmp(data a,data b)
{
return a.k<b.k;
}
bool cmp1(data a,data b)
{
return a.f>b.f;
}
bool cmp2(data a,data b)
{
return a.num>b.num;
}
long long n,trueto[100001];//true数组记录是否选择过,其实完全可以不要
int main()
{
n=read();
for(long long i=1;i<=n;i++) a[i].k=read();
for(long long i=1;i<=n;i++) a[i].num=read();
sort(a+1,a+n+1,cmp);//先按距村口远近排序
long long sum=0;
for(long long i=1;i<=n;i++) a[i].f=(a[i].k*2)+a[i].num;//计算f
sort(a+1,a+n+1,cmp1);//对f进行排序
long long ans=a[1].f;//第一个要最大一定要选单独推销精力最大的一家
long long temp=a[1].k,tmp2,temp2=a[1].num;//记录,方便后面查找
cout<<ans<<endl;//第一个输出
sort(a+1,a+n+1,cmp2);//按num排序,因为当选择了这家以后比它距村口近的只需要加上推销的经历
for(int i=1;i<=n;i++) if(a[i].k==temp&&ans==a[i].f&&temp2==a[i].num) {trueto[i]=1;tmp2=i;break;}//记录我们原先找到f的地方进行标记
for(long long i=1;i<=n;i++)
{
if(trueto[i]) continue;//其实只有上面的f跳过
long long maxn=a[i].num;
long long tmp=i;
trueto[tmp]=1;
if(a[tmp].k<=temp)ans+=a[tmp].num;//如果距村口比最大的距离短那么只需要加上这个精力
else ans-=(a[tmp2].k*2),tmp2=tmp,temp=a[tmp].k,ans+=a[tmp].f;//要去掉原先最大的的路程计算,然后要加上这一次的
printf("%lld\n",ans);//输出
}
}

【水题】NOIP201504推销员的更多相关文章

  1. HDOJ 2317&period; Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  3. ytu 1050&colon;写一个函数,使给定的一个二维数组(3&&num;215&semi;3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  4. &lbrack;poj2247&rsqb; Humble Numbers &lpar;DP水题&rpar;

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  5. gdutcode 1195&colon; 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,

    1195: 相信我这是水题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 821  Solved: 219 Description GDUT中有个风云人 ...

  6. BZOJ 1303 CQOI2009 中位数图 水题

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2340  Solved: 1464[Submit][Statu ...

  7. 第十一届&OpenCurlyDoubleQuote;蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小&quest; 字符串水题

    B - 大还是小? Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Description 输入两个实数,判断第一个数大 ...

  8. ACM水题

    ACM小白...非常费劲儿的学习中,我觉得目前我能做出来的都可以划分在水题的范围中...不断做,不断总结,随时更新 POJ: 1004 Financial Management 求平均值 杭电OJ: ...

  9. CF451C Predict Outcome of the Game 水题

    Codeforces Round #258 (Div. 2) Predict Outcome of the Game C. Predict Outcome of the Game time limit ...

随机推荐

  1. PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展?

    在虚拟机的CentOS5.5中,一键安装了PHP运行环境,但发现并没有 soap 扩展,而近期项目用需要用到 webservice. 上述的一键安装(lamp0.4),其实是源码编译安装,PHP配置文 ...

  2. 20个人艰不拆的事实:知道真相的我眼泪掉下来 T&period;T

    20个人艰不拆的事实:知道真相的我眼泪掉下来 T.T 原文链接http://www.u148.net/article/113612.html 来源:ruoning WuMo是丹麦画家Mikael Wu ...

  3. Codeforces Round &num;381 &lpar;Div&period; 2&rpar; 复习倍增&sol;&sol;

    刷了这套题  感触良多 我想 感觉上的差一点就是差很多吧 . 每次都差一点  就是差很多了... 不能气馁..要更加努力去填补那一点点.  老天不是在造物弄人,而是希望你用更好的自己去迎接自己. A. ...

  4. sprint演示Scrum 项目7&period;0

    1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉很好. 其他人可以了解你的团队在做些什么,并得到重要反馈. 演示是一种社会活动,不同的团队可以在这里相互交流,讨论各自的工作.这很有 ...

  5. ASP&period;NET ViewState详解

    ASP.NET ViewState详解[转载] 作者:Infinities Loop 概述 ViewState是一个被误解很深的动物了.我希望通过此文章来澄清人们对ViewState的一些错误认识.为 ...

  6. CPU的概念

    1.CPU的运算都是以纳秒为单位的,内存相比要慢百倍,硬盘要慢百万倍. 2.CPU的主要工作就是运行指令,指令全在内存里,第一条指令地址为0xFFFFFF0处(BIOS发出的跳转指令). 3.CPU工 ...

  7. Inno setup 操作注册表操作参数详解

    原文地址:http://www.dayanzai.me/inno-setup-tut.html [Registry] 段这个可选段用来定义一些你想用安装程序在用户系统中创建.修改或删除的注册表键/值. ...

  8. FastReport动态绑定只显示一条数据。

    产生这个问题的原因是因为需要把Band绑定DataSource.有两种方法 (1)DataBand data = report1.Report.FindObject("Data1" ...

  9. Java Editplus编译环境配置

    java jdk 安装win10 配置:此电脑--属性--高级系统设置--环境变量--系统变量-->新建--变量名--JAVA_HOME 变量值--浏览目录--jdk安装路径jdk...--&g ...

  10. Tomcat专题

    1. 修改端口 tomcat-7.0.70/conf/server.xml <Connector port=" protocol="HTTP/1.1"