19_05_21校内训练[简单序列]

题意

定义一个序列的价值为其排序后所有位置(从1开始)乘以该位置元素的值的和,即∑i*ai。求一个长度为n的序列的所有连续子序列的价值和。


思考

一个序列的价值可看做所有的元素的和,加上所有无序二元组中较大的元素的值。

因此答案分为两部分:
1.所有可能序列的元素和的和。考虑一个点,算出有多少区间包含它既可。

2.无序二元组较大的元素的值。不难得出两个点之间的贡献是线性的,因此用树状数组维护所有小于等于某个数的位置和既可。正反各做一遍。


代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long int ll;
 4 const ll maxn=2E5+5;
 5 const ll mod=1E9+7;
 6 ll n,a[maxn],ans,m,tim[maxn];
 7 struct BIT
 8 {
 9     ll t[maxn];
10     int lowbit(int x)
11     {
12         return x&-x;
13     }
14     void add(int x,ll y)
15     {
16         while(x<=m)
17         {
18             t[x]=(t[x]+y)%mod;
19             x+=lowbit(x);
20         }
21     }
22     ll ask(int x)
23     {
24         if(x==0)
25             return 0;
26         ll sum=0;
27         while(x)
28         {
29             sum=(sum+t[x])%mod;
30             x-=lowbit(x);
31         }
32         return sum;
33     }
34     void clear()
35     {
36         for(int i=1;i<=m;++i)
37             t[i]=0;
38     }
39 }T;
40 void get(int g)
41 {
42     for(int i=1;i<=n;++i)
43     {
44         ans=(ans+a[i]*T.ask(a[i]-g)%mod*(n-i+1))%mod;
45         T.add(a[i],i);
46     }
47 }
48 int main()
49 {
50     ios::sync_with_stdio(false);
51     cin>>n;
52     for(int i=1;i<=n;++i)
53     {
54         cin>>a[i];
55         m=max(m,a[i]);
56     }
57     for(int i=1;i<=n;++i)
58         ans=(ans+a[i]*((n-i+1)+i+(n-i)*(i-1)%mod-1))%mod;
59     get(1);
60     T.clear();
61     reverse(a+1,a+n+1);
62     get(0);
63     cout<<ans<<endl;
64     return 0;
65 }

原文地址:https://www.cnblogs.com/GreenDuck/p/10900931.html

时间: 2024-10-26 19:55:31

19_05_21校内训练[简单序列]的相关文章

19_05_21校内训练[边上的整点]

题意 有一个n条横线m条竖线的正方形网格,求出(三点在整点上的)三角形的边上整点个数的期望.要求线性. 思考 ans=所有三角形的边经过的整点总个数÷所有三角形的整点个数.方便起见,默认三角形的三条边是有顺序但没方向的. 记cnt(i,j)表示平面上第i个点与第j个点连线经过了几个整点,范围是(    ],易证cnt(i,j)=gcd(|xi-xj|,|yi-yj|). 1.三角形个数:先枚举一条边,再看有多少个点能与它围成三角形.即 第一项表示所有的三个点组合,第二项表示去掉了退化成一条边的三

Pytorch基础——使用 RNN 生成简单序列

一.介绍 内容 使用 RNN 进行序列预测 今天我们就从一个基本的使用 RNN 生成简单序列的例子中,来窥探神经网络生成符号序列的秘密. 我们首先让神经网络模型学习形如 0^n 1^n 形式的上下文无关语法.然后再让模型尝试去生成这样的字符串.在流程中将演示 RNN 及 LSTM 相关函数的使用方法. 实验知识点 什么是上下文无关文法 使用 RNN 或 LSTM 模型生成简单序列的方法 探究 RNN 记忆功能的内部原理 二.什么是上下文无关语法 上下文无关语法 首先让我们观察以下序列: 01 0

「csp校内训练 2019-10-24」解题报告

