LuoguP3948 数据结构
题目地址
题解
以为这题虽然是数据随机也不至于那么水吧...
于是秉着先打部分分和暴力的原则先写了暴力和min,max为-inf和inf的特殊点,对于暴力搞了个小优化,延后的操作直接前缀和答案就好...
然后感觉数据随机的话能过\(n<=5000\)
交了发现跑的飞快,有了一点奇奇怪怪的想法,直接交暴力试试?
然后就过了。7000+ms...
效率是\(O(opt*n+final)\)的,因为数据随机所以其实也不用卡就能过去了...
我以为他的随机至少有部分构造数据来着...
然后看了官方题解居然也只是对暴力操作差分优化了一下...这个的效率也不对的其实...如果数据出到上界是过不去的...
(当时有想到这个但是算了效率是不对的于是cut掉了这个想法。还以为这题正解多高明233333)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 200010
int n, opt, mod, Min, Max, fin;
ll a[N], sum[N];
namespace pts_1 {
void solve() {
int l, r, x;
for(int i = 1; i <= opt; i ++) {
char ch[10];
scanf("%s%d%d", ch, &l, &r);
if(ch[0] == 'A') {scanf("%d", &x); continue;}
printf("%d\n", r - l + 1);
}
scanf("%d", &fin);
for(int i = 1; i <= fin; i ++) {
scanf("%d%d", &l, &r);
printf("%d\n", r - l + 1);
}
}
}
namespace pts_2 {
void solve() {
int l, r, x;
for(int i = 1; i <= opt; i ++) {
char ch[10];
scanf("%s%d%d", ch, &l, &r);
if(ch[0] == 'A') {
scanf("%d", &x);
for(int i = l; i <= r; i ++) a[i] += x;
} else {
ll ans = 0;
for(int i = l; i <= r; i ++) {
ans += a[i] * i % mod >= Min && a[i] * i % mod <= Max;
}
printf("%lld\n", ans);
}
}
for(int i = 1; i <= n; i ++) {
sum[i] = sum[i - 1] + (a[i] * i % mod >= Min && a[i] * i % mod <= Max);
}
scanf("%d", &fin);
while(fin--) {
scanf("%d%d", &l, &r);
printf("%lld\n", sum[r] - sum[l - 1]);
}
}
}
int main() {
scanf("%d%d%d%d%d", &n, &opt, &mod, &Min, &Max);
if(Min <= -inf && Max >= inf) {pts_1::solve(); return 0;}
else {
if(n <= 5000) {pts_2::solve(); return 0;}
pts_2::solve(); return 0;
}
}
LuoguP3948 数据结构的更多相关文章
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 深入浅出Redis-redis底层数据结构(上)
1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...
- 算法与数据结构(十五) 归并排序(Swift 3.0版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- 算法与数据结构(八) AOV网的关键路径
上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
随机推荐
- vm虚拟机出现Disk启动失败
https://jingyan.baidu.com/article/a501d80c0e45b8ec630f5ed6.html
- C#操作XML方法详解
using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); xml. ...
- FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有
2018-11-05 19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...
- tar命令打包文件夹下所有的文件
例如在/home/rip123/www 路径有aa.txt aab.txt bb.txt cc.txt 文件,想将所有的打包却不想一个个敲: 做法:在www文件夹下输入命令: tar ...
- myeclipse项目导入IDEA
1.import project from external model (不需要删除myeclipse多余文件) https://blog.csdn.net/d276031034/artic ...
- QT中添加 动态库(.so) 和 静态库 (.a) 的方法
在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...
- docker log directory
Ubuntu - /var/log/upstart/docker.log Boot2Docker - /var/log/docker.log Debian GNU/Linux - /var/log/d ...
- animate和translate
transition, transform, tanslate,animation分别为过渡,变换,平移.动画.transform的属性包括:rotate() / skew() / scale() / ...
- Java程序员秋招面经大合集(BAT美团网易小米华为中兴等)
Cvte提前批 阿里内推 便利蜂内推 小米内推 金山wps内推 多益网络 拼多多学霸批 搜狗校招 涂鸦移动 中国电信it研发中心 中兴 华为 苏宁内推 美团内推 百度 腾讯 招商银行信用卡 招银网络科 ...
- 从2D图片生成3D模型(3D-GAN)
https://blog.csdn.net/u014365862/article/details/54783209 3D-GAN是使用生成对抗网络学习2D图像到3D模型的映射,生成网络负责生成3D模型 ...