BZOJ 2430 [Poi2003]Chocolate(贪心+归并排序)
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2430
【题目大意】
有一块n*m的矩形巧克力,准备将它切成n*m块。
巧克力上共有n-1条横线和m-1条竖线,你每次可以沿着其中的一条横线或竖线将巧克力切开,
无论切割的长短,沿着每条横线切一次的代价依次为y1,y2,…,yn-1,
而沿竖线切割的代价依次为x1,x2,…,xm-1,求将巧克力切割为小单位快需要最小代价
【题解】
我们发现题目等价于有两个集合X,Y,里面有一些数字,现在将两个集合进行归并排序,
每个数字的代价为其数值与(前面不属于同个集合的数字个数+1)的乘积,求最小代价。
我们发现对于同个集合,显然数值大的排序靠前更优,对于不同集合的数,
我们考虑当他们相邻时,交换位置相当于总代价改变他们之间的差值,
显然也是大的数字靠前代价更小一些,所以我们按照从大到小进行归并排序,同时计算答案即可。
【代码】
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=10010;
int n,m,a[N],b[N];
bool cmp(int a,int b){return a>b;}
int main(){
while(~scanf("%d%d",&n,&m)){
for(int i=1;i<n;i++)scanf("%d",&a[i]);
for(int i=1;i<m;i++)scanf("%d",&b[i]);
sort(a+1,a+n+1,cmp);
sort(b+1,b+m+1,cmp);
int posa=1,posb=1,ans=0;
for(int i=1;i<n+m-1;i++){
if(posb>m&&posa<=n||a[posa]>b[posb])ans+=a[posa++]*posb;
else ans+=b[posb++]*posa;
}printf("%d\n",ans);
}return 0;
}
BZOJ 2430 [Poi2003]Chocolate(贪心+归并排序)的更多相关文章
- bzoj 2430: [Poi2003]Chocolate 贪心
发现每一次切割都会使另一方向所有切割次数++. 而每一刀的代价就是 cost*切割次数,故贪心按照cost从大到小排序即可. #include <bits/stdc++.h> #defin ...
- 【bzoj2430】[Poi2003]Chocolate 贪心
题目描述 有一块n*m的矩形巧克力,准备将它切成n*m块.巧克力上共有n-1条横线和m-1条竖线,你每次可以沿着其中的一条横线或竖线将巧克力切开,无论切割的长短,沿着每条横线切一次的代价依次为y1,y ...
- bzoj 2016: [Usaco2010]Chocolate Eating【二分+贪心】
二分答案,贪心判断,洛谷上要开long long #include<iostream> #include<cstdio> using namespace std; const ...
- BZOJ 1029 建筑抢修 贪心+堆
又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...
- [bzoj 2151]种树(贪心)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 分析:原型是bzoj 1150(CTSC 2007) 首先DP无法下手,想到贪心.想到贪 ...
- BZOJ.5397.circular(随机化 贪心)
BZOJ 感觉自己完全没做过环上选线段的问题(除了一个2-SAT),所以来具体写一写qwq. 基本完全抄自remoon的题解qwq... (下标从\(0\sim m-1\)) 拆环为链,对于原线段\( ...
- 449A - Jzzhu and Chocolate 贪心
一道贪心题,尽量横着切或竖着切,实在不行在交叉切 #include<iostream> #include<stdio.h> using namespace std; int m ...
- BZOJ 2016: [Usaco2010]Chocolate Eating
题目 2016: [Usaco2010]Chocolate Eating Time Limit: 10 Sec Memory Limit: 162 MB Description 贝西从大牛那里收到了 ...
- BZOJ 2016: [Usaco2010]Chocolate Eating( 二分答案 )
因为没注意到long long 就 TLE 了... 二分一下答案就Ok了.. ------------------------------------------------------------ ...
随机推荐
- idea编写的java代码,在cmd运行乱码解决方案
1.解决方案 使用txt打开,另存为的时候选择编码为ANSI 即可.
- vs调试 配置IISExpress允许局域网内部访问
内网可访问后,本机不能使用localhost 1.找到IISExpress的配置文件,位于 <文档>/IISExpress/config文件夹下,打开applicationhost.c ...
- 关于this问题
对于关键字this,其实很好理解,谁调用我就指向谁.下面举个例子说明: 其实这也是在学习闭包中的一个案例: var name = "The window"; var obj = { ...
- bootstrap-table组合表头
1.效果图 2.html代码 <table id="table"></table> 3.javascript代码 $("#table") ...
- 使用EL表达式需要注意的
1.表达式与Java无关,表达式都是以${开始,以}结束. 2.EL访问java变量不能直接访问,因为得不到数据,要访问数据,需要将其放到作用域中.而使用<%=java变量%>可以访问ja ...
- 日常开发技巧:在远程机器上直接使用adb
背景 嵌入式开发中,开发工作是在远程服务器上进行的.当需要adb推送一个文件到开发板时,则需要重新在本地机器中找到该文件,再执行命令.这样的操作比较麻烦. 下面介绍我的解决方式. sshfs挂载 首先 ...
- skb管理函数之alloc_skb、dev_alloc_skb、kfree_skb、dev_kfree_skb、consume_skb
alloc_skb--分配skb dev_alloc_skb--分配skb,通常被设备驱动用在中断上下文中,它是alloc_skb的封装函数,因为在中断处理函数中被调用,因此要求原子操作(GFP_AT ...
- python基础===pendulum '''Python datetimes made easy.'''
https://pypi.python.org/pypi/pendulum Pendulum的一大优势是内嵌式取代Python的datetime类,可以轻易地将它整合进已有代码,并且只在需要的时候才进 ...
- Java GC策略
本文转自https://blog.csdn.net/rabbit_in_android/article/details/50386954 内存管理和垃圾回收 JVM内存组成结构 JVM栈由堆.栈.本地 ...
- NOIP 2010
tags: NOIP 并查集 动态规划 搜索 categories: 信息学竞赛 总结 机器翻译 乌龟棋 关押罪犯 引水入城 机器翻译 Solution 维护一个队列, 每次从词典中查词时将单词加入队 ...