「csp校内训练 2019-10-24」解题报告 T1.猴猴吃苹果 \(Description\) 猴猴最喜欢在树上玩耍,一天猴猴又跳上了一棵树,这棵树有 \(N \ (N \leq 50000)\) 个苹果,每个苹果有一个编号,分别为 \(0\) ~ \(N - 1\) 它们之间由 \(N-1\) 个树枝相连,猴猴可以从树枝的一端爬到树枝的另一端,所以猴猴可以从任意一个苹果的位置出发爬到任意猴猴想去的苹果的位置. 猴猴开始在编号为 \(K \ (K < N)\) 的苹果的位置,并且把这个苹果吃

「csp校内训练 2019-10-30」解题报告

「csp校内训练 2019-10-30」解题报告 T1.树 题目链接(逃) \(Description\): 现在有一棵树,共 \(N\) 个节点. 规定:根节点为 \(1\) 号节点,且每个节点有一个点权. 现在,有 \(M\) 个操作需要在树上完成,每次操作为下列三种之一: \(1 \ x \ a\):操作 \(1\),将节点 \(x\) 点权增加 \(a\). \(2 \ x \ a\):操作 \(2\),将以节点 \(x\) 为根的子树中所有点的权值增加 \(a\). \(3 \ x\)

9.3校内训练

今天做的一套题..很遗憾,就做了前两题,还打挂了.. 第一题大意是给一堆红绿蓝卡,然后两个不同颜色的变成第三个或者两个相同颜色变成一个,求最后可能的颜色. 简单选择结构练习题,过. 第二题是一个数列,选出子集使得平均数减中位数最大. 容易证明子集一定是奇数个,枚举中位数,发现前面尽量离它近,后面尽量远,然后证明平均数与前后选的个数的图像单峰,三分出答案就好了. 第三题是好几串数字序列,然后求有多少四位数,重复位(比如22看作2,而232不行)压成一位,是所有序列的子序列. 预处理记下每个数字序列

利用tensorflow训练简单的生成对抗网络GAN

对抗网络是14年Goodfellow Ian在论文Generative Adversarial Nets中提出来的. 原理方面,对抗网络可以简单归纳为一个生成器(generator)和一个判断器(discriminator)之间博弈的过程.整个网络训练的过程中, 两个模块的分工 判断器,直观来看就是一个简单的神经网络结构,输入就是一副图像,输出就是一个概率值,用于判断真假使用(概率值大于0.5那就是真,小于0.5那就是假) 生成器,同样也可以看成是一个神经网络模型,输入是一组随机数Z,输出是一个

[3.10校内训练赛]

真的报警啦,hzwer又出一堆丧题虐人啦..... ------------------------------------------- A.[poj-1190]生日蛋糕 要做一个m层的蛋糕,每一层有高度和半径,且要分别比它上面的那一层的高度和半径大至少一,给定总体积n,求最小的侧面和顶上的面积之和m<=20,n<=10000 搜索....但是要加上比较强的剪枝. 1.如果此时的半径和高度无法建出剩余体积那么大的蛋糕,剪掉.这种情况我们不考虑半径和高度的减小,直接用((r-1)^2+(h-1

算法训练 摆动序列

时间限制:1.0s   内存限制:512.0MB 问题描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 1. 序列中的所有数都是不大于k的正整数: 2. 序列中至少有两个数. 3. 序列中的数两两不相等: 4. 如果第i – 1个数比第i – 2个数大,则第i个数比第i – 2个数小:如果第i – 1个数比第i – 2个数小,则第i个数比第i – 2个数大. 比如,当k = 3时,有下面几个这样的序列: 1 2 1 3 2 1 2 1 3 2 3 2 3 1 3 1 3 2 一共有8种

数字信号处理MATLAB简单序列

数字信号处理应用的几个基本序列: 1 单位样本序列 function mainImseq() clc clear disp('生成抽样序列'); y=imseq(1,1,5); %调用样本函数,此时序列下标以1开头(1~5之间5个数,下标为1的抽样值为1) %子函数imseq:抽样函数 function [x,n]=imseq(n0,n1,n2) n=[n1:n2]; x=[(n-n0) ==0 ] 2 单位阶越序列 产生u(n) function mainImseq() clc clear d