LG2945 【[USACO09MAR]沙堡Sand Castle】
经典的贪心模型,常规思路:将M和B排序即可
看到没有人用优先队列,于是我的showtime到了
说下思路:
读入时将数加入啊a,b堆中,不用处理(二叉堆本来就有有序的性质)
读完后逐个判断,照题目模拟即可
总时间复杂度:O(nlogn) 其实就是堆排序的时间复杂度
楼下的那位用了sort还说是O(2n)的,大家不要犯这种低级错误
贴代码:
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<ctime>
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<algorithm>
#pragma GCC optimize(2)//STL必带
using namespace std;
#define ll long long
const int maxn=0x7f;
const int INF=0x7fffffff;
inline void read(int&x){//quick input
int data=0,w=1;
char ch=getchar();
while(ch!='-'&&!isdigit(ch))
ch=getchar();
if(ch=='-')
w=-1,ch=getchar();
while(isdigit(ch))
data=10*data+ch-'0',ch=getchar();
x=data*w;
}
void write(int x){//quick output
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar('0'+x%10);
}
priority_queue<int> a,b;
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
int n,x,y,t;
read(n);read(x);read(y);
for(int i=1;i<=n;++i){//use variable "t" to improve memory and time
read(t);
a.push(t);
read(t);
b.push(t);
}
int ans=0,u,v;
while(!a.empty()){//slower than "sort", easier to understand though
u=a.top();
a.pop();
v=b.top();
b.pop();
if(u<v)//do as what the problem said
ans+=(v-u)*x;
else if(u>v)
ans+=(u-v)*y;
}
write(ans);
// fclose(stdin);
// fclose(stdout);
return 0;
}
LG2945 【[USACO09MAR]沙堡Sand Castle】的更多相关文章
- 洛谷 P2945 [USACO09MAR]沙堡Sand Castle 题解
题目传送门 大概思路就是把这两个数组排序.在扫描一次,判断大小,累加ans. #include<bits/stdc++.h> using namespace std; int x,y,z; ...
- 洛谷 P2945 [USACO09MAR]沙堡Sand Castle
传送门 题目大意: ai,ai+1,ai+2... 变成 bi,bi+1,bi+2.. 不计顺序,增加和减少a数组均有代价. 题解:贪心+排序 小的对应小的 代码: #include<iostr ...
- 洛谷 - P2945 - 沙堡Sand Castle - 排序
https://www.luogu.org/problemnew/show/P2945 好像猜一猜就觉得排序之后是最优的,懒得证明了.每个城墙向他最接近的城墙靠近,绝对是最优的.
- bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MB Description 约翰用沙子建了一座城堡.正 ...
- BZOJ3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 22 Solved: 17[Sub ...
- 3399: [Usaco2009 Mar]Sand Castle城堡
3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 37 Solved: 32[Sub ...
- [USACO09MAR]Sand Castle
嘟嘟嘟 太水了,大佬们就绕道吧…… 就是m, b数组分别排个序,然后更改对应位置的m[i]和b[i],就行了. 因为如果m[i]不改为b[i]而是b[i + 1]的话,那么必定要将m[j] (j &g ...
- 随手练—— 洛谷-P2945 Sand Castle(贪心)
题目链接:https://www.luogu.org/problemnew/show/P2945 (原题 USACO) 要求钱最少,就是试着让M和B的离散程度最小(我自己脑补的,就是总体更接近,我不知 ...
- BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡:贪心【最小匹配代价】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3399 题意: 给你一个数列a,和一个可变换顺序的序列b(数列长度≤25000). a增加一 ...
随机推荐
- Loading Xps from MemoryStream
A common way of loading XpsDocument is to load it from file: XpsDocument document = new XpsDocument( ...
- 重构 MVC; 代码分享工具(重构,改进,打分)
include 模块和 extend 模块的不同: Class Extension: 通过向singleton class中加入Module来定义class method,是对象扩展的一个特例. ...
- 3-8《Ruby元编程》第二章对象模型
<Ruby元编程> 第二章 对象模型 类定义揭秘inside class definitions: class关键字更像一个作用域操作符,核心作用是可以在里面随时定义方法. [].meth ...
- Intent在Activity之间传值的几种方式
发这篇博客主要讲一下Android中Intent中如何传值的几种方法: 1:基本数据类型,包含了Java八种基本数据类型和CharSequece文本2:八种数据类新对应数组和CharSequece文本 ...
- AC自动机技巧
AC自动机技巧 可以用树上的一些算法来进行优化 对于要求支持插入和删除字符串的题目,可以通过建两个AC自动机,查询的时候作差来实现. 当给出的查询串是一个含有空格的文本时,可以用特殊字符(比如'z'+ ...
- OAF系统更新默认LOGO图标和主页环境描述
更新EBS OAF系统中默认的LOGO图标和主页的环境描述 左上角的ORACLE图片位置在 登录界面左上角oracle LOGO图片为GIF格式,大小155*20 背景透明.文件名为:FNDSSC ...
- OAF Sample Code(转)
原文地址: OAF Sample Code
- HDU 3221 矩阵快速幂+欧拉函数+降幂公式降幂
装载自:http://www.cnblogs.com/183zyz/archive/2012/05/11/2495401.html 题目让求一个函数调用了多少次.公式比较好推.f[n] = f[n-1 ...
- java中数组是不是对象?
[转自知乎]:http://www.zhihu.com/question/26297216 JAVA中的数组是对象吗? public class test { public static void m ...
- Linux内核分析-Linux内核如何装载和启动一个可执行程序
ID:fuchen1994 实验要求: 理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节: 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态 ...