Description

Input

Output

输出共 行,每行一个非负整数表示答案。

Sample Input

2 1
1 2 3
2 1 3
5

Sample Output

4

只能选用试剂1 和试剂2 配饮料。有两种配法,用量分别为2,3 和3,2 ,每种配法的可口度为2 ,所以答案为4 。

Data Constraint

赛时

一开始想到一个用两个堆来维护的做法。
突然发现好像带个log过不去。
画画柿子突然发现可以差分。
草草打完,用了2个钟。
最后还T了。

题解

考虑差分。
首先,枚举每一种选择情况,一共n2n^2n2种。
然后对于每一种我们讨论其系数。
大概是长这样的:

因此,我们只需要考虑分成三段来差分。
首先第递增的,然后是相等的,最后是递减的。
直接差分后做两遍前缀和即可。
注意常数,要稍微优化一下。

标程

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const long long mo=998244353;
const int maxn=5010;
const int maxm=500010;
const int farr=20000010;int n,m,tot;
long long a[maxn],l[maxn],r[maxn],q[maxm],sum[farr],ans[maxm];
long long val[maxn*maxn/2],zx[maxn*maxn/2],zd[maxn*maxn/2];__attribute__((optimize("-O3")))
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){scanf("%lld%lld%lld",&a[i],&l[i],&r[i]);}int gs=0;for (int i=1;i<=n;i++){for (int j=i+1;j<=n;j++){gs++;val[gs]=a[i]*a[j]%mo;zx[gs]=l[i]+l[j];zd[gs]=r[i]+r[j];int mid=(zx[gs]+zd[gs])/2;int yd=(mid-zx[gs]+1)-min(r[i]-l[i]+1,r[j]-l[j]+1);if ((zd[gs]-zx[gs]+1)%2==1){sum[zx[gs]]=sum[zx[gs]]+val[gs];if (sum[zx[gs]]>10000000000000000) sum[zx[gs]]%=mo;sum[mid+1-yd]=(sum[mid+1-yd]-val[gs]+mo);if (sum[mid+1-yd]>10000000000000000) sum[mid+1-yd]%=mo;sum[mid+1+yd]=(sum[mid+1+yd]-val[gs]+mo);if (sum[mid+1+yd]>10000000000000000) sum[mid+1+yd]%=mo;sum[zd[gs]+2]=(sum[zd[gs]+2]+val[gs]);if (sum[zd[gs]+2]>10000000000000000) sum[zd[gs]+2]%=mo;}else{sum[zx[gs]]=sum[zx[gs]]+val[gs];if (sum[zx[gs]]>10000000000000000) sum[zx[gs]]%=mo;sum[mid+1-yd]=(sum[mid+1-yd]-val[gs]+mo);if (sum[mid+1-yd]>10000000000000000) sum[mid+1-yd]%=mo;sum[mid+2+yd]=(sum[mid+2+yd]-val[gs]+mo);if (sum[mid+2+yd]>10000000000000000) sum[mid+2+yd]%=mo;sum[zd[gs]+2]=(sum[zd[gs]+2]+val[gs]);if (sum[zd[gs]+2]>10000000000000000) sum[zd[gs]+2]%=mo;}}}for (int i=1;i<=farr-1;i++){sum[i]=(sum[i-1]+sum[i]+mo)%mo;}for (int i=1;i<=farr-1;i++){ans[i]=(ans[i-1]+sum[i]+mo)%mo;}for (int i=1;i<=m;i++){scanf("%lld",&q[i]);}for (int i=1;i<=m;i++){printf("%lld\n",ans[q[i]]);}
}

