abc E - Wrapping Chocolate

2024-01-05 22:38
文章标签 abc wrapping chocolate

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

题目传送门:E - Wrapping Chocolate
题目大意: 有n块给出长和宽的巧克力和m个给出长和宽的盒子,要求能把巧克力都装进盒子里。
思路:长和宽二维合起来考虑的话将会非常困难,所以应将盒子和巧克力的数组合起来对一个元素作为主键排序,然后从最大开始,每次遇到盒子的数组就把非主键元素放入集合,遇到巧克力数组就以其非主键元素在集合内查找,找到最小的且不小于当前元素的值并删除,找不到就代表没有符合条件的盒子。
代码:

#include<iostream>
#include<set>
#include<algorithm> 
using namespace std;
int n,m;
struct node{int l,r,v;bool operator<(const node &a)const{return l<a.l||(l==a.l&&r<a.r)||(l==a.l&&r==a.r&&v>a.v);}
}a[810010];
multiset<int> box;
int main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i].l;for(int i=1;i<=n;i++)cin>>a[i].r;for(int i=1;i<=n;i++)a[i].v=1;for(int i=n+1;i<=n+m;i++)cin>>a[i].l;for(int i=n+1;i<=n+m;i++)cin>>a[i].r;sort(a+1,a+1+n+m);int s1 = 0,s2 = 0;for(int i=n+m;i>=1;i--){if(a[i].v==0){box.insert(a[i].r);}else{auto it=box.lower_bound(a[i].r);if(it==box.end()){cout<<"No"<<endl;return 0;}box.erase(it);}}cout<<"Yes"<<endl;
} 

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



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

相关文章

【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

js中怎样对“abc”进行MD5、sha256哈希计算?

在 JavaScript 中,可以使用 CryptoJS 库来进行 MD5 哈希计算。首先,你需要在 HTML 文件中导入 CryptoJS 库,例如: <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> 然后,在 JavaScript 文件中,可

2024国赛数学建模ABC题思路模型

完整的思路模型请查看文末名片 完整的思路模型请查看文末名片 完整的思路模型请查看文末名片

【ZOJ】3881 From the ABC conjecture【暴力容斥】

传送门:【ZOJ】3881 From the ABC conjecture 复杂度大概 O(N0.67) O(N^{0.67}),我也不会算www,首先转换一下(我们是根据积性函数打表找规律得到的,也可以推出来)使得: g(N)=∏pi ϵ N(pia+1) g(N)=\prod_{pi~\epsilon ~N} (pi^a+1) 暴力展开发现贡献为: h(N)=

CodeForces 490D Chocolate

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

题解AtCoder ABC 358 F Easiest Maze

一道模拟题。 思路 最短的路线是直接竖着走下来,经过 n n n 个格子,所以 k k k 最小是 n n n。如果想要延长路线,可以采用九转大肠的形状,就像这样: 可以发现,每次向左走之后都必须走回来,所以每次新经过的格子数是偶数,得到 k − n k-n k−n 是偶数才有可行的方案。 首先,把整张图表的初始状态设为如下形式(即每个格点都是独立的): +++++S++o|o|o

面试算法题:三线程循环打印ABC

面试遇到三线程循环打印ABC的题目,当时没写出来,然后经过查阅,进行整理了一下。 1、题目 有A、B、C 三个线程,A线程 输出“A”,B线程 输出“B”,C线程 输出“C”,要求同时启动3个线程,按照顺序输出“ABC”,循环10次,请使用代码实现。 2、问题分析 A、B、C 三个线程;这表示我们要使用多线程同步,有人说了这不废话吗。是的,笔者只是想说,多线程的实现,有几种方式,①继承Th

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

[Algorithm][综合训练][小葱的01串][小红的ABC][不相邻取数]详细讲解

目录 1.小葱的01串1.题目链接2.算法原理详解 && 代码实现 2.小红的ABC1.题目链接2.算法原理详解 && 代码实现 3.不相邻取数1.题目链接2.算法原理详解 && 代码实现 1.小葱的01串 1.题目链接 小葱的01串 2.算法原理详解 && 代码实现 解法:滑动窗口 --> ⻓度固定的滑动窗⼝,要想符合要求,必定是⼀半⼀半的 选择区域的时候,仅需

ABC 368 G - Add and Multiply Queries

原题链接:G - Add and Multiply Queries 题意:给出数组a和b,三种操作,第一种:以 1 i x 的形式给出。用x替换ai​。第二种:以 2 i x 的形式给出。用x代替 bi​ 。第三种:以3 l r的形式给出,初始值为0,从l到r每个位置上可以选择加上a[i],或者乘上b[i],输出最大值。 思路:链表+set+树状数组+二分。题目中给出了答案的范围不会超过1e1