1. 分段数列

【问题描述】

对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。

输入格式:

输入第1行包含两个正整数N,M,表示了数列A[i]的长度与每段和的最大值,第2行包含N个空格隔开的非负整数A[i]。(N≤100000,M≤10^9)

输出仅包含一个正整数,输出最少划分的段数。

【输入样例】

5 6

4 2 4 5 1

【输出样例】

3

#include<iostream>
#define N 100010
using namespace std;
int a[N];
int main()
{
int n,m,ans = ,sum = ;
cin >> n >> m;
for(int i = ; i <= n; i++){
cin >> a[i]; //读入数据
}
for(int i = ; i <= n; i++){
sum += a[i];
if(sum > m){ //判断加和是否大于m
sum = ;
ans++; //段数增加
i--; //说明a[i] 是下一段
}
}
if(sum) ans++; //最后如果sum不为0,段数需要加一段
cout << ans << endl;
return ;
} /* 10 30
5 2 5 1 2 3 6 15 2 1 2 2 4
2 4 1 3
2 */
  1. 纪念品分组

【问题描述】

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。

你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

输入输出格式

输入格式:

输入文件group.in包含n+2行:

第1行包括一个整数w,为每组纪念品价格之和的上上限。

第2行为一个整数n,表示购来的纪念品的总件数G

第3~n+2行每行包含一个正整数Pi (5 <= Pi <= w)表示所对应纪念品的价格。

输出格式:

输出文件group.out仅一行,包含一个整数,即最少的分组数目。

输入输出样例

【输入样例】

100

9

90

20

20

30

50

60

70

80

90

【输出样例】

6

【数据范围】

50%的数据满足:1<=n<=15

100%的数据满足:1<=n<=30000,80<=w<=200

#include<iostream>
#define N 30001
using namespace std;
int a[N];
int n,w;
void qsort(int left, int right){
if(left >= right) return;
int i = left,j = right;
int key = a[i];
while(i < j){
while(i < j && key <= a[j]) j--;
a[i] = a[j];
while(i < j && key >= a[i]) i++;
a[j] = a[i];
}
a[i] = key;
qsort(left,i-);
qsort(i+,right);
} int main()
{
cin >> w;
cin >> n;
int ans = ,j = ;
for(int i = ; i <= n; i++){
cin >> a[i];
}
qsort(,n);
for(int i = n; i >= j; i--){
if(a[i]+a[j] <= w){
ans++;
j++;
}
else{
ans++;
}
}
cout << ans << endl;
return ;
} /*
300
9
90
20
20
30
50
60
70
80
90 */

选做题-采购牛奶

【问题描述】

由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要。帮助Marry乳业找到最优的牛奶采购方案。Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的。此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。每天Marry乳业可以从奶农手中采购到小于或者等于奶农最大产量的整数数量的牛奶。

给出Marry乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。注:每天所有奶农的总产量大于Marry乳业的需求量。

输入格式:

第 1 行共二个数值:N,(0<=N<=2,000,000)是需要牛奶的总数;M,(0<= M<=5,000)是提供牛奶的农民个数。

第 2 到 M+1 行:每行二个整数:Pi 和 Ai。

Pi(0<= Pi<=1,000) 是农民 i 的牛奶的单价。

Ai(0 <= Ai <= 2,000,000)是农民 i 一天能卖给Marry的牛奶制造公司的牛奶数量。

输出格式:

单独的一行包含单独的一个整数,表示Marry的牛奶制造公司拿到所需的牛奶所要的最小费用。

输出仅包含一个正整数,输出最少划分的段数。

【输入样例】

100 5

5 20

9 40

3 10

8 80

6 30

【输出样例】

630

#include<iostream>
#define N 5010
using namespace std;
struct data{
int p,A;
}a[N];
void qsort(int l, int r){
if(l >= r) return;
int i = l,j = r;
data k = a[i];
while(i < j){
while(i < j && k.p <= a[j].p) j--;
a[i] = a[j];
while(i < j && k.p >= a[i].p) i++;
a[j] = a[i];
}
a[i] = k;
qsort(l,i-);
qsort(i+,r);
}
int main()
{
int n, m,sum = , ans = ,i;
cin >> n >> m;
for(int i = ; i <= m; i++){
cin >> a[i].p >> a[i].A;
}
qsort(,m);
for(i = ; i <= m; i++){
sum += a[i].A;
ans += a[i].A*a[i].p;
if(sum > n){
break;
}
}
ans += (n-sum)*a[i].p;
cout << ans << endl;
return ;
}
/* 100 4
9 40
3 10
6 30
8 10 */

