P3909 异或之积

为什么叫做异或之积?

答曰:只要不关乎Alice和Bob就行


做完这道水题,感觉自己弱爆了。

一开始就要考虑暴力\(O(n^3)\)的优化。

然后就注意到了题目中的\(6\)为什么不是⑨

然后就想到了全排列,然后根据全排列瞎搞了一波。

如下:

注意到\(A_i*A_j*A_k=A_j*A_k*A_i\),然后三个元素的全排列个数就是6

然后题意转变为从一堆数中,不重复,不遗漏的选出三个元素,求出所有三元组的积的和

怎么实现呢?

一开始就是\(O(N^3)\)的暴力

然后发现可以利用前缀和的思想,将后两个数的乘积算出来,在前缀和一下。然后在\(O(N)\)的枚举第一个数,利用前缀和计算出和

然后又可以使用类似的思想,将那个\(O(N^2)\)的预处理也变成\(O(N)\)的。

但是

我调了好久,还是没有gan出来。

然后看了看其他人的code。发现

我们只要处理出三个前缀和就行了。

代码如下

#include<cstdio>
#include<algorithm>
#include<iostream>
const int maxn=1000010;
const long long mod=1e9+7;
int s[maxn];
int S[maxn];
int main()
{
int n;
scanf("%d",&n);
long long pas;
long long ans=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&pas);
s[i]=(s[i-1]+pas)%mod;
S[i]=(S[i-1]+pas*s[i-1])%mod;
ans=(ans+pas*S[i-1])%mod;
}
pas=ans;
for(int i=1;i<=5;i++)
ans=(ans+pas)%mod;
printf("%lld",ans);
}

真的是纯真不做作。吐血emmm

发现自己口胡了一波看似正解的东西,被一波code技巧打败了。

sad

最新文章

  1. php在5.5.0默认提供了Zend OPcache
  2. [软件推荐]快速文件复制工具(Limit Copy) V4.0 绿色版
  3. bitmap算法
  4. Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)
  5. hdu 4253 Two Famous Companies BZOJ 2654 tree
  6. 苹果操作系统Mac OS X
  7. rpm-bin
  8. 操作native window的QxtWindowSystem (好像是一个IM的一部分)
  9. 宣布与 NBC 合作直播索契冬季奥运
  10. Regex阅读笔记(三)之固化分组
  11. centos环境下安装redis
  12. linux驱动编写之中断处理
  13. Windows 系统安装多个版本JDK, 修改环境变量不生效
  14. bzoj 3811: 玛里苟斯
  15. javadoc中{@link}与@see的简单使用以及区别
  16. WebDriver高级应用实例(6)
  17. 【转】Mapped Statements collection does not contain value for解决
  18. ambassador 学习六 Module说明
  19. sass(混合mixin的调用、@content)
  20. Redis工具之Jedis

热门文章

  1. js判断触摸方向
  2. 请以excel管理你的接口测试用例
  3. HAProxy advanced Redis health check---ref
  4. Ubuntu通过xinput禁用及启用联想笔记本的触摸板
  5. C语言的前世今生
  6. 从零开始的全栈工程师——利用CSS3画一个正方体 ( css3 )
  7. 在 CentOS 上安装 node.js
  8. angular2-模块
  9. Personal Geodatabase - Can&#39;t Create New or Open Existing
  10. Highcharts - Pie Chart