洛谷P2671 求和
数学 公式转化 前缀和
题意 设三元组 x y z 要求 x < y < z y-x = z-y
且要求 color[ x ] == color[ z ]

比如说 求当前是 z 那么之前的 x 对 这个答案的贡献
设满足条件 的有count 个 分别 为 x1 x2 x3 x4

贡献为 (x1+z)*(num1+numz)+(x2+z)*(num2+z)+(x3+z)*(num3+numz) ....
答案 = x1*num1+x1numz+znum1+znumz +...
= sigama(xi*numi) + sigama(xi)*numz + siagma(numi)*z+ count *z*numz 公式

这样就只要记录一下每一个符合条件的 前缀和
用着个前缀来更新答案就行了 不过要注意要经常取mod

求所有符合条件的三元组的 价值总和
其实我们发现只有 x z 奇偶性相同时才能累加上去
我们开一个前缀 s[ t ][ c ][ ] 表示 奇偶性为 t ,颜色 为 c 的累加上去
0 表示 这样数的个数 count
1 表示 sigama(xi)
2 表示 sigama(numi)
3 表示 sigama(xi * numi)

然后套在公式上就行了

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <string>
 6 #include <algorithm>
 7 #include <iostream>
 8 #include <iomanip>
 9 #define ll long long
10 using namespace std ;
11
12 const ll maxn = 100011,mod = 10007 ;
13 int n,m,ans ;
14 int number[ maxn ],color[ maxn ],s[2][maxn][4] ;
15
16 inline ll read()
17 {
18     char ch = getchar() ;
19     int x = 0,f =1 ;
20     while(ch<'0'||ch>'9')  { if(ch=='-') f = -1 ; ch = getchar() ; }
21     while(ch>='0'&&ch<='9') {x = x*10 + ch - 48 ; ch = getchar() ; }
22     return x * f ;
23 }
24
25 inline void init()
26 {
27     n = read() ; m = read() ;
28     for(int i=1;i<=n;i++) number[ i ] = read(),number[ i ] %= mod ;
29     for(int i=1;i<=n;i++) color[ i ] = read() ;
30 }
31
32 inline void work()
33 {
34     ans = 0 ;
35     for(int i=1;i<=n;i++)
36     {
37         int t = i%2,c = color[ i ],z = i% mod ,numz = number[ i ] % mod ;
38         int count = s[t][c][0] ,sumx = s[t][c][1],sumnum = s[t][c][2],sumx_num = s[t][c][3] ;
39         ans = ( ans + count * z % mod *numz % mod ) % mod ;
40         ans = ( ans + sumx*numz % mod) % mod ;
41         ans = ( ans + sumnum * z % mod ) %mod ;
42         ans = ( ans + sumx_num ) % mod ;
43          s[t][c][0]++ ;             s[t][c][0] %=mod ;
44          s[t][c][1]+=z ;            s[t][c][1] %=mod ;
45         s[t][c][2]+=numz;          s[t][c][2] %=mod ;
46         s[t][c][3]+=z*numz % mod ; s[t][c][3] %=mod ;
47     }
48 }
49
50 inline void output()
51 {
52     printf("%d\n",ans) ;
53 }
54
55 int main()
56 {
57     init() ;
58     work() ;
59     output() ;
60     return 0 ;
61 }

转载于:https://www.cnblogs.com/third2333/p/7064473.html

