题目描述

妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活。

换用更高尚的说法,是随时准备着为这个无药可救的世界献身。

然而孩子们的生活却总是无忧无虑的,幼体的黄金妖精们过着天真烂漫的生活,自然也无暇考虑什么拯救世界之类的重任。

有一天小妖精们又在做游戏。这个游戏是这样的。

妖精仓库的储物点可以看做在一个数轴上。每一个储物点会有一些东西,同时他们之间存在距离。

分析:x相对于[l,r]有3种可能的情况,要么在区间里,要么在区间左边,要么在区间右边。分类讨论,如果x在区间左边,ans = bi*(xi - x) + bi+1*(xi+1-x) + ...... + br*(xr - x).其中xi是第i个点的位置,x是x的位置.将结构相同的放在一起:ans=Σbixi - xΣbi.同理,如果x在区间右边:ans=xΣbi - Σbixi,在区间中的话就分左半区间和右半区间分别处理.得到这个式子就好办多了,前缀和就能搞定.只是要mod一个数,在做减法的时候一定要+模数,否则就会出现负数!!!

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll; const ll mod = ; ll n, m, d[], a[], sum[]; int main()
{
scanf("%lld%lld", &n, &m);
for (int i = ; i <= n; i++)
{
scanf("%lld", &d[i]);
d[i] += d[i - ];
d[i] %= mod;
}
for (int i = ; i <= n; i++)
scanf("%lld", &a[i]);
for (int i = ; i <= n; i++)
{
sum[i] = sum[i - ] + ((d[i] * a[i]) % mod);
sum[i] %= mod;
a[i] += a[i - ];
a[i] %= mod;
}
for (int i = ; i <= m; i++)
{
long long x, l, r;
scanf("%lld%lld%lld", &x, &l, &r);
if (x <= l)
{
long long temp3 = (a[r] - a[l - ] + mod) % mod;
long long temp = (temp3 * d[x]) % mod;
long long temp2 = (sum[r] - sum[l - ] + mod) % mod;
long long ans = (((temp2 - temp + mod) % mod) + mod) % mod;
printf("%lld\n", ans);
}
else
if (x >= r)
{
long long temp3 = (a[r] - a[l - ] + mod) % mod;
long long temp = (temp3 * d[x]) % mod;
long long temp2 = (sum[r] - sum[l - ] + mod) % mod;
long long ans = (((temp - temp2 + mod) % mod) + mod) % mod;
printf("%lld\n", ans);
}
else
{
long long temp5 = (a[r] - a[x] + mod) % mod;
long long temp6 = (a[x - ] - a[l - ] + mod) % mod;
long long temp3 = (sum[x - ] - sum[l - ] + mod) % mod;
long long temp4 = (sum[r] - sum[x] + mod) % mod;
long long temp1 = (temp5 * d[x]) % mod;
long long ans1 = (((temp4 - temp1 + mod)%mod) + mod) % mod;
long long temp2 = (d[x] * temp6) % mod;
long long ans2 = (((temp2 - temp3 + mod) % mod) + mod) % mod;
printf("%lld\n", (ans1 + ans2) % mod);
}
} return ;
}

noip模拟赛 浮游大陆的68号岛的更多相关文章

  1. P3932 浮游大陆的68号岛 【线段树】

    P3932 浮游大陆的68号岛 有一天小妖精们又在做游戏.这个游戏是这样的. 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下 ...

  2. P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下的人找到区间[l,r]储物点的所有东西,清点完 ...

  3. 线段树 洛谷P3932 浮游大陆的68号岛

    P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...

  4. [Luogu3932] 浮游大陆的68号岛

    题目背景 大样例下发链接: https://pan.baidu.com/s/1nuVpRS1 密码: sfxg 浮游大陆的68号岛,位于浮游大陆的边境地带.平时很少有人造访. 岛上被浓厚的森林覆盖. ...

  5. LuoguP3932 浮游大陆的68号岛 题解

    Content 在一个无限长的数轴上有 \(n\) 个点.第 \(i\) 个点上面有 \(a_i\) 件物品,且第 \(i\) 个点到第 \(i+1\) 个点的距离为 \(b_i\). 定义从第 \( ...

  6. [洛谷P3932]浮游大陆的68号岛

    题目大意:有一行物品,每两个物品之间有一个距离.每个物品有一个价值.现在问你若干问题,每个问题问你把l~r所有物品全部搬到物品x处需要多少价值. 把物品a搬到物品b处的价值为物品a的价值乘a到b的距离 ...

  7. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  8. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  9. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

随机推荐

  1. codeforces round #416 div2

    A:暴力模拟 #include<bits/stdc++.h> using namespace std; int a, b; int main() { scanf("%d%d&qu ...

  2. RijndaelManaged 加密

    public string Encrypt(string str) { string result = null; if (str == null) { return result; } try { ...

  3. Antenna Placement(二分图的最大匹配)

    http://poj.org/problem?id=3020 题意: 一个矩形中,有N个城市'*',现在这n个城市都要覆盖无线,若放置一个基站,它至多可以覆盖相邻的两个城市.问至少放置多少个基站才能使 ...

  4. [Swift通天遁地]二、表格表单-(17)制作在表单左侧添加单选和复选组件的表单行

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. git配置用户信息

    git配置用户信息 一.在本地配置用户信息 配置内容:user.name 和 user.email 配置目的:Git用来记录谁做了什么事 配置方法:windows下打开Git Bash进行操作  gi ...

  6. vscode----vue中HTML代码tab键自动补全

    1.在vscode中插件下载并重新加载HTML Snippets 2.settings.json中配置files.associations对象. 找到setting.json文件:文件 --> ...

  7. 取消安卓listview,scrollview,gridview滑动时候边缘模糊问题

    只需在xml文件里面声明: android:faddingEdge = "none" android:faddingEdgelenth = "0dp" andr ...

  8. 【BZOJ2565】最长双回文串 (Manacher算法)

    题目: BZOJ2565 分析: 首先看到回文串,肯定能想到Manacher算法.下文中字符串\(s\)是输入的字符串\(str\)在Manacher算法中添加了字符'#'后的字符串 (构造方式如下) ...

  9. ACM_迟到的祝福(四)

    迟到的祝福(四) Time Limit: 2000/1000ms (Java/Others) Problem Description: 据说前几天是雁来师姐的生日,作为一个15级的小鲜肉A,没及时给师 ...

  10. C#中的分层开发

    一般来说,分层主要分三层即:UI(User Interface) 界面显示层,BLL(Business Logic Layer)业务逻辑层,以及DAL(Data Access Layer)数据访问层. ...