20181030NOIP模拟赛T3
2017种树
2017共有N棵树从0到N-1标号。现要把这些树种在一条直线上,第i棵树的种植位置X[i]如下确定:
X[0] = X[0] MOD L;
X[i] = (X[i-1]*A+B) MOD L。
每棵树种植的费用,是所有标号比它小的树与它的距离之和。2017请你计算各棵树的费用之积,最后对1000000007取余。
输入:
共五行:
第一行为N
第二行为L
第三行为X[0]
第四行为A
第五行为B
输出:
总费用
Input1:
5
10
3
1
1
Output1:
180
样例解释:
5棵树的位置分别为: 3, 4, 5, 6, 7.
费用分别为: 1, 3, 6, 10. (从第一棵树开始)
总费用为: 1 × 3 × 6 × 10 = 180.
数据范围:
10%的数据:N<=10;
60%的数据:N<=5×10^4;
100%的数据:N,L<=200000; X[0] ,A, B<=10^9.
思路:
权值线段树好题
一个点和他前面某个点的距离
等于这个点坐标减去前面那个点的坐标
那么,前面所有点到这个点的距离和
等于前面这些点的数量*当前点坐标-前面点的坐标和
对于这个问题,我们开一颗权值线段树维护即可
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rs 262143
#define p 1000000007
#define rii register int i
#define rij register int j
#define int long long
using namespace std;
long long n,l1,y[],a,b,ans;
struct tree{
long long cnt,sum;
}x[rs*];
void add(int wz,int l,int r,int bh)
{
if(wz==l&&wz==r)
{
x[bh].cnt++;
x[bh].sum+=wz;
return;
}
int mid=(l+r)/;
if(wz<=mid)
{
add(wz,l,mid,bh*);
}
else
{
add(wz,mid+,r,bh*+);
}
x[bh].cnt=x[bh*].cnt+x[bh*+].cnt;
x[bh].sum=x[bh*].sum+x[bh*+].sum;
}
tree query(int l,int r,int nl,int nr,int bh)
{
if(l<nl)
{
l=nl;
}
if(r>nr)
{
r=nr;
}
if(nl==l&&nr==r)
{
return x[bh];
}
int mid=(nl+nr)/;
tree kkk;
tree lzn;
lzn.cnt=,lzn.sum=,kkk.sum=,kkk.cnt=;
if(l<=mid)
{
kkk=query(l,r,nl,mid,bh*);
}
if(r>mid)
{
lzn=query(l,r,mid+,nr,bh*+);
}
kkk.cnt+=lzn.cnt;
kkk.sum+=lzn.sum;
return kkk;
}
signed main()
{
freopen("gg.in","r",stdin);
freopen("gg.out","w",stdout);
scanf("%lld%lld%lld%lld%lld",&n,&l1,&y[],&a,&b);
y[]%=l1;
add(y[],,rs,);
ans=;
for(int i=;i<=n-;i++)
{
long long an=;
y[i]=(y[i-]*a+b)%l1;
tree kkk;
kkk=query(,y[i],,rs,);
an+=kkk.cnt*y[i];
an%=p;
an-=kkk.sum;
an+=p;
an%=p;
kkk=query(y[i],l1-,,rs,);
an+=kkk.sum;
an-=kkk.cnt*y[i];
an+=p;
an%=p;
ans*=an;
ans%=p;
add(y[i],,rs,);
}
printf("%lld\n",ans);
}
20181030NOIP模拟赛T3的更多相关文章
- 体育成绩统计——20180801模拟赛T3
体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...
- 20180520模拟赛T3——chess
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...
- 20161005 NOIP 模拟赛 T3 解题报告
subset 3.1 题目描述 一开始你有一个空集,集合可以出现重复元素,然后有 Q 个操作 1. add s 在集合中加入数字 s. 2. del s 在集合中删除数字 s.保证 s 存在 3. c ...
- ztz11的noip模拟赛T3:评分系统
代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 20180711模拟赛T3——聚变
文件名: fusion 题目类型: 传统题 时间限制: 3秒 内存限制: 256MB 编译优化: 无 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程. 我们将她研究的过程简化. 核 ...
- 4.26 省选模拟赛 T3 状压dp 差分求答案
LINK:T3 比较好的题目 考试的时候被毒瘤的T2给搞的心态爆炸 这道题连正解的思路都没有想到. 一看到题求删除点的最少个 可以使得不连通. 瞬间想到最小割 发现对于10分直接跑最小割即可. 不过想 ...
- NOIP欢乐模拟赛 T3 解题报告
3.小澳的葫芦 (calabash.cpp/c/pas) [题目描述] 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界 ...
- 字符串模拟赛T3
只看我的做法就够了 #include<iostream> #include<cstdio> #include<string> #include<cstring ...
- 神奇的NOIP模拟赛 T3 LGTB 玩THD
LGTB 玩THD LGTB 最近在玩一个类似DOTA 的游戏名叫THD有一天他在守一座塔,对面的N 个小兵排成一列从近到远站在塔前面每个小兵有一定的血量hi,杀死后有一定的金钱gi每一秒,他都可以攻 ...
随机推荐
- ToolBar 简单使用
ToolBar 简单使用 ToolBar 是在 android 5.0之后推出的一款用来替代 ActionBar 的 View.ActionBar 是Activity的一部分,不能用在其他视图层次上( ...
- c 读取整个文件内容
char* textFileRead(char* filename){char* text;FILE *pf = fopen(filename,"r");fseek(pf,0,SE ...
- 一张图看懂CSS cascade, specific, importance, inheritance
http://www.w3.org/TR/CSS21/cascade.html#inheritance http://www.w3.org/TR/CSS21/cascade.html#cascade ...
- leetcode-Maximum Product Subarray-ZZ
http://blog.csdn.net/v_july_v/article/details/8701148 假设数组为a[],直接利用动归来求解,考虑到可能存在负数的情况,我们用Max来表示以a结尾的 ...
- CefSharp开发
CefSharp是用chromium内核开发的.net版本浏览器工具.目前只支持X86模式.所以在调试的时候要把平台改为X86 CefSharp开发指引:https://ourcodeworld.co ...
- linux(centos、ubuntu)网卡配置文件不生效
今天遇到个问题,服务器上ifcfg配置了eth0文件,但是通过ifcfg命令检查发现网卡IP配置并未生效. 然后通过如下配置修正: ubuntu: # vim /etc/default/grub在”G ...
- Lovable eccentric
It took him four years to stage this elaborate joke simply to prove that critics do not always know ...
- MATLAB基础指令操作
由于课程实验需要学习使用了MATLAB,在此记录一下MATLAB的基本操作和命令,供参考与查阅. 学习过程中的资料也链接如下: MATLAB矩阵运算:https://wenku.baidu.com/v ...
- 前端面试题总结(一)HTML篇
前端面试题总结(一)HTML篇 一.iframe的优缺点? 缺点: 1.会阻塞主页面的onload事件(iframe和主页面共享链接池,而浏览器对相同域的链接有限制,所以会影响页面的并行加载). 解决 ...
- (五)多点触控之兼容ViewPager
在上一篇文章中,自定义的ZoomImageView已经实现了自由缩放,自由移动以及双击放大与缩小的功能.已经可以投入使用这个控件了.下面我们就在ViewPager中使用这个控件.如果你还没读过上一篇文 ...