题目描述
While moving to a new compound the Byteotian Institute of Experimental Physics has encountered a logisticalproblem - the transfer of its vast collection of precision weights turned out to be non-trivial.

The Institute has a certain number of containers of limited strength at its disposal. As many weightsas possible are to be put into the containers, the remaining ones will be discarded. There is no limit onthe number of weights to be put in a container apart from the requirement of not exceeding its strength. Acontainer may also be empty.

Any two weights in the Institute have a peculiar property: the mass of one of them is an integer multipleof the mass of the other. Particularly, they may have the same mass.

TaskWrite a programme which:

reads the durabilities of the containers and masses of the weights from the standard input, determines the maximal number of weights that can be put in the containers, writes the outcome to the standard output.

在byteotian公司搬家的时候,他们发现他们的大量的精密砝码的搬运是一件恼人的工作。公司有一些固定容量的容器可以装这些砝码。他们想装尽量多的砝码以便搬运,并且丢弃剩下的砝码。每个容器可以装的砝码数量有限制,但是他们能够装的总重量不能超过每个容器的限制。一个容器也可以不装任何东西。任何两个砝码都有一个特征,他们的中总有一个的重量是另外一个的整数倍,当然他们也可能相等。

输入输出格式
输入格式:
The first line of the standard input contains two integers nnn and mmm(1≤n,m≤100000)(1≤n,m≤100 000)(1≤n,m≤100000), separated by a singlespace, denoting respectively: the number of containers and the number of weights. The second line of thestandard input consists of nnn integers wiw_iwi​ (1≤wi≤1 000 000 0001≤wi≤1000000000,for1≤i≤n1≤i≤n)(1\le w_i\le 1\ 000\ 000\ 0001≤w_i ≤1 000 000 000 ,for 1\le i\le n1≤i≤n)(1≤wi​≤1 000 000 0001≤wi​≤1000000000,for1≤i≤n1≤i≤n), separated by single spaces,denoting the strengths of containers in milligrammes. In the third line there are mmm integers mj(1≤mj≤1 000 000 000 for1≤j≤m)m_j(1\le m_j\le 1\ 000\ 000\ 000\ for 1\le j\le m)mj​(1≤mj​≤1 000 000 000 for1≤j≤m), separated by single spaces, denoting masses of the weights in milligrammes.

输出格式:
The first and only line of the standard output should contain a single integer -the maximal number ofweights that can be placed in the containers without exceeding their durability.

输入输出样例
输入样例#1:
2 4
13 9
4 12 2 4

输出样例#1:
3

贪心
我们要充分利用题目中“任意两个砝码中有一个是另一个的整数倍”的性质。首先一个很显然的结论就是尽量取小的砝码。我们要考虑的是取小砝码的时候放在哪些容器中。根据题目的特殊性质,可以将砝码的重量看做一个进制(进制数不固定)。然后将容器进行进制拆分,每一位上的数全部累加起来。放砝码的时候就是高精度减法,直到不能放为止。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<ctime>
#include<queue>
#include<iomanip>
#define ll long long
#define N 100005 using namespace std;
inline int Get() {int x=,f=;char ch=getchar();while(ch<''||ch>'') {if(ch=='-') f=-;ch=getchar();}while(''<=ch&&ch<='') {x=(x<<)+(x<<)+ch-'';ch=getchar();}return x*f;} int n,m,cc;
int c[N],w[N];
int d[N];
int ans;
int cnt[N];
int a[N];
struct node {
int v;
int key;
bool operator <(const node &a)const {
if(key!=a.key) return key<a.key;
return v<a.v;
}
};
priority_queue<node>q; bool reduce(int v) {
a[v]--;
while(a[v]<&&v<cc) {
a[v]+=d[v+]/d[v];
a[++v]--;
}
return (v<cc);
} int main() {
n=Get(),m=Get();
for(int i=;i<=n;i++) c[i]=Get();
for(int i=;i<=m;i++) w[i]=Get();
sort(c+,c++n);
sort(w+,w++m);
for(int i=;i<=n;i++) c[i]/=w[];
for(int i=m;i>=;i--) w[i]/=w[];
for(int i=;i<=m;i++) d[i]=w[i];
sort(d+,d++m);
cc=unique(d+,d++m)-d;
int now=;
d[cc]=d[cc-]*;
for(int i=;i<=n;i++) {
for(int j=;j<cc&&c[i];c[i]/=d[j+]/d[j],j++) {
if(j<cc-) a[j]+=c[i]%(d[j+]/d[j]);
else a[j]+=c[i];
}
}
for(int i=;i<=m;i++) {
if(w[i]!=w[i-]) now++;
if(reduce(now)) ans++;
else break;
}
cout<<ans<<"\n";
return ;
}

