【CodeForces - 294B】Shaass and Bookshelf(枚举,贪心,思维,组内贪心组间dp)

题干:

Shaass has n books. He wants to make a bookshelf for all his books. He wants the bookshelf's dimensions to be as small as possible. The thickness of the i-th book is ti and its pages' width is equal to wi. The thickness of each book is either 1 or 2. All books have the same page heights.

Shaass puts the books on the bookshelf in the following way. First he selects some of the books and put them vertically. Then he puts the rest of the books horizontally above the vertical books. The sum of the widths of the horizontal books must be no more than the total thickness of the vertical books. A sample arrangement of the books is depicted in the figure.

Help Shaass to find the minimum total thickness of the vertical books that we can achieve.

Input

The first line of the input contains an integer n, (1 ≤ n ≤ 100). Each of the next nlines contains two integers ti and wi denoting the thickness and width of the i-th book correspondingly, (1 ≤ ti ≤ 2, 1 ≤ wi ≤ 100).

Output

On the only line of the output print the minimum total thickness of the vertical books that we can achieve.

Examples

Input

5
1 12
1 3
2 15
2 5
2 1

Output

5

Input

3
1 10
2 1
2 4

Output

3

题目大意:

给出n本书,每本书有厚度t[i]和书的宽度w[i],每本书的高度相同。现在想要制作一个书架,为了节省材料,尽量将书竖着放,剩下的书可以横着放在之前竖着的书的上面(当然宽度的那个面朝自己)。求书架的最小宽度。

解题报告:

因为又是分成了两组,所以又是一道组内贪心组间dp。跟这题很像

思路是这样的:考虑答案,肯定是一些宽度1的和一些宽度2的。而放置下面的书的时候肯定是宽度大的先放,so先组内排个序,然后暴力枚举放在下面的第一组的数量和第二组的数量,用交换法可以证明贪心的正确性。模拟完题意之后,看是否满足要求,满足就更新ans。

注意求前缀和不能读入的时候求,,别偷懒,,因为那时候还没排序呢、、、

