推销员

题目描述

这里写图片描述

输入

这里写图片描述

输出

这里写图片描述

样例输入

Sample Input1:

5
1 2 3 4 5
1 2 3 4 5

Sample Input2:

5
1 2 2 4 5
5 4 3 4 1

样例输出

Sample Output1:

15
19
22
24
25

Sample Output2:

12
17
21
24
27

数据范围限制

这里写图片描述

提示

这里写图片描述
这里写图片描述

思路:

先打个暴力(60分)

然后就会发现,如果当前已经走到最后一个了,那么接下来的推销顺序就已经确定了

我们可以快排一下,然后输出

这虽然是水法,但却很有意义……
(正解是线段树……某位大犇考场AC……)

代码:

var
        n,i,j,k,x,y,z,s,ls:longint;
        a:array[0..100001,1..2]of longint;
        b:array[0..100001]of boolean;
procedure qs(l,r:longint);
var
        i,j,x:longint;
        y:array[1..2]of longint;
begin
        i:=l;
        j:=r;
        x:=a[(l+r) div 2,1];
        repeat
                while a[i,1]<x do inc(i);
                while x<a[j,1] do dec(j);
                if not(i>j) then
                begin
                        y:=a[i];
                        a[i]:=a[j];
                        a[j]:=y;
                        inc(i);
                        dec(j);
                end;
        until i>j;
        if l<j then qs(l,j);
        if i<r then qs(i,r);
end;
procedure qs1(l,r:longint);
var
        i,j,x:longint;
        y:array[1..2]of longint;
        c:boolean;
begin
        i:=l;
        j:=r;
        x:=a[(l+r) div 2,2];
        repeat
                while a[i,2]>x do inc(i);
                while x>a[j,2] do dec(j);
                if not(i>j) then
                begin
                        y:=a[i];
                        a[i]:=a[j];
                        a[j]:=y;
                        c:=b[i];
                        b[i]:=b[j];
                        b[j]:=c;
                        inc(i);
                        dec(j);
                end;
        until i>j;
        if l<j then qs1(l,j);
        if i<r then qs1(i,r);
end;
procedure qs2(l,r:longint);
var
        i,j,x:longint;
        y:array[1..2]of longint;
        c:boolean;
begin
        i:=l;
        j:=r;
        x:=a[(l+r) div 2,2];
        repeat
                while a[i,2]<x do inc(i);
                while x<a[j,2] do dec(j);
                if not(i>j) then
                begin
                        y:=a[i];
                        a[i]:=a[j];
                        a[j]:=y;
                        c:=b[i];
                        b[i]:=b[j];
                        b[j]:=c;
                        inc(i);
                        dec(j);
                end;
        until i>j;
        if l<j then qs2(l,j);
        if i<r then qs2(i,r);
end;
begin
        assign(input,'salesman.in');
        reset(input);
        assign(output,'salesman.out');
        rewrite(output);
        readln(n);
        for i:=1 to n do
        read(a[i,1]);
        for i:=1 to n do
        read(a[i,2]);
        qs(1,n);
        for i:=1 to n do
        if ls<>a[i,1] then
        begin
                if i<>1 then qs2(x,i-1);
                x:=i;
                ls:=a[i,1];
        end;
        qs2(x,n);
        ls:=0;
        x:=0;
        for i:=1 to n do
        begin
                for j:=1 to n do
                if b[j]=false then
                begin
                        z:=0;
                        if ls<j then z:=(a[j,1]-a[ls,1])*2;
                        inc(z,a[j,2]);
                        if z>=x then
                        begin
                                y:=j;
                                x:=z;
                        end;
                end;
                b[y]:=true;
                if ls<y then ls:=y;
                inc(s,x);
                writeln(s);
                if ls=n then
                begin
                        qs1(1,n);
                        for j:=1 to n do
                        if b[j]=false then
                        begin
                                inc(s,a[j,2]);
                                writeln(s);
                        end;
                        halt;
                end;
                x:=0;
        end;
end.
论坛内核由清浊心的死党隋变提供。在征得其同意下将论坛进行伪装发布。<br> <br> 这个论坛伪装成全球第一原创中文作品网的社区论坛--榕树下 <br> 清浊心伪装版主要修改地方:<br> 对整个论坛进行最重要得伪装,脚本欺骗。需要在服务器做 ISAPI映射 整个论坛使用asp脚本,现将asp 后缀改为 rs后缀(榕树的论坛后缀就是.rs 真正的脚本是cgi) 发布的压缩包内附带 如何做ISAPI映射的教程。另外对快捷链也进行了修改 短信也进行了引用。唯一欠缺的就是缺少一个站内搜索。<br> <br> 另外需要asp版本的也可联系我, sdlovelc@yahoo.com.cn 或者自己吧 rs 后缀 改成 asp 也行 相应页面调用语句也要改哦,表忘了.哈哈哈哈 ^_^<br> <br> 初始管理员: qingZsin (我的英文名^_^)<br> 密码: www.daima99.com 原版设置: 首页文件为:index.rs 数据库文件为:bbs.rs 首页友情链接与快捷链修改文件为:link.rs 数据库名称及其网站配置修改文件为:conn.rs 建议:修改数据库文件名为一个无规则名,如:dahfajdhsa.rs 功能介绍: 1.采用积分制,每到一定分数就会自动升级称号; 2.注册用户密码进行了MD5加密,使用户使用更放心; 3.版主具有的功能有:帖子置顶,开关帖子,删除关闭,删除回复; 4.总版主另有功能:添加、解雇副版主,删除用户,给用户加分,封IP等; 5.留言主题总数超过5000即100页后可自动删除最早的帖子(自己可以设置); ——还有其他的功能自己慢慢在使用中体会吧*^_^* 数据库项目: 表closeip 字段id(自动编号) 字段ip(文本) 表bbs 字段id(自动编号) 字段subject(文本) 字段content(备注) 字段writer(文本) 字段date(文本) 字段hits(数字) 字段byte(数字) 字段re(数字) 字段top(数字) 字段close(数字) 字段ip(文本) 字段last(文本) 表admin 字段id(自动编号) 字段name(文本) 表rebbs 字段id(自动编号) 字段subject(文本) 字段content(备注) 字段writer(文本) 字段date(文本) 字段bid(数字) 字段ip(文本) 表user 字段id(自动编号) 字段username(文本) 字段password(文本) 字段count(数字) 字段lv(数字) 字段regtime(文本) 字段regip(文本) 字段signature(备注)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值