from NOIP2016模拟题36

Description

商店里有n种背包和m种物品,物品体积为1到m,背包容积<=m
给出n个背包的容积
现在要求出这样一个物品集合,满足:
1)对于任意一个背包,都能找到这样一个物品的子集,使得这个子集中物品的体积和(每个物品可以使用多次)恰好等于背包的容积

2)对于每一个体积和小于等于m的物品子集(每个物品可以使用多次),都有一个背包容积恰好等于这个体积和

求满足条件的最少的物品集合

Analysis

有解 \(\Leftrightarrow\) 物品集=背包体积集合 时 有解
然后我们要缩小集合
就是判断一个数能不能被小于它的数背包dp出来
然而由于题目的特殊性质
只用是否存在两个小于它的数a,b满足a+b等于它
我们可以用FFT
简单证明:
若已经求出有解
a,b,c,d在物品集中
则2a,3a.....都在物品集中
同理a+b,2a+b,4a+2b+3c,2a+4b+5c+d什么的都在集合中
集合中的数任意两个相加即可表示任何数

证完了
回到一开始怎么知道物品集=背包集的情况是否满足条件?
将物品集conv后看看是否出现新数
有就不满足

Code

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
using namespace std;
const double pi=acos(-1.0);
const int M=1000007;
const int N=2097152;inline int rd(){int x=0;bool f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=0;for(;isdigit(c);c=getchar()) x=x*10+c-48;return f?x:-x;
}int n,m;
int rev[N];
struct CP{double x,i;CP(double xx=0.0,double ii=0.0){x=xx;i=ii;}
}a[N];
CP operator +(CP x,CP y){return CP(x.x+y.x,x.i+y.i);}
CP operator -(CP x,CP y){return CP(x.x-y.x,x.i-y.i);}
CP operator *(CP x,CP y){return CP(x.x*y.x-x.i*y.i,x.i*y.x+x.x*y.i);}void FFT(CP *a,int fl){int i,j,k;CP W,Wn,u,v;for(i=0;i<N;i++) if(rev[i]<i) swap(a[i],a[rev[i]]);for(i=2;i<=N;i<<=1){Wn=CP(cos(2*pi/i),fl*sin(2*pi/i));for(j=0;j<N;j+=i){W=CP(1,0);for(k=j;k<j+i/2;k++,W=W*Wn){u=a[k];v=W*a[k+i/2];a[k]=u+v;a[k+i/2]=u-v;}}}if(fl==-1)for(i=0;i<N;i++) a[i].x=(a[i].x/N)+0.5;
}int vis[M];
int ans=0;int main(){int i,j,k,x;n=rd(),m=rd();for(i=1;i<=n;i++){x=rd();vis[x]=1;a[x]=CP(1,0);}for(i=0;i<N;i++) rev[i]=(rev[i>>1]>>1)|((i&1)?(N>>1):0);FFT(a,1);for(i=0;i<N;i++) a[i]=a[i]*a[i];FFT(a,-1);ans=n;for(i=1;i<=m;i++)if(a[i].x>=1){ //注意现在是double if(!vis[i]){puts("NO");return 0;}ans--;}puts("YES");printf("%d\n",ans);for(i=1;i<=m;i++)if(vis[i]&&a[i].x<1){if(ans>1) printf("%d ",i);else printf("%d\n",i);ans--;}return 0;
}

转载于:https://www.cnblogs.com/acha/p/6366075.html

xsy 1836 - Shop相关推荐

  1. Microsoft .NET Pet Shop 4 架构与技术分析

    1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NET和Java ...

  2. Asp.net MVC 示例项目Suteki.Shop分析之---结束篇

    到今天,这个系列的文章就要先告一段落了.其中我用了10篇文章也没有穷尽该项目的设计思想,只能从中捡了一些我感兴趣的东西进行了分析和说明,正所谓兴趣是最大的动力.当然限于本人水平有限,难免有一些认识上的 ...

  3. shop++商品搜索出现乱码的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> shop++商品搜索出现乱码是由于tomcat字符集编码配置不正确引起的,解决方法是修改tomcat server.xml中的 ...

  4. Microsoft .NET Pet Shop 4.0 学习之旅(三) - 项目的引用关系2

    Microsoft .NET Pet Shop 4.0 学习之旅(三) 项目的引用关系2 <?xml:namespace prefix = o ns = "urn:schemas-mi ...

  5. TikTok Shop新增三大站点,已开放申请

    TikTok怎么下载和注册? TikTok站点怎么选? 英国小店降低门槛秒注册,有没成功的? 当你还在纠结怎么入驻TikTok Shop英国小店.如何享受政策红利时,跨境电商圈又传出了好消息. 24日 ...

  6. .NET Pet Shop 4.0案例研究预览篇

    概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 随着.NE ...

  7. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)

    手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译) 原文地址 : http://truffleframework.com/tutorials/pet-shop 译者:luci ...

  8. Microsoft .NET Pet Shop 4 架构与技术分析(转)

    Microsoft .NET Pet Shop 4 架构与技术分析 1.项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP. ...

  9. SHOP++源码部署说明:

    2019独角兽企业重金招聘Python工程师标准>>> SHOP++源码部署说明: 1. 安装MyEclipse.Tomcat.MySQL/Oracle/SQL Server 2. ...

最新文章

  1. 基于R的混合线性模型的实现
  2. Android属性 android:focusableInTouchMode
  3. 低碳生活:充电电池及充电器
  4. 最全Pycharm教程
  5. 3.2 参数估计:极大似然估计方法 ML
  6. 抢鲜体验.NET6 Preview1,配上Docker简直停不下来!
  7. LeetCode 845. 数组中的最长山脉(中心扩展)
  8. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  9. HDU 1242 Rescue
  10. mysql5好还是8_定投扣款哪天好?周一还是周五,月末还是月初?(定投知识8)...
  11. C# textBox框实现输入像百度搜索出现下拉列表的格式
  12. JUCE 中的音频编解码
  13. LVS+PIRANHA测试
  14. 云免流usb共享电脑_手机怎么使用USB数据线共享PC网络
  15. Spout 【API 解析】 -spout-bolt-
  16. 红米note4X_高通版(2016101)_官方线刷包_救砖包_解账户锁
  17. Palm OS HP WebOS
  18. FireAlpaca(电脑绘画软件)官方中文版V2.5.9下载 | 电脑绘画软件哪个好用
  19. 【2022项目复盘】无位置传感器的无刷直流电机驱动设计
  20. 格式化输出,浮点数e,f,g保留位数的计算方式不同,e,f :%.3e/f:取小数点后三位,g:%.3g总共有效位数为3,不包括小数点

热门文章

  1. C# 学习笔记(5) 继承
  2. Java连接数据库(3)
  3. [YTU]_2384 ( 矩形类中运算符重载【C++】)
  4. [笔记]画三角函数-涵盖画图基础
  5. Matlab中的算术运算和数学函数
  6. 三、RabbitMQ安装
  7. 网站使用QQ登录问题小结
  8. 20179214 2017-2018-2 《密码与安全新技术》第七次作业
  9. python3 第三十四章 - 聊聊File对象
  10. 数据库学习笔记6--MySQL多表查询之外键、表连接、子查询、索引