洛谷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普及组的第三题,谁说的普及组的题就一定水的不行,这道题就比较有意思的 这道题的暴力 ...
随机推荐
- http协议POST请求头content-type主要的四种取值
介绍: 在此之前对content-type理解很肤浅,因此必须记录下来现在的理解,以便回顾 Content-Type,从名字上可以理解为内容类型,但在互联网上专业术语叫“媒体类型”,即MediaTyp ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第三部分(Page 8)
编写你的第一个 Django app,第三部分(Page 8)转载请注明链接地址 本页教程接前面的第二部分.我们继续开发 web-poll app,我们会专注于创建公共接口上 -- "视图& ...
- spring-boot添加自定义拦截器
spring-boot中的WebMvcConfigurerAdapter类提供了很多自定义操作的方法,先贴出来大家看看 package org.springframework.web.servlet. ...
- CSS只改变背景透明度,不改变子元素透明度
一般情况下,我们可以使用css的opcity属性改变某个元素的透明度,但是其元素下的子元素的透明度也会被改变,即使对子元素重新定义也没有用,例如: <div style="opacit ...
- [csp-201509-3]模板生成系统
#include<bits/stdc++.h> using namespace std; ; string a[N],b[N],c[N]; int main() { //freopen(& ...
- 20155310 2016-2017-2 《Java程序设计》第六周学习总结
20155310 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 4.1 Y86指令集体系结构 •有8个程序寄存器:%eax.%ecx.%edx.%ebx.% ...
- HDU 2097 Sky数 进制转换
解题报告:这题就用一个进制转换的函数就可以了,不需要转换成相应的进制数,只要求出相应进制的数的各位的和就可以了. #include<cstdio> #include<string&g ...
- python Linux flask uwsgi nginx 在centos7.3部署
0.直接上uwsgi和nginx安装命令 linux 安装uwsgi yum groupinstall "Development tools" yum install zlib-d ...
- rabbitmq之后台管理和用户设置(三)
前言 前面介绍了erlang环境的安装和rabbitmq环境安装,接下来介绍rabbitmq的web管理和用户设置. 启用后台管理插件 通过后台管理插件我们可以动态监控mq的流量,创建用户,队列等. ...
- Sublime2编译Python程序EOFError:EOF when reading a line解决方法【转】
在Sublime2中编译运行Python文件时,如果代码中包含用户输入的函数时(eg. raw_input()),Ctrl+b编译运行之后会提示以下错误: 解决方法:安装SublimeREPL打开Su ...