noip第28课作业的更多相关文章

  1. noip第23课作业

    1.   营救 铁塔尼号遇险了!他发出了求救信号.距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里. 通过侦测,哥伦比亚号获取了一张海洋图.这张图将海洋部分分化成n*n个比较小的单位,其 ...

  2. noip第18课作业

    1. 银行取款 [题目描述] 在现代文明社会中,大家在诸如银行办理业务.车站买票等活动时都很文明没有插队的现象,本着“先来先服务”的规矩. 新年马上到了,明明的爸爸打算上银行去取点钱,带着一向表现很好 ...

  3. noip第5课作业

    1.     计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...

  4. noip第9课作业

    1.    打印乘法表 [问题描述] 用for循环实现输出1至9的乘法表 [样例输出] 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4 ...

  5. noip第8课作业

    1.     计算书费 [问题描述]下面是一个图书的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 C++程序设计教程 78 元/本 人工智能 35  ...

  6. noip第28课资料

  7. noip第34课作业

    1.    信息加密 [问题描述] 在传递信息的过程中,为了加密,有时需要按一定规则将文本转换成密文发送出去.有一种加密规则是这样的:1. 对于字母字符,将其转换成其后的第3个字母.例如:A→D,a→ ...

  8. noip第33课作业

    1.    排座椅 [问题描述] 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同 ...

  9. noip第29课作业

    1.   钢条切割 [问题描述] 一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi.那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大. ...

随机推荐

  1. Jmeter常用脚本开发之Java请求

    Java请求:就是用来对java项目的类进行压测 例子:将输入的两个参数通过IO存入文件 1.创建Java工程,工程目录如下 2.将Jmeter-lib下面的所有jar包导入java工程, 3.创建一 ...

  2. c#dev操作读取excel方法

    一:使用spreadsheetControl1 方法 1:打开excel; private void barButtonItem1_ItemClick(object sender, DevExpres ...

  3. hdu 3368 曾经下过的棋

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3368 就是讲一种下棋的方法,很多人小时候也应该玩过,输入8*8的矩阵代表棋盘,*代表空位 D代表黑子, ...

  4. linux强制拷贝避免输入yes方法

    Linux下默认cp命令是有别名(alias cp='cp -i')的,无法强制覆盖,即使你用 -f 参数也无法强制覆盖文件,下面提供两种Linux下cp 覆盖方法. 1) 取消cp的alias,这不 ...

  5. codeforces round#509

    博主水平不高, 只能打完$4$题, QAQ什么时候才能变强啊嘤嘤嘤 订正完6题了,  还想打今天下午的CF , 只能迟十分钟了, 掉分预定 A. Heist 输出 $max - min + n - 1 ...

  6. PS合成的5个要点:场景、对比、氛围、模糊、纹理

    是否觉得做合成打开PS之后无处下手,做完之后总觉得缺少故事情节?这一次分享的5个要点,是个人觉得需要重视的,每一点都有一个案例来让作品变得多一份惊喜.(申明:文中素材均来自网络,这里仅作分享交流作用) ...

  7. Eclipse快捷键系列

    查看Eclipse自定义的快捷键或者自己定义快捷键的方式 Window --> preference --> general --> Keys 在光标所在行之后插入一行,省去了将光标 ...

  8. How to ignore files and directories in subversion?

    Step 1 Copy the files and directories to other place. Step 2 Delete the files and directories. Step ...

  9. Getting svn to ignore files and directories

    August 27, 2013Software Developmentresources, subversion, svn, tutorial, version control Who knew it ...

  10. linux fedora 的备份小技巧

    大家都知道,在fedora中,是没有默认安装带有GUI的备份软件的. 我们可以去软件中心搜索“备份”或者“dup”来安装deja-dup来进行备份,这个软件就是ubuntu中设置的“备份”,只不过ub ...