Solution -「香港网络赛 2016」A+B Problem
Description
Link.
给出一个长度为 \(n\) 的序列 \(a\),问有序三元组 \((a_{i},a_{j},a_{k})\) 使得 \(i\neq j\neq k\) 且 \(a_{i}+a_{j}=a_{k}\) 的数量。
Solution
发现这个值域有说头,于是设 \(F(x)=\sum_{i=1}^{n}x^{a_{i}}\)。
然后求出 \(F^{2}(x)\),判断一通就好了。
主要是记录一下这种多项式题的常用 trick,把值域小的整成多项式或者生成函数一类的。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
namespace Poly
{
typedef complex<double> comp;
typedef vector<complex<double> > poly;
#define len(x) (LL((x).size()))
const double bh_pi=acos(-1);
LL lim,rev[400010];
void fft(poly &f,LL op)
{
for(LL i=0;i<lim;++i) if(i<rev[i]) swap(f[i],f[rev[i]]);
for(LL len=2;len<=lim;len<<=1)
{
comp bas(cos(2*bh_pi/len),op*sin(2*bh_pi/len));
for(LL fr=0;fr<lim;fr+=len)
{
comp now(1,0);
for(LL ba=fr;ba<fr+(len>>1);++ba,now*=bas)
{
comp tmp=now*f[ba+(len>>1)];
f[ba+(len>>1)]=f[ba]-tmp;
f[ba]+=tmp;
}
}
}
if(op==-1) for(LL i=0;i<lim;++i) f[i]/=lim;
}
poly mulself(poly f)
{
LL n=(len(f)<<1)-1; lim=1;
while(lim<n) lim<<=1;
for(LL i=0;i<lim;++i) rev[i]=(rev[i>>1]>>1)|((i&1)?(lim>>1):0);
f.resize(lim),fft(f,1);
for(LL i=0;i<lim;++i) f[i]*=f[i];
fft(f,-1),f.resize(n);
return f;
}
}using namespace Poly;
LL n,mx,nzr,tmp[400010],a[400010],ans;
const LL lay=50000;
int main()
{
scanf("%lld",&n);
poly f(100001);
for(LL i=1,x;i<=n;++i)
{
scanf("%lld",&x);
mx=max(mx,lay+x);
f[lay+x]=comp(f[lay+x].real()+1,0);
nzr+=(x==0),a[i]=x;
}
++mx;
f.resize(mx);
f=mulself(f);
for(LL i=0;i<len(f);++i) tmp[i]=LL(f[i].real()+0.49);
for(LL i=1;i<=n;++i) --tmp[(lay+a[i])<<1];
for(LL i=1;i<=n;++i)
{
ans+=tmp[a[i]+(lay<<1)];
if(a[i]) ans-=(nzr<<1);
else ans-=((nzr-1)<<1);
}
printf("%lld\n",ans);
return 0;
}
Solution -「香港网络赛 2016」A+B Problem的更多相关文章
- 2016 acm香港网络赛 A题. A+B Problem (FFT)
原题地址:https://open.kattis.com/problems/aplusb FFT代码参考kuangbin的博客:http://www.cnblogs.com/kuangbin/arch ...
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem
Let SS be a sequence of integers s_{1}s1, s_{2}s2, ......, s_{n}snEach integer is is associ ...
- 2016 acm香港网络赛 C题. Classrooms(贪心)
原题网址:https://open.kattis.com/problems/classrooms Classrooms The new semester is about to begin, and ...
- 2016 acm香港网络赛 F题. Crazy Driver(水题)
原题网址:https://open.kattis.com/problems/driver Crazy Driver In the Linear City, there are N gates arra ...
- 2016 acm香港网络赛 B题. Boxes
原题网址:https://open.kattis.com/problems/boxes Boxes There are N boxes, indexed by a number from 1 to N ...
- Solution -「NOI 模拟赛」彩色挂饰
\(\mathcal{Description}\) 给定一个含 \(n\) 个点 \(m\) 条边的简单无向图,设图中最大点双的大小为 \(s\),则保证 \(s\le6\).你将要用 \(k\) ...
- Solution -「NOI 模拟赛」出题人
\(\mathcal{Description}\) 给定 \(\{a_n\}\),求一个 \(\{b_{n-1}\}\),使得 \(\forall x\in\{a_n\},\exists i,j\ ...
- Solution -「树上杂题?」专练
主要是记录思路,不要被刚开始错误方向带偏了 www 「CF1110F」Nearest Leaf 特殊性质:先序遍历即为 \(1 \to n\),可得出:叶子节点编号递增或可在不改变树形态的基础上调整为 ...
- Solution -「SV 2020 Round I」SA
\(\mathcal{Description}\) 求出处 owo. 给定一个长度为 \(n\),仅包含小写字母的字符串 \(s\),问是否存在长度为 \(n\),仅包含小写字母的字符串 \( ...
- Solution -「SV 2020 Round I」「SRM 551 DIV1」「TC 12141」SweetFruits
\(\mathcal{Description}\) link. 给定 \(n\) 个水果,每个结点可能有甜度 \(v_i\),或不甜(\(v_i=-1\)).现在把这些水果串成一棵无根树.称一 ...
随机推荐
- [Qt开发]一口气搞懂串口通信
好多小鳄鱼 一.关于串口通信: Qt的确有自己的串口通信类,就是QSerialPort,但是我们在使用过程中因为要更加定制化的使用串口通信类减小开发的难度,所以我们会提供一个串口通信类,也就是这个Se ...
- tSNE算法在自然语言处理中的应用:文本降维和可视化
目录 技术原理及概念 t-SNE(Toeplitz-Stochastic Neural Network)是一种常用的文本降维和可视化算法,它的核心思想是将高维文本数据映射到低维空间,同时保持数据的一致 ...
- 免杀系列之去除Defender令牌权限
本文展示了Windows存在的一个小bug,该问题允许攻击者绕过保护反恶意软件(AV/EDR)免受各种形式攻击的Windows安全机制(Windows Protected Process Light) ...
- 国标GB28181协议客户端开发(三)查询和实时视频画面
国标GB28181协议客户端开发(三)查询和实时视频画面 本文是<国标GB28181协议设备端开发>系列的第三篇,探讨了信息查询和实时视频在GB28181协议中的应用.首先,介绍了设备目录 ...
- SQL Server 根据一个表数据修改另外一个表数据
今天在写代码的时候发现一个有趣的问题,同时也暴露了之前写的代码有问题,还好之前没有出现重复的情况,及时发现了这个问题,及时改了回来,不然就GG了 下面先上代码,再给大家解说一下 CREATE TABL ...
- 【从0开始编写webserver·基础篇#03】TinyWeb源码阅读,还是得看看靠谱的项目
[前言] 之前通过看书.看视频和博客拼凑了一个webserver,然后有一段时间没有继续整这个项目 现在在去看之前的代码,真的是相当之简陋,而且代码设计得很混乱,我认为没有必要继续在屎堆上修改了,于是 ...
- tcpdump 常用命令
最后更新时间 2021-10-05. Linux 的命令太多,tcpdump 是一个非常强大的抓包命令. 有时候想看线上发生的一些问题: nginx 有没有客户端连接过来-- 客户端连接过来的时候 P ...
- 2023年郑州轻工业大学校赛邀请赛clk
需要总结的地方挺多的,首先是题目一次通过率有待提高,对于一些特别的样例还要加以分析,算法熟练的不高,不能清晰的看出在哪道题考什么算法,就比如兔子爱吃萝卜那道题,就是一个背包问题,比较基础,但是我们团队 ...
- Truncate 和 Delete 的区别与选择
1)事务和日志 delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作. truncate table 则 一次性地从表中删除所有 ...
- #Powerbi 1分钟学会利用AI,为powerbi报表进行高端颜色设计
在BI报表的设计中,配色方案往往成为一大难题,一组切合主题.搭配合理的颜色设计往往能为我们的报表,加分不少. 今天,就介绍一个AI配色的网站,利用AI为pbi报表进行配色设计. 一:网站网址 http ...