首页 > 其他分享 >[NOIP2007 普及组] 纪念品分组

[NOIP2007 普及组] 纪念品分组

时间:2024-07-01 20:21:44浏览次数:25  
标签:le int value NOIP2007 分组 纪念品 组数

传送锚点:

www.luogu.com.cn

题目背景

NOIP2007 普及组 T2

题目描述

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

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

输入格式

共 \(n+2\) 行:

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

第二行为一个整数 \(n\),表示购来的纪念品的总件数 \(G\)。

第 \(3\sim n+2\) 行每行包含一个正整数 \(P_i\) 表示所对应纪念品的价格。

输出格式

一个整数,即最少的分组数目。

样例 #1

样例输入 #1

100 
9 
90 
20 
20 
30 
50 
60 
70 
80 
90

样例输出 #1

6

提示

\(50\%\) 的数据满足:\(1\le n\le15\)。

\(100\%\) 的数据满足:\(1\le n\le3\times10^4\),\(80\le w\le200\),\(5 \le P_i \le w\)。

思路

最少组数实现,肯定是每组都能尽量分到2个,
将物件的价格存到数组value中,在进行排序,利用双指针,左右两边指针同时向中间遍历,若右边指针所对应的价格+左边指针所对应的价格 小于 w,l++,r--,组数+1
否则 r--,右边指针单独为一组,组数+1

code

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
int main() {
    int w;
    cin >> w;
   int n;
   cin >> n;
   vector<int> value(n + 1);//石头高度
    for (int i = 1; i <= n; ++i) {
        cin >> value[i];
    }
    sort(value.begin() + 1, value.end());
    int l = 1, r = n;
    int count = 0;//记录最少组数
    while(l <= r){
        if(value[l] + value[r] <= w){
            l++, r--;
            count++;
        }else{
            r--;
            count++;
        }
    }
    cout << count;
}

标签:le,int,value,NOIP2007,分组,纪念品,组数
From: https://www.cnblogs.com/6Luffy6/p/18278779

相关文章

  • (记得关注哦)国产商用密码:编程实现分组密码体制中的国密算法SM4。
    一、研究SM4算法(一)SM4算法的分组长度、密钥长度、S盒、轮函数①分组长度和密钥长度:分组长度:SM4算法的分组长度为128位(即16字节),这意味着它每次加密或解密的数据块大小为128位。密钥长度:SM4算法的密钥长度为128位(即16字节),与分组长度相同。......
  • 分组 左连接 合并 SQL
     SELECTtemp.bz,sum(temp.bzsj)bzsj,sum(temp.llcl)llcl,max(temp.bzep)bzep,sum(temp.bzxscl)bzxsclFROM(selectt.BZbz,sum(t.bzsj)bzsj,sum(t.CL)llcl,max(hye.sep)bzep,sum(t.CL)/sum(t.bzsj)*60bzxsclfrom(SELECTSUM(SJZL)/1000CL,PH,G......
  • 虚拟环境 反向解析,有名分组和无名分组的反向解析,路由分发,名称空间,虚拟环境,路径
    Ⅰ反向解析【一】基础的URL配置在实际的Django项目中,经常需要获取某个具体对象的URL,为生成的内容配置URL链接。比如,我要在页面上展示一列文章列表,每个条目都是个超级链接,点击就进入该文章的详细页面。现在我们的urlconf是这么配置的:path('post/<int:pk>/',views.some_view)......
  • P1098 [NOIP2007 提高组] 字符串的展开
    注意三种情况: 1.开头结尾的-,例:-abc--2.-两侧必须同为小写字母或同为数字例;A-a3.对数字不能进行大小写转换#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#include<cmath>#include<algorithm>#defineFor(i,j,n)for(inti=j......
  • Excel 实现分组求和
    问题描述:基于A列数据相同的分组,B列相应记录累加求和。如下图:  解决方法:=SUMIF(Sheet1!A:A,Sheet2!A2,Sheet1!B:B)SUMIF函数语法具有以下参数(参数:为操作、事件、方法、属性、函数或过程提供信息的值。):range必需。用于条件计算的单元格区域。每个区域中的单......
  • Django链接数据库,ORM迁移数据库,ORM操作之数据操作,Django框架之生命周期流程图,Djan
    ⅠDjango链接数据库默认的Django数据库是sqlite3链接MySQL数据库--->电脑上则会运行MySQL【一】下载数据库【二】在settings.py设置定义参数#链接MySQL数据库DATABASES={'default':{#指定我们使用的引擎是mysql数据库的引擎'ENGINE':'......
  • WPF/C#:显示分组数据的两种方式
    前言本文介绍自己在遇到WPF对数据进行分组显示的需求时,可以选择的两种方案。一种方案基于ICollectionView,另一种方案基于IGrouping。基于ICollectionView实现相关cs代码:[ObservableProperty]privateObservableCollection<People>people;publicGroupDemoViewModel(){......
  • WPF/C#:如何将数据分组显示
    WPFSamples中的示例在WPFSamples中有一个关于Grouping的Demo。该Demo结构如下:MainWindow.xaml如下:<Windowx:Class="Grouping.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic......
  • jQuery引入,基本选择器和关系选择器,组合选择器,分组与嵌套,基本筛选器,属性选择器,前
    ⅠjQuery引入【一】什么是jQuery【1】概述jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTMLDocument、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Writeless,domore.“【2】小结jQ......
  • 6、Oracle中的分组函数
    最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。视频链接:【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用如果有侵权,请联系删除,谢谢。学习目标:了解组函数。描述组函数的用途。使用GROUPBY子句对数据分......