[haoi2009]巧克力】的更多相关文章

P3173 [HAOI2009]巧克力 题目描述 有一块n*m的矩形巧克力,准备将它切成n*m块.巧克力上共有n-1条横线和m-1条竖线,你每次可以沿着其中的一条横线或竖线将巧克力切开,无论切割的长短,沿着每条横线切一次的代价依次为y1,y2,…,yn-1,而沿竖线切割的代价依次为x1,x2,…,xm-1. 例如,对于下图6*4的巧克力,我们先沿着三条横线切割,需要3刀,得到4条巧克力,然后再将这4条巧克力沿竖线切割,每条都需要5刀,则最终所花费的代价为y1+y2+y3+4*(x1+x2+x3+…
鉴于河南是oi弱省,所以想来这道题也没什么人会翻出来写吧,而且这还是haoi2009的一道简单题目,所以估计也没几个人会写博客的,那么看在我这么弱的份上,我觉得是应该写一篇出来的. 这道题我是按照贪心写的(毕竟被划在贪心题中了),解题思想在于从大到小排列所有代价,别管是横着还是竖着,都是要排的,但横竖又是必不可少的,所以我们用一个结构体来记录代价和这个代价到底是横着切的还是竖着切的.用一个数组c[2]来分别记录横着切了几次和竖着切了几次,然后就是相乘后累加,关于这个,建议还是推一遍样例为好. 下…
本蒟蒻又双叒叕被爆踩辣! 又是一道经典的贪心题: 那么怎样切割该块巧克力,花费的代价最少呢? Solution: 窝们考虑每个状态,有多少种选择方法? 是不是可以选择横着切或者竖着切,就这两种方法吧: 窝们再来考虑这两种方法的代价, 首先,如果窝们准备横着切,那么此次处理的代价就是当前这次的代价*(已经竖着切的数量 + 1),因为已经竖着切出了这么多次,所以代价就是这个(那个+1的原因是巧克力本来就有一块好不好,切一次不就有两块辣...) ans += q.top() * s2;//那么当前的代…
题目描述 出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块. 对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上),而且这木板是不均匀的,从不同的线切割下去要花不同的代价.而且,对于一块木板,切割一次以后就被分割成两块,而且不能把这两块木板拼在一起然后一刀切成四块,只能两块分别再进行一次切割. 现在,给出从不同的线切割所要花的代价,求把整块木板分割成1×1块小方块所需要耗费的最小代价. \(n \leq 10000\) 错误日志: \(sort\) 第二个数组的时候填…
Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 505  Solved: 204 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜 欢过于甜的巧克力.对于每一块巧克力,我们设x和y为其牛奶和可可的含量.由于每个人对于甜的程度都有自己的 评判标准,所以每个人都有两个参数a和b,分别为他自己为牛奶和可可定义的权重,因此牛奶和可可含量分别为x 和y的巧克力对于他的甜味程度即为ax…
Time Limit:1000MS  Memory Limit:65535K 题型: 编程题   语言: 无限制 描述 众所周知,13级有尊大神Golden gun,人称根叔,简称金枪!众立志进校队的师弟如果不认识这个成功人士,我只能说太失败了! 他出手阔绰,首战夺金!由于工作关系,Golden gun坐享艺术学院所有资源,他可以自豪地说:“我要让全世界都知道!华农的艺术学 院的MM市场都让我承包了!”,据某可靠消息来源称,Golden gun的短号非常抢手,在艺术学院可谓是无人不晓.经常会有艺…
/*====================================================================== 儿童节快到了,班长想要给班上的每个同学给一个巧克力, 巧克力的形状是一个宽为2,长为n的长方形,由于巧克力太贵, 班长就想把这个大块的巧克力分成许多 1*2(宽*长)的小块巧克力, 这样每个人都能得到一份1*2的巧克力,现在给定巧克力的长为 正整数n(1<=n<=91),请你判断对于这 个2*n的巧克力有多少种不同的分法? 分析:这个其实就是考查费波…
单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> using namespace std; #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(x,c) me…
dp(i,j)表示1~i的全部排列中逆序对数为j的个数. 从1~i-1的全部排列中加入i, 那么可以产生的逆序对数为0~i-1, 所以 dp(i,j) = Σ dp(i-1,k) (j-i+1 ≤ k ≤ j) 用前缀和优化就可以做到O(N2)了 --------------------------------------------------------------------- #include<bits/stdc++.h>   using namespace std;   const…
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 954  Solved: 548[Submit][Status] Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数列到底有多少个? Input 第一行为两个整数n,k. Output 写入一个整数,…