【JZOJ6384】珂学家
2024-08-29 04:47:05
description
analysis
注意配出来的饮料不可以再配成其他饮料,所以肯定有\(O(n^2)\)的枚举
而且可口度两两互不相同,搞得我以为这是神仙题
考虑把两个试剂\([l_1,r_1],[l_2,r_2]\)合并,\([l_1+l_2,r_1+r_2]\)里的每个点都有贡献
假设贡献只有\(1\),拉出来就是\(1,2,3,..,k-1,k,k,k,...,k,k-1,...,3,2,1\)
注意到前面一段和后面一段是等差数列,中间全部相等,做一遍差分
就会是\(0,1,1,...,1,1,0,0,...,0,-1,...,-1,-1,-1,-1\),注意最后面多出来一个\(-1\)
再做差分,变成\(0,1,0,...,0,0,-1,0,...,0,-1,...,0,0,0,0,1\),最后面又多出来一个\(1\)
那么对于一次贡献,相当于打上两个加两个减标记,最后两次前缀和还原原数组
code
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 5005
#define MAX 20000005
#define ha 998244353
#define ll long long
#define reg register ll
#define fo(i,a,b) for (reg i=a;i<=b;++i)
#define fd(i,a,b) for (reg i=a;i>=b;--i)
using namespace std;
ll v[MAXN],l[MAXN],r[MAXN];
ll a[MAX];
ll n,m,mx;
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline void swap(ll &x,ll &y){ll z=x;x=y,y=z;}
int main()
{
//freopen("T1.in","r",stdin);
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
n=read(),m=read();
fo(i,1,n)v[i]=read(),l[i]=read(),mx=max(mx,r[i]=read());
fo(i,1,n-1)fo(j,i+1,n)
{
ll lx=l[i],rx=r[i],ly=l[j],ry=r[j],k,kk,tmp=v[i]*v[j]%ha;
(a[lx+ly]+=tmp)%=ha,(a[lx+ry+1]-=tmp)%=ha,(a[rx+ly+1]-=tmp)%=ha,(a[rx+ry+2]+=tmp)%=ha;
}
fo(i,1,2*mx+1)(a[i]+=a[i-1])%=ha;
fo(i,1,2*mx+1)(a[i]+=a[i-1])%=ha;
while (m--)printf("%lld\n",(a[read()]+ha)%ha);
return 0;
}
最新文章
- for循环j = j++ 和 j = ++j
- xml解析方法总结
- 【转】Kylin的Hierarchies,Derived维度方面配置优化
- jquery ajax 实例
- 【ZOJ】3609 Modular Inverse
- Unix/Linux 脚本中 “set -e” 的作用
- Jasperreports以及iReport4.5报表PDF导出字体完美解决方案
- generator生成器iterator遍历器和yield
- 总结:如何驱动DS18B20温度传感器
- libevent 实现的socket 通信 server以及解决找不到动态库的方法
- vue的父子组建之间的通信(-),基于props和$emit之间的传递
- 十九、State 状态模式
- 新浪股票接口AndroidSDK
- Linux-(ps,grep)
- Qt 状态栏设置
- 模仿VIMD的模式的简化代码示例
- Linux route命令
- A problem has been detected and windows has been shut down to prevent damage
- springmvc ModelAndView
- VBS虚拟键盘十六进制列表
热门文章
- 二、springcloud微服务测试环境搭建
- 从内部重启python脚本
- 8、如何实现可迭代对象和迭代器对象 9、如何使用生成器函数实现可迭代对象 10、如何进行反向迭代以及如何实现反向迭代 11、如何对迭代器做切片操作 12、如何在一个for语句中迭代多个可迭代对象
- Mybatis Generator 安装(idea+maven)
- docker commit为什么不适合生成镜像?
- mysql服务命令行操作
- 【NOI2019模拟2019.7.1】三格骨牌(轮廓线dp转杨图上钩子定理)
- 矩阵乘法分配律+bitset优化——hdu4920
- NX二次开发-UFUN获取点在面上的向量方向UF_MODL_ask_face_props【转载】
- vs2013代码高亮显示失效