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. spring boot (三): 热部署

    介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署. 热部署是什么 大家都知道在项目开发过程中, ...

  2. maven的父工程中添加子工程

    父工程的结构如下: 1.选中父工程名,接着单击鼠标右键,选择”Maven“ -----> "New Maven Module Project". 2.如下图,打勾 ---&g ...

  3. 找不到或无法加载主类(Could not find or load main class )

    在Linux环境下,写了一个简单的java程序,通过javac编译成class文件,然后用java 运行的时候,报了这个错误, 搜了一下,可能是classpath的问题,所以用echo $CLASSP ...

  4. BZOJ 1874 取石子游戏 - SG函数

    Description $N$堆石子, $M$种取石子的方式, 最后取石子的人赢, 问先手是否必胜 $A_i <= 1000$,$ B_i <= 10$ Solution 由于数据很小, ...

  5. service fabric重装电脑后集群失败

    前提.下载service fabric sdk工具 1.Remote Procedure Call (RPC)服务打开 自动 2.Remote Procedure Call (RPC) Locator ...

  6. HTTP协议是什么

    1.http全称Hypertext Trsnsfer Protocol超文本传输协议 2.最初发明是用来在浏览器和web服务器之间传输超文本信息的 3.泛义上属于应用层的协议   ,很多其他应用(比如 ...

  7. Mysql 常用增删改查命令集合教程

    创建:create      插入:insert 更新:update  查询:select 删除:delete 修改:alter     销毁:drop 创建一个数据库: create databas ...

  8. 使用yarn 安装 Vue-DevTools

    1. 从 github 下载 vuejs/vue-devtools https://github.com/vuejs/vue-devtools/archive/dev.zip 2.安装yarn 及 编 ...

  9. Java的GUI设计小技巧

    不可关闭窗口 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

  10. vue导航栏实时获取URL设置当前样式,刷新也存在!

    很low 别喷, template代码: <div class="tab-itme"> <ul @click="clickit()"> ...