Luogu P3462 [POI2007]ODW-Weights的更多相关文章

  1. [Luogu P3455] [POI2007]ZAP-Queries (莫比乌斯反演 )

    题面 传送门:洛咕 Solution 这题比这题不懂简单到哪里去了 好吧,我们来颓柿子. 为了防止重名,以下所有柿子中的\(x\)既是题目中的\(d\) 为了方便讨论,以下柿子均假设\(b>=a ...

  2. 洛谷 P3462 [POI2007]ODW-Weights

    题面: https://www.luogu.org/problemnew/show/P3462 https://www.lydsy.com/JudgeOnline/problem.php?id=111 ...

  3. Luogu P3455 [POI2007]ZAP-Queries

    由于之前做了Luogu P2257 YY的GCD,这里的做法就十分套路了. 建议先看上面一题的推导,这里的话就略去一些共性的地方了. 还是和之前一样设: \[f(d)=\sum_{i=1}^a \su ...

  4. Luogu P3459 [POI2007]MEG-Megalopolis(线段树)

    P3459 [POI2007]MEG-Megalopolis 题意 题目描述 Byteotia has been eventually touched by globalisation, and so ...

  5. Luogu 3457 [POI2007]POW-The Flood

    感觉自己什么题都写不动了. 又是一个神贪心:把所有城市中的点按照高度从小到大排序之后拿出来逐个计算,枚举其他高度小于它的点向四周扩展,如果这个点不能被之前放过的抽水机覆盖,那么把答案加一,并在这个点放 ...

  6. BZOJ 1107: [POI2007]驾驶考试egz / Luogu P3463 [POI2007]EGZ-Driving Exam (树状数组 LIS)

    能从iii走到所有跑道 相当于 能从iii走到111和nnn. 边反向后就相当于 能从111和nnn走到iii. 为了方便叙述,把111~nnn叫做x坐标,111~(m+1)(m+1)(m+1)叫做y ...

  7. Luogu P2522 [HAOI2011]Problem b

    如果你做过[Luogu P3455 POI2007]ZAP-Queries就很好办了,我们发现那一题求的是\(\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)=d]\),就是这道题 ...

  8. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

  9. BZOJ 1110: [POI2007]砝码Odw

    1110: [POI2007]砝码Odw Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 547  Solved: 296[Submit][Status ...

随机推荐

  1. PHP报错类型

    p: 语法错误 定界符; F: 致命错误 函数;方法重名;包含(require) W: 警告 包含(include); N: 通知 变量未声明,函数

  2. shell的编程结构体(函数、条件结构、循环结构)

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 shell函数 在shell中,函数可以被当作命令一样 ...

  3. Ajax之跨域请求

    一.引子 我现在开启了两个django项目,分别叫Demo1和Demo2,Demo1中有一个路径‘http://127.0.0.1:8000/index/’,对应的视图是index视图返回一个inde ...

  4. 控制台安装跟检测Microsoft.Net Framework

    1.检测 每一个版本的.Net Framework的安装过程都会在Windows目录下的\Microsoft.NET\Framework目录中生成一个子目录(安装目录). 比如说,假设Windows目 ...

  5. Vue 动态加载组件

    为什么要动态加载呢?而不是一次性加载呢? 一次性?你能保证你拿的内容不多,那从性能方面说还是OK的.否则,就该什么时候用,就什么时候取. 得出这想法,源于前几天上班赶产品的故事: A组件是父亲,B组件 ...

  6. 怎样删除C/C++代码中的所有注释?浅谈状态机的编程思想

    K&R习题1-23中,要求“编写一个程序,删除C语言程序中所有的注释语句.要正确处理带引号的字符串与字符常量.在C语言中,注释不允许嵌套”. 如果不考虑字符常量和字符串常量,问题确实很简单.只 ...

  7. Kite(几何+镜面对称)

    C. Kite Time Limit: 1000ms   Case Time Limit: 1000ms   Memory Limit: 65536KB   Vova bought a kite co ...

  8. SOA、SOAP、RFC、RPC、IETF

    SOA: 全称:Servuce - oriented Architecture 说明:面向服务架构 就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口.并通过标准的协议进行调用. SO ...

  9. CSS 3D transforms

    https://www.creativebloq.com/css3/20-stunning-examples-css-3d-transforms-11112759 https://github.com ...

  10. CSS效果:CSS实用技巧制作三角形以及箭头效果

    实现如图所示的三角形图标: html代码如下: <div class="arrow-up"></div> <div class="arrow ...