jzoj6384. 【NOIP2019模拟2019.10.23】珂学家相关推荐

  1. JZOJ6384【NOIP2019模拟2019.10.23】珂学家

    珂学家 题目描述: 输入: 输出: 输出共mmm行,每行一个非负整数表示答案. 这道题看到是一个区间,便想到了数据结构之类的东西. 但是呢它好像不带修.所以初步判断这是个离线的题目. 再仔细观察发现, ...

  2. 6377. 【NOIP2019模拟2019.10.05】幽曲[埋骨于弘川]

    题目 题目大意 有个无限长的数列an{a_n}an​,a1=1a_1=1a1​=1,an=an−1+maxdightk(an−1)a_n=a_{n-1}+maxdight_k(a_{n-1})an​= ...

  3. 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]

    题目 题目大意 给你一个数列,每次可以选择任意两个相邻的数xxx和yyy,将其删去,并在原来位置插入x+2yx+2yx+2y. 每次询问一个区间,对这个区间进行上述操作.求最后剩下的数最大是多少. 答 ...

  4. jzoj6377. 【NOIP2019模拟2019.10.05】幽曲[埋骨于弘川]

    题解 真的都快忘了. 首先,我们考虑排序,求出一个神奇的排列方式,也就是dfn序. 那么答案必定是在dfn序里面一些连续的段连接起来. 然后我们就判断这玩意儿是否满足在a里面出现过. 于是现在分两步走 ...

  5. 6360. 【NOIP2019模拟2019.9.18】最大菱形和(rhombus)

    Description Input Output Sample Input 5 5 2 0 1 5 7 3 -4 2 0 -9 8 3 9 0 7 8 2 -4 5 -7 1 4 5 8 7 0 6 ...

  6. JZOJ6362. 【NOIP2019模拟2019.9.18】数星星(star)

    Description Solution 考虑分治,将每一个询问挂在包括它的最大的区间中. 只考虑中点往右的区间的贡献,那么每一个点对于覆盖它的最早的时间有一个贡献. 我们建一个虚树,并且用并查集路径 ...

  7. 第二代机器人操作系统课程资料汇总 Course Learning Materials for ROS2 2019.10.23

    ROS2全部课程资料专栏:https://blog.csdn.net/zhangrelay/article/category/9327597 ROS2开发最新动态资讯:https://blog.csd ...

  8. 【JZOJ 6079】【GDOI2019模拟2019.3.23】染色问题

    Description m≤n+5,k,n≤105m\leq n+5,k,n\leq10^5m≤n+5,k,n≤105 Solution 1 这个图只有5条返祖边所以才能做, 先把所有有返祖边的点拿出 ...

  9. (每日一读2019.10.23)低漂移、鲁棒和快速的视觉-激光里程计和建图(VLoam)

    参考:https://www.jianshu.com/p/cb7098567711 论文:pdf 摘要 本文开发了一个低成本的立体视觉惯性定位系统,该系统利用有效的基于多状态约束卡尔曼滤波(MSCKF ...

最新文章

  1. python3远程连接MySQL
  2. VBS脚本和HTML DOM自动操作网页
  3. 简单算法题:leetcode-2 两数相加
  4. ios逆向小试牛刀之操作手记
  5. java enummap_Java EnumMap get()方法与示例
  6. NOIP 2007 普及组初赛试题(C++)(无答案)
  7. c++ 项不会计算为接受 0 个参数的函数_OFFSET函数从入门到进阶之进阶操作篇(与MATCH组合)...
  8. mapreduce实现矩阵相乘
  9. 论文A Tutorial on Graph-Based SLAM 学习笔记
  10. 耳机插在电脑上没声音linux,解决linux上耳机没有声音
  11. 这个图像工具箱,让我找得好苦
  12. 淘宝按图搜索商品(拍立淘)、图片上传API接口、图片识别商品接口img2text标题栏、链接及图片相关参数字段API数据获取调用示例
  13. 用g++编译cpp文件
  14. 遍历出List<Map>的Key / Value
  15. 嵌入式——Linux 学习之路(二):Docker
  16. 月结重头戏--外币评估
  17. rhombus(菱形)
  18. 智禾教育:现在入局电商行业算晚吗,行业前景将会如何发展
  19. Angular2组件开发—模板的逻辑控制(一)
  20. 计算机桌面图标乱码,教您软件乱码怎么修复

热门文章

  1. 如何实现MySQL增量备份与恢复?
  2. 去除office非正版提示的方法(转)
  3. 修改linux默认登录账号是root
  4. css技巧—图片配文字
  5. Content-Type是什么?
  6. 详解MapReduce实现数据去重与倒排索引应用场景案例
  7. 什么是模拟量,通俗易懂的讲解AI和AO
  8. Wi-Fi MAC 地址随机化与人群监控
  9. 读了冯唐老师的成事心法
  10. 马斯克将Twitter算法开源、谷歌向CNCF捐赠Istio、甲骨文修复Java年度加密漏洞 | 开源月报 Vol. 05...