bzoj3771:Triple

传送门

生成函数

设生成函数\(f(x)\),可以将系数定为选的方案数,指数定为代价

那么
\[ f(x)=\sum_{i=1}^{n}x^{w_i} \]
然后答案就是\(f^3(x)+f^2(x)+f(x)\)然后去掉重复的情况

然后我们设
\[ A(x)=\sum_{i=1}^{n}x^{2w_i}\\ B(x)=\sum_{i=1}^{n}x^{3w_i} \]

重复的情况是哪些呢,由于\((a,b,c)\)\((a,c,b),(b,c,a),(b,a,c),(c,a,b),(c,b,a)\)全部都看作一种情况

所以选三个的情况也就是\(\frac{f^3(x)-3A(x)f(x)+2B(x)}{6}\)

选两个的情况是\(\frac{f^2(x)-A(x)}{2}\)

选一个的情况显然就是\(f(x)\)

因为有多项式乘法,直接做\(O(n^2)\)会TLE,然而NTT需要注意爆模数的问题,所以还是用FFT加速

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
void read(int &x) {char ch; bool ok;for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=4e5+10;
const double pi=acos(-1);
int n,m,r[maxn],len;
double ans[maxn];
struct complex{double x,y;}a[maxn],b[maxn],c[maxn],d[maxn];
complex operator-(complex a,complex b){return (complex){a.x-b.x,a.y-b.y};}
complex operator+(complex a,complex b){return (complex){a.x+b.x,a.y+b.y};}
complex operator*(complex a,complex b){return (complex){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};}
void fft(complex *a,int f){for(rg int i=0;i<n;i++)if(i<r[i])swap(a[i],a[r[i]]);for(rg int i=1;i<n;i<<=1){complex wn=(complex){cos(pi/i),f*sin(pi/i)};for(rg int j=0;j<n;j+=(i<<1)){complex w=(complex){1,0};for(rg int k=0;k<i;k++){complex x=a[j+k],y=w*a[j+k+i];a[j+k]=x+y,a[j+k+i]=x-y,w=w*wn;}}}if(f==-1)for(rg int i=0;i<n;i++)a[i].x/=n;
}
int main()
{read(n);complex now,i3={3,0},i2={2,0};m=n;for(rg int i=1,x;i<=n;i++)read(x),a[x].x++,b[x*2].x++,c[x*3].x++,m=max(x*3,m);for(n=1;n<=m;n<<=1)len++;for(rg int i=0;i<n;i++)r[i]=(r[i>>1]>>1)|((i&1)<<(len-1));fft(a,1),fft(b,1),fft(c,1);for(rg int i=0;i<n;i++)d[i]=a[i]*a[i]*a[i];fft(d,-1);for(rg int i=0;i<n;i++)ans[i]=ans[i]+d[i].x/6.0;for(rg int i=0;i<n;i++)d[i]=i3*a[i]*b[i];fft(d,-1);for(rg int i=0;i<n;i++)ans[i]=ans[i]-d[i].x/6.0;for(rg int i=0;i<n;i++)d[i]=i2*c[i];fft(d,-1);for(rg int i=0;i<n;i++)ans[i]=ans[i]+d[i].x/6.0;for(rg int i=0;i<n;i++)d[i]=a[i]*a[i];fft(d,-1);for(rg int i=0;i<n;i++)ans[i]=ans[i]+d[i].x/2.0;fft(b,-1),fft(a,-1);for(rg int i=0;i<n;i++)ans[i]=ans[i]-b[i].x/2.0+a[i].x;for(rg int i=0;i<n;i++)if(ans[i]+0.1>1)printf("%d %d\n",i,(int)(ans[i]+0.1));
}

转载于:https://www.cnblogs.com/lcxer/p/10848529.html

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

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

相关文章

CSS图片设置

1、background-position: center center; 图片居中 background-size: cover; 让图片自适应&#xff0c;按比例缩放 2、加背景色mask&#xff0c;面罩&#xff1a; background: rgba(0, 0, 0, 0.7); 宽度不要写&#xff0c;自适应的 3. 图片的宽度&#xff0c;最好先规定好&…

sqlserver——视图

数据库中的视图是一个虚拟表。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据&#xff0c;行和列数据用来自由定义视图和查询所引用的表&#xff0c;并且在引用视图时动态产生。本篇将通过一些实例来介绍视图的概念&#xff0c;视图的作用&#xff0c;创建视图…

js常用API

(1) getAttribute 用户写啥是啥&#xff0c;#后面的值&#xff0c;获取用户在上面写的原文&#xff0c;不是浏览器加http协议的东西&#xff1b; <a href"#siteAbout">关于</a> var href a.getAttribute(href) // hrefsiteAbou…

DOM相关(主要是var和let的区别用法)

一、1.节点的类型有七种&#xff0c;分别是&#xff1a;Document&#xff0c;DocumentType&#xff0c;Element&#xff0c;Attribute&#xff0c;Text&#xff0c;Comment&#xff0c;DocumentFragment 2.DOM树的根节点是&#xff1a;html 3.元素Element的NodeType值为&…

JOIN三个表格

表格一 表格二 表格三 SQL语句为 SELECT * FROM movie JOIN casting ON movie.idcasting.movieid     JOIN actor ON casting.actoridactor.id(要注意join 的格式) 最终结果展示在最下面 idtitleyrdirectorbudgetgrossmovieidactoridordidname1001710 Rillington Place19…

深度学习入门|第5章 误差反向传播法(二)

误差反向传播法 前言 此为本人学习《深度学习入门》的学习笔记 四、简单层的实现 本节将用 Python 实现前面的购买苹果的例子。这里&#xff0c;我们把要实现的计算图的乘法节点称为“乘法层”&#xff08;MulLayer&#xff09;&#xff0c;加法节点称为“加法层”&#xff08;…

内容样式行为分离

CSS负责HTML&#xff1a;人类选不中&#xff1b;js取不到 CSS负责JS: 如果逻辑复杂&#xff0c;CSS会变慢&#xff0c;页面会变慢

CSS图片布局 flex(竖着的几张图片改为一排)

<style>.images{display: flex;align-items: flex-start;//border: 1px solid red; 有可能边框包不住这几张图片&#xff0c;但如果窗口够大&#xff0c;也可以包住//overflow: hidden; 如果写了&#xff0c;超出边框的部分会被隐藏 } </style> 布局有两种方式&a…

牡丹-曹州牡丹:曹州牡丹

ylbtech-牡丹-曹州牡丹&#xff1a;曹州牡丹菏泽牡丹&#xff0c;山东省菏泽市特产&#xff0c;中国国家地理标志产品。牡丹&#xff0c;原产中国西北部&#xff0c;秦岭和陕北山地多野生&#xff0c;栽培历史悠久&#xff0c;南北朝时已声成为观赏植物。菏泽&#xff0c;古称曹…

idea报错:Error: java: 错误: 不支持发行版本 5

我在测试类运行时&#xff0c;出现下述错误&#xff1a; 可能原因&#xff1a;java版本不一致项目编译配置使用的java版本不对 解决方案&#xff1a; 第一步&#xff1a;file---Project Structure-- Project&#xff08;两版本改为一致&#xff1a;第二、三个横框中数字都为11…

python网络爬虫基础day01

2019.5.13&#xff0c;今天在“小猿圈”跟着波波老师学习了爬虫开发的第一章和第二章&#xff0c;总结下今天学的知识&#xff1a; 爬虫基础介绍&#xff1a;   什么是爬虫&#xff1f;    - 通过编写程序&#xff0c;模拟浏览器上网&#xff0c;然后让其去互联网上抓取数…

忘记mysql数据库连接密码

本次操作所有需要用到的密令行&#xff1a; bin>net stop mysql bin>mysqld --skip-grant-tables bin>mysql mysql>use mysql mysql>update user set passwordpassword("123456") where user"root"; mysql>flush privileges; mys…

Python 基础 函数

1&#xff1a;调用函数 eg&#xff1a;调用内置函数 abs() 求绝对值 2&#xff1a;定义函数 1&#xff1a;定义一个函数要使用 def 语句&#xff0c;依次写出函数名、括号、括号中的参数和冒号:&#xff0c;然后&#xff0c;在缩进块中编写函数体&#xff0c;函数的返回值用ret…

Springmvc跨服务器文件上传报403,409错误

报403错误 Tomcat默认只读模式&#xff0c;传图片会被拒绝 解决&#xff1a;找到 Tomcat 目录---conf下---web.xml&#xff0c;打开 加入 <init-param><param-name>readonly</param-name><param-value>false</param-value> </init-param&g…

Vue中message.split().reverse().join()函数用法

1、split() 把一个字符串分割成字符串数组 把数据拆分为一个数组,括号里的 是把数据拆分为每个字符串 2、reverse() 颠倒数组中元素的顺序 只作用于数组&#xff0c;跟在split()后才能起作用&#xff0c;在一个字符串后面不起作用&#xff0c;如message.reverse() 3、join()…

单元测试——Winfrom

一、新建单元测试项目 二、单元测试可在Service或者Repository层分别创建 三、编写好代码后可运行单元测试 转载于:https://www.cnblogs.com/772933011qq/p/10863817.html

vue报错:dependencies were not found: * element-ui in ./src/main.js * element-ui/lib/theme-chalk/inde

报错信息 These dependencies were not found: * element-ui in ./src/main.js * element-ui/lib/theme-chalk/index.css in ./src/main.js 解决方案 1、 cmd进入命令行窗口&#xff0c;切入运行的项目文件夹下 2、输入 cnpm i element-ui -S(没有装淘宝镜像的使用 npm i…

Spring的配置与使用

一、Spring的组成 其中最核心的是Core Container核心容器 二、spring框架的作用&#xff1a; 对于我目前了解的spring框架&#xff0c;其中一个作用是用来降低程序间的耦合度的&#xff0c;也就是降低程序间的依耐性。 IOC&#xff1a;inversion of control 控制反转-->即将…

选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......

(spring boot vue&#xff09; 1、新增-选择日期-点击保存-报错&#xff1a;报错信息 "Invalid JSON input: Cannot deserialize value of type java.util.Date from String "2020-07-05T16:00:00.000Z": not a valid representation (error: Failed to pars…

个人冲刺10

1.昨天做了界面整体优化。 2.今天打算了解一下组成员的情况。 3.整体界面优化没有什么问题。转载于:https://www.cnblogs.com/Evak/p/10936847.html