这题也可以枚举down的长度,然后贪心填充,然后check一下是否up和down是否满足就可以了。当然check函数中还要暴力枚举选择的宽度为1的个数(也就是On的check),反正还不如第一种方法简单。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define F first
#define S second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX=105;
int n;
int d1[MAX],d2[MAX],sum1[MAX],sum2[MAX];
int main()
{int t,q;int op,w,c1=0,c2=0;int s1,s2,ans=0x3f3f3f3f;cin>>n;for(int i = 1; i<=n; i++){scanf("%d%d",&op,&w);if(op==1) d1[++c1]=w;//,sum1[c1] = d1[c1] + sum1[c1-1];else d2[++c2]=w;//,sum2[c2] = d2[c2] + sum2[c2-1];}sort(d1+1,d1+c1+1,greater<int>()); sort(d2+1,d2+c2+1,greater<int>());for(int i = 1; i<=c1; i++) sum1[i] = d1[i] + sum1[i-1];for(int i = 1; i<=c2; i++) sum2[i] = d2[i] + sum2[i-1];for(int i = 0; i<=c1; i++) {int down = 0;for(int j = 0; j<=c2; j++) {down = i+j*2;int up = (sum1[c1] - sum1[i]) + (sum2[c2] - sum2[j]);if(down >= up) ans = min(ans,down);}}printf("%d\n",ans);return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac php开发集成环境,MAC OS X下php集成开发环境mamp

之前苦于mac上搭建本地服务器之艰辛&#xff0c;找寻好久都没找到一款类似windows上集成的本地服务器环境&#xff0c;诸如phpstudy&#xff0c;xampp,appserv,虽说xampp也有mac版&#xff0c;但不知为何不是Apache启动不了&#xff0c;这里小编为大家分享了MAC OS X 下php集成…

知识点总结vector创建二维数组

vector构造函数通常含有两个参数 原型如下&#xff1a; vector( size_type num, const TYPE &val ); 数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector方法1&#xff1a; #include <iostream> #include<vector> #include<algorithm&…

php获取手机目录,php如何获取手机型号

手机App中判断平台&#xff0c;可以根据$_SERVER[HTTP_USER_AGENT]中的内容来判断浏览器类型或手机平台。(推荐学习&#xff1a;PHP编程从入门到精通)iPhone UA&#xff1a;Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, l…

【CodeForces - 920E】Connected Components? (dsu,补图连通块,STLset+map,bfs 或bitset)

题干&#xff1a; You are given an undirected graph consisting of n vertices and edges. Instead of giving you the edges that exist in the graph, we give you m unordered pairs (x, y) such that there is no edge between x and y, and if some pair of vertices…

php获取post全部数据,PHP获取POST数据的几种方法汇总_PHP教程

PHP获取POST数据的几种方法汇总本文给大家汇总介绍了PHP获取POST数据的几种常用方法&#xff0c;这里分享给大家&#xff0c;有需要的小伙伴来参考下吧。一、PHP获取POST数据的几种方法方法1、最常见的方法是&#xff1a;$_POST[‘fieldname’];说明&#xff1a;只能接收Conten…

yiilite.php,缓存 - yii在哪些情况下可以加载yiilite.php?

yii权威指南上说&#xff0c;在开启apc缓存的情况下&#xff0c;可以加载yiilite.php提升性能。我有以下几点疑问&#xff1a;1.开启apc缓存的情况下&#xff0c;引入yiilite.php能提升性能的原因是因为缓存了opcode的关系么&#xff1f;2.使用其他缓存服务缓存opcode的情况下&…

【HDU - 1024 】Max Sum Plus Plus (dp及优化,最大m子段和)

题干&#xff1a; Now I think you have got an AC in Ignatius.Ls "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem. Given a consecutive number sequence…

java 内部类 菜鸟编程,java中的匿名内部类

匿名内部类也就是没有名字的内部类正因为没有名字&#xff0c;所以匿名内部类只能使用一次&#xff0c;它通常用来简化代码编写但使用匿名内部类还有个前提条件&#xff1a;必须继承一个父类或实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person {public …

【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/551/F 来源&#xff1a;牛客网 题目描述 CSL 有一个神奇的无穷实数序列&#xff0c;他的每一项满足如下关系&#xff1a; 对于任意的正整数 n &#xff0c;有 , 并且 。 CSL 很清楚这样的序列是唯…

java什么时候创建进程,Java创建进程

Java创建进程1 进程的概念 11.1 进程的概念 11.2 进程的特征 11.3 进程与线程区别 12 进程的创建 12.1 JAVA进程的创建 12.1.1 ProcessBuilder 22.1.2 Runtime 32.1.3 Process 42.2 实例 52.2.1 创建子进程 52.2.2 进程阻塞问题 72.2.3 在java中执行java程序 111 进程的概念1.1…

【北航oj】(线段树取模运算)

题干&#xff1a; https://buaacoding.cn/contest-ng/index.html#/334/problems K wjj 的自动售货机 时间限制&#xff1a;1000ms 内存限制&#xff1a;131072kb 通过率&#xff1a;14/26 (53.85%) 正确率&#xff1a;14/119 (11.76%) wjj 最近很看好线下实体销售的行…

matlab 音频编辑器,在Matlab中使用App Designer可以进行实时音频处理吗?

我想用Matlab中的应用程序设计器编写一个简单的音频过滤应用程序。一个人应该能够加载音频文件,按播放和改变参数,如输入增益,截止频率等,而文件正在播放。我只是不知道如何能够实时更改参数并更新相应的变量,以便人们能够听到过滤器是如何更改的。这是我现在写的代码:classdef…

【牛客 - 157E】青蛙(floyd最短路,建图)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/157/E 来源&#xff1a;牛客网 题目描述 有一只可爱的老青蛙&#xff0c;在路的另一端发现了一个黑的东西&#xff0c;想过去一探究竟。于是便开始踏上了旅途 一直这个小路上有很多的隧道&#xff0…

php移动端url,什么是PC和移动端URL路径规范化

什么叫PC和手机端URL途径规范性在网址百度搜索引擎提升的全过程中&#xff0c;会牵涉到途径方位的难题。网址中的同一个网页页面只相匹配一个网站地址。一个规范化和简易的网站地址有利于检索和捕捉客户的记忆力&#xff0c;回绝好几条途径&#xff0c;偏向同一个网页页面&…

【牛客 - 157D】插排树(dfs,树形dp)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/157/D 来源&#xff1a;牛客网 一年一度的山东省oi夏令营又开始了&#xff0c;每到这个季节&#xff0c;山东的oier们都会欢聚这里&#xff0c;一起学&#xff08;tu&#xff09;习&#xff08;fe&…

【北航】Bella 姐姐发辣条(贪心)

题干&#xff1a; 题目描述 Bella 姐姐又来回国发辣条啦。 所有集训队的小朋友按照训练成绩站成一排&#xff0c;从左到右为成绩从低到高排列。每个人都对和蔼的 Bella 姐姐有两个要求&#xff1a; 我至少需要 AiAi 根辣条。 我要比我左边的小朋友恰好多 BiBi 根辣条&#…

【蓝桥杯官网试题 - 历届试题】小朋友排队(逆序数,树状数组)

题干&#xff1a; 问题描述 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列&#xff0c;但是每次只能交换位置相邻的两个小朋友。   每个小朋友都有一个不高兴的程度。开始的时候&#xff0c;所有小朋友的不高兴程度都是0。   如果某个小朋友第一次被要求交换…

matlab的diray在哪,matlab笔记

matlab笔记 目录 P5第一章——matlab 概述与格式 P10eps 浮点相对精度inf 无穷大i 或 j 虚数单位pi 圆周率nan 非数nargin 函数输入变量数目nargout 函数输出变量数目realmax 最大正实数realmin 最小正实数real( ) 实部imag( ) 虚部abs( ) 绝对值angle( ) 复数的相位角**matlab…

【CodeForces - 190E】Counter Attack (补图bfs,卡常,dsu)

题干&#xff1a; 无向图中给定n个顶点&#xff0c;m条不存在的边(除了这m条边&#xff0c;其余都存在)&#xff0c;求图的连通分量&#xff0c;及每个连通分量的大小。 解题报告&#xff1a; https://codeforces.com/blog/entry/4556 AC代码&#xff1a; #include<cstd…

denison php,Parker / Denison丹尼逊柱塞泵首相系列相关说明

派克Dension首相系列柱塞泵经过专门设计&#xff0c;可在要求流量可变&#xff0c;高压和高速的行业中使用。凭借无与伦比的连续psi额定压力和灵活的设计&#xff0c;它们确保了可靠性。首相系列具有卓越的设计和简化的维护&#xff0c;可提供可提高性能的高压可变活塞泵。低进…