8. Wrapping Chocolate

2024-03-28 22:38
文章标签 wrapping chocolate

本文主要是介绍8. Wrapping Chocolate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:Wrapping Chocolate

n n n 盒巧克力和 m m m 个盒子有各自的长和宽,巧克力只能放进长宽均不小于自己的盒子,不能转过来放,问能不能把所有巧克力都放进去。

只要想办法把一个维度消掉,就很容易解决这个问题。

可以把盒子和巧克力放一起,对宽度从大到小排序,盒子永远放在最前面。这样枚举的时候宽度的要求就直接满足了,然后维护一下可用的盒子的长度即可。

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn = 2e5 + 5;
struct node {int w, l, type;bool operator<(const node &other) const {if (w == other.w)return type < other.type;return w < other.w;}
} a[maxn << 1];void solve() {int n, m;cin >> n >> m;for (int i = 1; i <= n; ++i) {cin >> a[i].w;a[i].type = 0;}for (int i = 1; i <= n; ++i) {cin >> a[i].l;}for (int i = 1; i <= m; ++i) {cin >> a[i + n].w;a[i + n].type = 1;}for (int i = 1; i <= m; ++i) {cin >> a[i + n].l;}sort(a + 1, a + n + m + 1);multiset<int> s;for (int i = n + m; i > 0; --i) {if (a[i].type) {s.insert(a[i].l);} else {auto it = s.lower_bound(a[i].l);if (it == s.end()) {cout << "No" << endl;return;}s.erase(it);}}cout << "Yes" << endl;
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int T = 1;// cin >> T;while (T--) {solve();}
}

这篇关于8. Wrapping Chocolate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856887

相关文章

【UVA】10652-Board Wrapping(凸包问题)

又增加了2个模板。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vector>#include <queue>#include <stack>#include <algorithm>usi

CodeForces 490D Chocolate

题意: 2块矩形巧克力  如果边长可以整除2  则可以从一半出掰开  吃掉一半  如果可以整除3  则可以从1/3处掰开  吃掉1/3  问  最少吃几次  能使得2块面积相同  输出最后时刻的边长 思路: 面积最多只有10^18  因此形成的面积的种类数最多几万种  我们可以利用面积来暴搜出所有状态  然后找面积相同时的最少步数 PS:数论的方法更好 代码: #include

Educational Codeforces Round 1 E. Chocolate Bar(记忆化搜索)

题目链接 题意:在n*m的矩形切出面积是k 解法:记忆化搜索 #include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define X first#define Y second#define cl(a,b) memset(a,b,sizeof(a))typedef

Big Chocolate

我只想说水得一手好水。。。有必要隐藏这么深嘛。。。。 Big Chocolate Mohammad has recently visited Switzerland . As he loves his friends very much, he decided to buy some chocolate for them, but as this fine chocolate is ver

codeforces #257 C题Jzzhu and Chocolate

题目地址:http://codeforces.com/contest/450/problem/C 这次CF的时候绝壁脑残了。。。A题和C题都出现了脑残失误。。。唯一一个AC的B题还是被HACK了。。。分数也不多了。。。简直sad。。。。。。。。 这题我的思路是分类讨论,分四种情况。 首先让n>=m,如果不是的话,可以交换。主要是考虑切横的多少刀,竖的多少刀。 1:当k>n+m-2,此时,切

Codeforces Round #310 (Div. 1) C. Case of Chocolate (线段树)

题目地址:传送门 这题虽然是DIV1的C。。但是挺简单的。。只要用线段树分别维护一下横着和竖着的值就可以了,先离散化再维护。每次查找最大的最小值<=tmp的点,可以直接在线段树里搜,也可以二分去找。 代码如下: #include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algori

二分+数学,CF 689C - Mike and Chocolate Thieves

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 689C - Mike and Chocolate Thieves 二、解题报告 1、思路分析 考

uva 1099 - Sharing Chocolate(记忆化搜索)

题目链接:uva 1099 - Sharing Chocolate 题目大意:给出一个巧克力,以及它的长和宽,要求判断能否将这个巧克力分成n个指定面积大小的小巧克力。 解题思路:记忆化,d[S][x],表示说集合S,用x = min(r0,c0)的情况能否可行。注意面积要恰好相等才行。 #include <stdio.h>#include <string.h>#in

Codeforces 449A Jzzhu and Chocolate(贪心)

题目链接:Codeforces 449A Jzzhu and Chocolate 题目大意:给定一个n∗m的巧克力,问说切k刀之后,使得说最小的一份面积最大。 解题思路:贪心,尽量切一个方向,比较一下两种的最优解。 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef

Codeforces 490D Chocolate(数论)

题目链接:Codeforces 490D Chocolate 两个种变换方式无疑是减掉一个因子3加上一个因子2和减掉一个因子2,所以从因子的角度出发,如果两组数存在不同的质因子肯定是不可以的。剩下的就是构造答案了。 #include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespac