3399: [Usaco2009 Mar]Sand Castle城堡
时间:2022-05-08
本文章向大家介绍3399: [Usaco2009 Mar]Sand Castle城堡,主要内容包括3399: [Usaco2009 Mar]Sand Castle城堡、Description、Input、Output、Sample Input、Sample Output、HINT、Source、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
3399: [Usaco2009 Mar]Sand Castle城堡
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 37 Solved: 32
Description
约翰用沙子建了一座城堡.正如所有城堡的城墙,这城墙也有许多枪眼,两个相邻枪眼中间那部分叫作“城齿”. 城墙上一共有N(1≤N≤25000)个城齿,每一个都有一个高度Mi.(1≤尬≤100000).现在约翰想把城齿的高度调成某种顺序下的Bi,B2,…,BN(I≤Bi≤100000). -个城齿每提高一个单位的高度,约翰需要X(I≤X≤100)元;每降低一个单位的高度,约翰需要Y(1≤y≤100)元. 问约翰最少可用多少钱达到目的.数据保证答案不超过2^32.
Input
第1行输入3个整数N,X,Y.
第2到N+1行每行输入两个整数Mi和Bi.
Output
最少花费.
Sample Input
3 6 5 3 1 1 2 1 2
Sample Output
11
HINT
第1个城齿降低1,第2个城齿提高1
Source
题解:又是一道石(sang)破(xin)天(bing)惊(kuang)的贪心,原来就是排个序算下就好了= =(HansBug:越来越发现这类贪心题才最逗比有木有TT)
1 /**************************************************************
2 Problem: 3399
3 User: HansBug
4 Language: Pascal
5 Result: Accepted
6 Time:40 ms
7 Memory:1008 kb
8 ****************************************************************/
9
10 type
11 arr=array[0..100000] of longint;
12 var
13 i,j,k,l,m,n:longint;
14 a,b:arr;ans:int64;
15 procedure swap(var x,y:longint);
16 var z:longint;
17 begin
18 z:=x;x:=y;y:=z;
19 end;
20 procedure sort(l,r:longint;var a:arr);
21 var i,j,x,y:longint;
22 begin
23 i:=l;j:=r;x:=a[(l+r) div 2];
24 repeat
25 while a[i]<x do inc(i);
26 while a[j]>x do dec(j);
27 if i<=j then
28 begin
29 swap(a[i],a[j]);
30 inc(i);dec(j);
31 end;
32 until i>j;
33 if i<r then sort(i,r,a);
34 if l<j then sort(l,j,a);
35 end;
36 function cal(x,y:longint):int64;
37 begin
38 if y>=x then exit(int64(k)*int64(y-x)) else exit(int64(l)*int64(x-y));
39 end;
40 begin
41 readln(n,k,l);
42 for i:=1 to n do readln(a[i],b[i]);
43 sort(1,n,a);sort(1,n,b);
44 ans:=0;
45 for i:=1 to n do inc(ans,cal(a[i],b[i]));
46 writeln(ans);
47 readln;
48 end.
- linux学习第六十三篇:Shell脚本介绍,Shell脚本结构和执行,date命令用法,Shell脚本中的变量
- 熔断Hystrix使用尝鲜
- 报警系统QuickAlarm之默认报警规则扩展
- PHP 面试知识梳理
- 报警系统QuickAlarm使用手册
- OpenDaylight Carbon二次开发实用指南
- 报警系统QuickAlarm之频率统计及接口封装
- 如何使用Sentry管理Hive外部表权限
- 报警系统QuickAlarm之报警规则解析
- 报警系统QuickAlarm之报警规则的设定与加载
- 报警系统QuickAlarm之报警执行器的设计与实现
- 如何在Kerberos与非Kerberos的CDH集群BDR不可用时复制数据
- 一个可扩展的报警系统Quick-Alarm
- 如何借助GitHub搭建属于自己的maven仓库
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 有个笔记本就可以玩一玩Hadoop
- java如何将String转换为Int
- java中如何将数组转换为List
- 从一个多层嵌套循环中直接跳出
- 如何给3个布尔变量,当其中有2个或者2个以上为true才返回true
- 比较java枚举成员使用equal还是==
- java如何将String转换为enum
- Markdown极简入门教程(1)—为什么要学习Markdown
- Markdown极简入门教程(2)—斜体和粗体
- 标题—Markdown极简入门教程(3)
- 链接—Markdown极简入门教程(4)
- 某企业授权渗透报告
- 图片—Markdown极简入门教程(5)
- 列表—Markdown极简入门教程(7)
- 段落—Markdown极简入门教程(8)