洛谷P2671 求和 [数论]
求和
格式难调,题面就不放了。
分析:
$ZYYS$的一道题。
很显然是大力推公式。我们分析一下题目,实际上限制条件就是:下标同奇偶且颜色相同的数,那么我们先拿这个公式$(x+z)*(num_x+num_z)$套三个变量$x,y,z$推一下:
$(x+z)*(num_x+num_z)=num_x*x+num_z*z+num_x*z+num_z*x$
$(x+y)*(num_x+num_y)=num_x*x+num_y*y+num_x*y+num_y*x$
$(z+y)*(num_z+num_y)=num_z*z+num_y*y+num_z*y+num_y*z$
然后求和得到:
$tot=num_x*(x+y+z)+num_x*x+num_y*(x+y+z)+num_y*y+num_z*(x+y+z)+num_z*z$
如果我们把它变成普适公式,就是:(其中的$cnt$表示元素个数)
$tot=\sum_x (num_x*x*(cnt-2))+\sum_x x*\sum_x num_x$
当然,这只是同一种颜色在同奇偶的情况下的和,在扩大到全部范围,那就是:
$ans=\sum_{color}\sum_{i\ mod\ 2}tot$
$=\sum_{color}\sum_{i\ mod\ 2}(\sum_x (num_x*x*(cnt-2))+\sum_x x*\sum_x num_x)$
用前缀和优化一下,然后求和就行了。
代码略丑。
Code:
//It is made by HolseLee on 23rd Oct 2018
//Luogu.org P2671
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod (10007)
using namespace std; typedef long long ll;
const ll N=1e5+;
ll n,m,a[N],col[N],num[N][],sum[N][],suma[N][],cnt[N][],ans;
//a就是题目中的数值,num是下标和,sum是a[i]*i的和
//suma是a的和,cnt是同奇偶且颜色相同的元素个数 int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(ll i=; i<=n; ++i) cin>>a[i];
for(ll i=; i<=n; ++i) cin>>col[i];
for(ll i=; i<=n; ++i) {
(num[col[i]][i&]+=i)%=mod;
(suma[col[i]][i&]+=a[i])%=mod;
cnt[col[i]][i&]++;
(sum[col[i]][i&]+=(a[i]*i%mod))%=mod;
}
for(ll i=; i<=m; ++i)
for(ll j=; j<=; ++j) {
ans=(ans+(suma[i][j]*num[i][j])%mod+(sum[i][j]*(cnt[i][j]-))%mod)%mod;
}
cout<<ans<<'\n';
return ;
}
洛谷P2671 求和 [数论]的更多相关文章
- 洛谷 P2671 求和 解题报告
P2671 求和 题目描述 一条狭长的纸带被均匀划分出了\(n\)个格子,格子编号从\(1\)到\(n\) .每个格子上都染了一种颜色\(color_i\)用\([1,m]\)当中的一个整数表示),并 ...
- 洛谷 P2671 求和
题目描述 一条狭长的纸带被均匀划分出了nn个格子,格子编号从11到nn.每个格子上都染了一种颜色color\_icolor_i用[1,m][1,m]当中的一个整数表示),并且写了一个数字number\ ...
- NOIP2015 普及组 洛谷P2671 求和 (数学)
一道数学题...... 采用分组的思想,我们要统计答案的数对满足两个条件:同奇偶,同颜色.所以可以按这两个要求分组. 然后就是分组处理了,对于每组(有k个数),这里面的任意两对数都是满足条件的,可推出 ...
- 洛谷P1007 独木桥 [数论]
题目传送门 独木桥 题目背景 战争已经进入到紧要时间.你是运输小队长,正在率领运输部队向前线运送物资.运输任务像做题一样的无聊.你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在 ...
- 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和
求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ...
- 洛谷——P1630 求和
P1630 求和 题目描述 求1^b+2^b+……+a^b的和除以10000的余数. 输入输出格式 输入格式: 第一行包含一个正整数N,表示共有N组测试数据: 接下来N行,每行包含两个正整数a和b. ...
- 洛谷P3935 Calculation [数论分块]
题目传送门 格式难调,题面就不放了. 分析: 实际上这个就是这道题的升级版,没什么可讲的,数论分块搞就是了. Code: //It is made by HolseLee on 18th Jul 20 ...
- 洛谷$P5330\ [SNOI2019]$数论 数论
正解:数论 解题报告: 传送门$QwQ$ ,,,这题还蛮妙的$QwQ$(,,,其实所有数论题对我来说都挺妙的$kk$然后我真的好呆昂我理解了好久$QAQ$ 考虑先建$Q$个点,编号为$[0,Q)$,表 ...
- [洛谷2671]求和<前缀和&模拟>
题目链接:https://www.luogu.org/problemnew/show/P2671 这是noip2015普及组的第三题,谁说的普及组的题就一定水的不行,这道题就比较有意思的 这道题的暴力 ...
随机推荐
- ZeroMQ API(六) 代理
1.zmq_proxy(3) 1.1 名称 zmq_proxy - 开始内置ZMQ代理 1.2 概要 int zmq_proxy(const void * frontend,const void * ...
- 逻辑控制之While循环控制器(While Controller)
测试环境 apache-jmeter-3.0 1. 添加While Controller 右键线程组->添加->逻辑控制器->响应断言 2. 控制面板介绍 添加后,面板如下 ...
- Swift动态添加UIImageView并添加事件
Swift动态添加UIImageView并添加事件: 1. 创建UIImageView实例,并进行初始化 2. 设置UIImageView的用户交互属性userInteractionEnabled为T ...
- javascript里你绝对用的上的字符分割函数--原创
// 在数组内字符为未知情况下,合并和分割的解决方案 var data = [['your name', 'myvalue'], ['myr name', 'thivalue']]; function ...
- [转载]Node入门 » 一本全面的Node.js教程
http://www.nodebeginner.org/index-zh-cn.html 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & ...
- 小玩意1-实时获取IE浏览器输入框URL地址
主要参考http://www.cnblogs.com/scrat/archive/2012/09/12/2682626.html 主要思路如下: 通过 FindWindow() FindWindowE ...
- Oracle嵌套表
一.介绍 1.定义 嵌套表是表中之表.一个嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行.在某种意义上,它是在一个表中存储一对多关系的一种方法. ...
- 简明Python教程 ~ 随书笔记
本文是阅读<简明Python教程>所做的随书笔记,主要是记录一些自己不熟悉的用法,或者所看到的比较有意思的内容,本书英文版A Byte of Python, 中文译版 简明Python教程 ...
- ASP.NET mvc下在Controller下action的跳转方式
在ASP.NET mvc下,action有多种挑战方式: return RedirectToAction("Index");//一个参数时在本Controller下 如果Redir ...
- VS2010 项目属性的默认包含路径设置方法
VS2010 项目属性的默认包含路径设置方法 分类: c++小技巧2014-01-10 10:16 1358人阅读 评论(0) 收藏 举报 c++ 有两种方法可以设置vs2010的默认包含路径 方法一 ...