【题目链接】 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(贪心+归并排序)的更多相关文章

  1. bzoj 2430: [Poi2003]Chocolate 贪心

    发现每一次切割都会使另一方向所有切割次数++. 而每一刀的代价就是 cost*切割次数,故贪心按照cost从大到小排序即可. #include <bits/stdc++.h> #defin ...

  2. 【bzoj2430】[Poi2003]Chocolate 贪心

    题目描述 有一块n*m的矩形巧克力,准备将它切成n*m块.巧克力上共有n-1条横线和m-1条竖线,你每次可以沿着其中的一条横线或竖线将巧克力切开,无论切割的长短,沿着每条横线切一次的代价依次为y1,y ...

  3. bzoj 2016: [Usaco2010]Chocolate Eating【二分+贪心】

    二分答案,贪心判断,洛谷上要开long long #include<iostream> #include<cstdio> using namespace std; const ...

  4. BZOJ 1029 建筑抢修 贪心+堆

    又搞了一晚上OI,编了两道BZOJ和几道NOI题库,临走之前写两篇感想 noip越来越近了,韩大和clove爷已经开始停课虐我们了... 1029: [JSOI2007]建筑抢修 Time Limit ...

  5. [bzoj 2151]种树(贪心)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 分析:原型是bzoj 1150(CTSC 2007) 首先DP无法下手,想到贪心.想到贪 ...

  6. BZOJ.5397.circular(随机化 贪心)

    BZOJ 感觉自己完全没做过环上选线段的问题(除了一个2-SAT),所以来具体写一写qwq. 基本完全抄自remoon的题解qwq... (下标从\(0\sim m-1\)) 拆环为链,对于原线段\( ...

  7. 449A - Jzzhu and Chocolate 贪心

    一道贪心题,尽量横着切或竖着切,实在不行在交叉切 #include<iostream> #include<stdio.h> using namespace std; int m ...

  8. BZOJ 2016: [Usaco2010]Chocolate Eating

    题目 2016: [Usaco2010]Chocolate Eating Time Limit: 10 Sec  Memory Limit: 162 MB Description 贝西从大牛那里收到了 ...

  9. BZOJ 2016: [Usaco2010]Chocolate Eating( 二分答案 )

    因为没注意到long long 就 TLE 了... 二分一下答案就Ok了.. ------------------------------------------------------------ ...

随机推荐

  1. 【CF558E】 A Simple Task (权值线段树)

    题目链接 用权值线段树维护每个字母在\([l,r]\)出现的次数,每次修改把每个字母在区间的出现次数记下来,然后清空这段区间,再按顺序插进去就好了. 时间复杂度\(O(n\log n*26)\) (好 ...

  2. 【HNOI】五彩斑斓 模拟

    [题目描述] 给定一个n*m的矩阵,矩阵的某些位置有一个颜色(可以没有颜色,即为0),现在你可以将矩阵的某一行或者某一列染成同一种颜色,问最少用多少步能达到目标矩阵的染色方案,输出最少步数和方案. [ ...

  3. js_layer弹窗的使用和总结

    2018-04-10 一张呈现给用户的网页,会有很多种交互,比如连不上网络,用户点击按钮时向后台请求数据不成功等等.像这些情况,用户是看不见的, 要给用户更好的体验,在特定的时间,给客户反馈内容.实时 ...

  4. poj 3751 时间日期格式转换

    题目链接:http://poj.org/problem?id=3751 题目大意:按照要求的格式将输入的时间日期进行转化. #include <iostream> #include < ...

  5. hadoop环境搭建编译

    安装: JDK1.7+ maven 3.0 or later findbugs 1.3.9 protocolBuffer 2.5.0 cmake 2.6 zlib-devel openssl-deve ...

  6. 【bzoj1024】生日蛋糕

    一开始想dp 后来发现既然要均等,又看了下数据条件 暴力就能做. #include<bits/stdc++.h> using namespace std; ; int x,y,n; dou ...

  7. 【codeforces85D】

    去实验培训回来了……写个题先玩玩 这题给人一种平衡树的感觉 但是呢,实际上操作离线+离散化+线段树一样能做 #include<bits/stdc++.h> #define lson (o& ...

  8. centos7下opencv的安装

    os:centos7 opencv:opencv3.0.0 for linux reference:http://www.cnblogs.com/xixixing/p/6096057.html det ...

  9. 浮动的div无论窗口大小变化都能居中显示的js

    当div是浮动的时候浏览器窗口发生变化的时候不能居中显示(因为浮动的时候一般设定的有left或者right值) 可以先用jquery获取外围的div随浏览器变化而变化的宽度(加上监听事件) 之后再获取 ...

  10. java虚拟机字节码执行引擎

    定义 java虚拟机字节码执行引擎是jvm最核心的组成部分之一,它做的事情很简单:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.在不同的虚拟机实现里,执行引擎在执行java代码 ...