洛谷P2671 求和 数学 前缀和相关推荐

  1. 洛谷P2671 求和 [数论]

    题目传送门 求和 格式难调,题面就不放了. 分析: $ZYYS$的一道题. 很显然是大力推公式.我们分析一下题目,实际上限制条件就是:下标同奇偶且颜色相同的数,那么我们先拿这个公式$(x+z)*(nu ...

  2. 洛谷试炼场-简单数学问题-二分查找

    洛谷试炼场-简单数学问题 P1147 连续自然数和 题解: 本题给定一个数n,求连续自然数的和为n,用一个前缀数组,low_bound,upper_bound,查找是否是同一个数.O(nlog(n)) ...

  3. 洛谷 P3216 [HNOI2011]数学作业

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P3216 [HNOI2011]数学作业 题目 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正 ...

  4. 洛谷P2433 小学数学 N 合一

    写完了这道题结果脑子断电把浏览器关了......打开一看 没保存 寄 传送门:[深基1-2]小学数学 N 合一 - 洛谷 第一题 第二题 第三题 这几道题没啥好说的,直接输出就彳亍了 cout < ...

  5. [洛谷]P1978 集合 (#数学 -1.3)(#STL -1.1)

    题目描述 集合是数学中的一个概念,用通俗的话来讲就是:一大堆数在一起就构成了集合.集合有如 下的特性: •无序性:任一个集合中,每个元素的地位都是相同的,元素之间是无序的. •互异性:一个集合中,任何 ...

  6. 一中OJ #3509 七的倍数 [USACO Jan16,洛谷P3131] | 同余前缀和 | 解题报告

    一中OJ | #3509 七的倍数 [USACO Jan16 Silver , Subsequences Summing to Sevens] 时限 1000MS/Case 内存 128MB/Case ...

  7. 洛谷P2699 【数学1】小浩的幂次运算

    题目思路 :(这应该是普及题里面很水的存在了)暴力判断, 只不过有个小坑就是当sum*w的时候会溢出(long)的问题. 所以我们要改进一下判断条件,从sum * w > r 变为 sum &g ...

  8. 【数学1】基础数学问题 - 题单 - 洛谷

    这里写目录标题 [[数学1]基础数学问题 - 题单 - 洛谷](https://www.luogu.com.cn/training/117) [P1143 进制转换](https://www.luog ...

  9. 洛谷---数学---数论

    洛谷---数学---数论 http://www.luogu.org 单看 数学 数论 的书,纯理论,看不进,决定还是从做题开始,不明白的地方再看书,以上机训练,促进看书,同样 从 简单--->难 ...

  10. 洛谷 P3384 【模板】树链剖分-树链剖分(点权)(路径节点更新、路径求和、子树节点更新、子树求和)模板-备注结合一下以前写的题目,懒得写很详细的注释...

    P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...

最新文章

  1. Windows系统下的 vbs病毒生成器使用方法!
  2. 如果从Silverlight 读取本地GB2312格式的xml文件
  3. 【51CTO/BBS】请教: SQL里有没有字符串组合Join的函数??
  4. CocoaPods更新遇redefinition问题及其它问题汇总
  5. [zjoi2015]幻想乡战略游戏
  6. 删除当前文件夹下特定名称文件
  7. jeecg标签属性exp 用法
  8. 解决Sql Server服务远程过程调用失败
  9. 【To Do!】程序员面试金典——18.8子串判断
  10. DeveloperAppleHelp
  11. 如何保障“双11”期间亿万买家和卖家愉快地聊天
  12. protocol buffer生成C语言的实现
  13. 测试系统工程师TSE的四项基本技能
  14. 阿里云ECS服务器修复漏洞
  15. 第26课:个人高效的秘籍 OKR 工作法
  16. 直播性能测试工具汇总
  17. 英语语法总结--状语从句
  18. ie浏览器调用本地文件无反应_ie浏览器打不开没反应
  19. 提拔!知名教授,副部长级
  20. 修改mq服务器ip,将外部IP地址绑定到Rabbit MQ服务器

热门文章

  1. Single Number 只出现一次的数字 python实现 - ...
  2. python Tk()、Frame()、TopLevel()用法
  3. Deep learning-based CSI Feedback for Beamforming 2
  4. heeds matlab,Isight FD4-CAE优化软件 与HEEDS对比
  5. linux桌面系统开启wifi,8089B开启Wifi的方法(默认的红旗linux系统)
  6. 代码整洁之道读书笔记----第一章---综述--第二节-整洁代码和我们的孩子
  7. perl软件使用报错总结
  8. 凸优化学习笔记(五):凸优化算法、无约束优化算法、有约束优化算法
  9. POJ1321-Chess Problem(dfs基础题)
  10. python list平均数_数据分析之Python干货笔记