zoukankan      html  css  js  c++  java
  • 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
    ", r - l + 1);
    		}
    		scanf("%d", &fin);
    		for(int i = 1; i <= fin; i ++) {
    			scanf("%d%d", &l, &r);
    			printf("%d
    ", 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
    ", 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
    ", 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;
    	}
    }
    
  • 相关阅读:
    shell 数组遍历加引号和不加引号的区别?
    shell map数据结构的实现
    PyCharm 项目打开窗口设置为当前还是新开一个怎么办?
    python 模拟ssh 登录远程服务器
    python 字节码死磕
    docker相关内容
    Windows7安装 docker-compose的过程
    史上最简单的Docker入门教程
    MySQL触发器使用详解
    存储过程
  • 原文地址:https://www.cnblogs.com/henry-1202/p/10152720.html
Copyright © 2011-2022 走看看