[洛谷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 $ 就是一个最普通的板子.那现在考虑怎么求题目中的结果. 树上差分可 ...
随机推荐
- C语言入门理解指针
本文章为本人原创,适合于刚入坑C语言,对于指针的定义和用法模糊不清的同学,如有不正,请各位指出. 从根本来说,指针变量也是变量,只是int变成了int *,以此类推.只不过指针变量里面放的内容是普通变 ...
- windows下tensorflow/objectdetection API环境搭建(基于tensorflow1.14和python3.6)
此前就听闻室友说tensorflow在windows下坑很多,这次终于亲身领会到了.以下是参考网上大佬的教程以及自己的踩坑史总结出的有效步骤(亲测有效) 1.下载objectdetection所在的m ...
- 手机浏览器自动播放视频video(设置autoplay无效)的解决方案
1.问题的提出 某一天接了个需求,需要在手机的H5页面内加入视频,我开开心心做完,准备交付的时候,问题来了,PM想要用户一进入页面,视频就开始播放,不需要用户手动点击. 2.尝试解决 加autopla ...
- html+css+js+Hbuilder开发一款安卓APP,根本不用学Android开发!
我们知道,要做一款安卓APP,咱们得先学安卓开发语言,例如java,前端后端.那么没有这些开发语言基础,咱们怎么做呢?其实现在有比较好的开发方案就是做webAPP,咱们可以用web前端知识构建安卓客户 ...
- Webpack和Gulp,Webpack和Gulp的基本区别:
Gulp和Webpack的基本区别: gulp可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,加 ...
- Ubuntu部署Asp.net core网站无法访问
前几天应工作需要,在阿里云上部署一个测试站点.本以为分分钟的事情,没想到打脸了. 当时直接新建一个webapi项目,publish后直接上传到阿里云,随后设置nginx转发网站端口5000. 接着打开 ...
- 4000字干货长文!从校招和社招的角度说说如何准备Java后端大厂面试?
插个题外话,为了写好这篇文章内容,我自己前前后后花了一周的时间来总结完善,文章内容应该适用于每一个学习 Java 的朋友!我觉得这篇文章的很多东西也是我自己写给自己的,比如从大厂招聘要求中我们能看到哪 ...
- 【JDK】JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...
- 微博立场检测 60分Baseline
AI研习社最近举办了一个比赛--微博立场检测,实际上就是一个NLP文本分类的比赛 Baseline-FastText 我的Baseline方法用的是pkuseg分词+FastText,最好成绩是60, ...
- npm 安装包总结
1.前端可视化json:vue-json-viewer; 2.富文本编辑: vue-quill-editor; https://www.cnblogs.com/ZaraNet/p/1020922 ...