[洛谷2671]求和<前缀和&模拟>
题目链接:https://www.luogu.org/problemnew/show/P2671
这是noip2015普及组的第三题,谁说的普及组的题就一定水的不行,这道题就比较有意思的
这道题的暴力想法就是双重循环寻找所有情况
但是这会爆时间的
--------------------------
做这题,需要找到一个结论
y-x=z-y的意思其实是x+z是偶数,也就是x,z是同奇偶的
这个结论有了当然就可以暴力了,虽然不能过
正解的思路
我们首先对每一个数来查找他的贡献。。。
但是单纯的查找贡献可能就和暴力一样了,所以我们针对第z个数,查找在他之前的数,和他配对后对答案的贡献。因为这样还是一定是可以达到目标配对数,不重不漏
对于一组x,z(1<=x<z),z的贡献是(xi+z)*(num[xi]+num[z])
然后z的总贡献就是Σ((xi+z)*(num[xi]+num[z]))其中xi满足xi和z同奇偶并且颜色相同
把这个式子打开就是
Σ(xi*num[i])+Σ(xi)*num[z]+Σ(num[xi])*z+count*z*num[z]
所以正解其实就是不断的加上这个式子
接下来一个问题就是如何储存这些Σ。。。
当然很容易想到的就是前缀和了
我们定义st[w1][w2][4]数组
w1为0表示偶数,1表示奇数
w2表示颜色
最后那一维:
0 表示奇偶颜色相同的情况下,满足条件的个数
1 表示奇偶颜色相同的情况下,满足条件的数的序号和
2 表示奇偶颜色相同的情况下,满足条件的数的价值和
3 表示奇偶颜色相同的情况下,满足条件的数的(价值*序号)的和
这是一个暴力打法,部分分
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstdlib>
#define maxn 100005
#define mod 10007
using namespace std; int num[maxn],col[maxn];
int n,x,z,m,ans; int main(){
cin>>n>>m;
for(int i=;i<=n;i++){
cin>>num[i];
}
for(int i=;i<=n;i++)cin>>col[i];
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j+=){
if(col[i]==col[j]){
ans=(ans+(((i+j)%mod)*((num[i]+num[j]))%mod)%mod)%mod;
}
}
}cout<<ans;
}
这是AC的前缀和版本
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<queue>
#define maxn 100005
#define mod 10007
#define ll long long
using namespace std; int st[][maxn][];
int col[maxn],num[maxn],n,m;
ll ans; int read() {
int xx=,ff=;char ch=getchar();
while(ch<''||ch>'') {if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<='') {xx=xx*+ch-'';ch=getchar();}
return xx*ff;
} int main() {
n=read();
m=read();
for(int i=; i<=n; i++)num[i]=read()%mod;
for(int i=; i<=n; i++)col[i]=read();
for(int i=; i<=n; i++) {
int w1=i%,w2=col[i];
int x=i%mod,v=num[i]%mod;
int a,b,c,d;
//同类数量 同类的序号和 同类的价值和 同类的价值*序号和
a=st[w1][w2][]%mod;b=st[w1][w2][]%mod;c=st[w1][w2][]%mod;d=st[w1][w2][]%mod;
st[w1][w2][]++; st[w1][w2][]%=mod;
st[w1][w2][]+=x; st[w1][w2][]%=mod;
st[w1][w2][]+=v; st[w1][w2][]%=mod;
st[w1][w2][]+=x*v%mod; st[w1][w2][]%=mod;
ans=(ans%mod+d%mod)%mod;
ans=(ans%mod+((a*x%mod)*v)%mod)%mod;
ans=(ans%mod+(b*v)%mod)%mod;
ans=(ans%mod+(c*x)%mod)%mod;
}
printf("%lld",ans);
}
[洛谷2671]求和<前缀和&模拟>的更多相关文章
- 洛谷 P5594 【XR-4】模拟赛
洛谷 P5594 [XR-4]模拟赛 洛谷传送门 题目描述 X 校正在进行 CSP 前的校内集训. 一共有 nn 名 OIer 参与这次集训,教练为他们精心准备了 mm 套模拟赛题. 然而,每名 OI ...
- 洛谷P3434 [POI2006]KRA-The Disks [模拟]
题目传送门 KRA 题目描述 For his birthday present little Johnny has received from his parents a new plaything ...
- 【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)
题目来源:洛谷P3952 思路 纯模拟没啥可说的了 果然好复杂 参考了你谷一个40行代码 代码 #include<iostream> #include<cstdio> #inc ...
- 【洛谷】【前缀和+st表】P2629 好消息,坏消息
[题目描述:] uim在公司里面当秘书,现在有n条消息要告知老板.每条消息有一个好坏度,这会影响老板的心情.告知完一条消息后,老板的心情等于之前老板的心情加上这条消息的好坏度.最开始老板的心情是0,一 ...
- 洛谷 P2671 求和 解题报告
P2671 求和 题目描述 一条狭长的纸带被均匀划分出了\(n\)个格子,格子编号从\(1\)到\(n\) .每个格子上都染了一种颜色\(color_i\)用\([1,m]\)当中的一个整数表示),并 ...
- 洛谷P2671 求和 [数论]
题目传送门 求和 格式难调,题面就不放了. 分析: $ZYYS$的一道题. 很显然是大力推公式.我们分析一下题目,实际上限制条件就是:下标同奇偶且颜色相同的数,那么我们先拿这个公式$(x+z)*(nu ...
- 洛谷P4623 [COCI2012-2013#6] BUREK [模拟]
题目传送门 BUREK 格式难调,题面就不放了. 分析: 一道比较有思维难度的模拟题. 首先我们可以想到,对于一个三角形,可以画出一个最小矩形使得这个三角形被完全包围,并且这个矩形的边平行于坐标轴(图 ...
- 洛谷P1039 侦探推理(模拟)
侦探推理 题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情 ...
- 洛谷 P4427 求和
传送门啦 思路: 开始不肿么容易想到用倍增,但是想到需要求 $ Lca $ ,倍增这种常数小而且快的方法就很方便了.求 $ Lca $ 就是一个最普通的板子.那现在考虑怎么求题目中的结果. 树上差分可 ...
随机推荐
- 用table类型布局一个新闻网页
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- spring——AOP原理及源码(五)
前情回顾: 在上一篇中,通过 wrapIfNecessary 方法,我们获取到了合适的增强器(日志方法)与业务类进行包装,最终返回了我们业务类的代理对象. 本篇我们将从业务方法的执行开始,看看增强器( ...
- 必备技能二、es6
一.ES6模块 ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量. ES6 的模块化分为导出(export) @与导入(import)两个模块. 特点 ES6 的 ...
- Z字头:逐浪字库入选微软全球主流字体厂商列表
北京时间2019年6月20日消息: 来自中国的字库厂商--逐浪,成功获得全球软件巨擎.电子出版与数字印刷权威平台-微软的认证,成为获此国际认证的首家字体厂商. 微软公司为了更好的规范国际字库与出版,制 ...
- openwrt sdk 添加软件包 Makefile 写法
参考 https://openwrt.org/start?id=docs/guide-developer/packages ,英文稍好点的自己看吧,我写出来也就是方便,英文不好的人看. 软件包的来源, ...
- JAVA生成EXCEL模板
JAVA生成excel模板,支持1.必填字段前加 红色 * 2.定义可选值下拉列表 valList3.定义名称并通过名称设置可选值 refName(名称在sheet2,sheet2自动隐藏)4.支持设 ...
- plantUML最佳实践
plantUML 使用plantUML中的活动图用来画流程图很好用; 但类图等就不很好用; 个人体会如下: • 时序图 推荐 • 用例图 一般 • 类 图 不推荐, 用Visual Paradigm或 ...
- 【Python】2.13学习笔记 数学函数和随机函数
我死了,今天看课看过头了,忘了发作业,被典明批评 而且化学作业还是瞎搞的,直接就发了 我觉得我已经提前死亡了,现在不死亡,开学也会的 函数 挺容易的,有很多语言之间重合的部分 注意 在使用某些数学函数 ...
- c#序列化和反系列化json与类型对象转换
先添加程序集: System.Web.Extensions(在 System.Web.Extensions.dll 中) 引用:using System.Web.Script.Serializati ...
- 基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
目录 1. 概述 2. 实现 2.1. 原理 2.2. 核心代码 2.3. 第二种优化 3. 结果 1. 概述 我在之前的文章<基于均值坐标(Mean-Value Coordinates)的图像 ...