首页 > 其他分享 >Luogu 省选计划 #1

Luogu 省选计划 #1

时间:2022-12-11 22:12:39浏览次数:68  
标签:return 省选 Luogu kl int tin 计划 bitset ind

  • 整体二分
  • CDQ 分治
问题 2(P3527)

一次模拟下雨是把所有国家的一起下了,不妨所有国家一起二分。二分定义域为时间轴,初始把所有国家都挂在 \(k / 2\) 上,然后根据结果分别缩小范围,但每一层虽然是若干个区间但是还是那样扫过去。用线段树维护,可以做到 \(O(n \log^2 n)\)。(\(n,m,k\) 同阶)
https://www.luogu.com.cn/blog/78372/parallel-binsearch
这个里面告诉我,还可以 \(O(n \log n)\)。【待补】

问题 4(P3810)

\(k\) 维偏序用 bitset 直接暴力怎么做:
\(A_{i,j}\) 维护是否 \(a_i \le a_j\)。这个排序之后扫一遍过去就可以维护了。
最朴素的做法,开 \(k\) 个数组分别维护,最后合并即可。

\(3\) 维偏序,\(1e5\)。怎么办,首先由于数组最后也要合并,只需要用一个数组一直存即可。然后发现空间 \(1e10 = 1\operatorname{GB}\) 过不去,考虑分块每次只算一部分内容,假设块长为 \(l\),那么空间复杂度 \(O(\cfrac{nl}{\omega})\),时间复杂度 \(O(\cfrac{n^3}{l\omega})\)。显然空间不超限制的时候尽量增大 \(l\),取 \(l = 30000\) 可以过。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define f(i, a, b) for(int i = (a); i <= (b); i++)
#define cl(i, n) i.clear(),i.resize(n);
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
const int inf = 1e9;
void cmax(int &x, int y) {if(x < y) x = y;}
void cmin(int &x, int y) {if(x > y) x = y;}
struct tin {
    int a, b, c, ind;
}q[100010];
bitset<100010> x[30010];
bool cmpa(tin a, tin  b) {return a.a < b.a;}
bool cmpb(tin a, tin  b) {return a.b < b.b;}
bool cmpc(tin a, tin  b) {return a.c < b.c;}
int ans[200010];
const int m = 30000;
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    //time_t start = clock();
    //think twice,code once.
    //think once,debug forever.
    int n, k; cin >> n >> k;
    f(i, 1, n) {
        cin >> q[i].a >> q[i].b >> q[i].c;
        q[i].ind = i;
    }
    int num = (n + m - 1) / m;
    f(i, 1, num ){
        int kl = (m * (i - 1) + 1), kr = min(n, m * i);
        bitset<100010> std;
        vector<int> v;
        sort(q + 1, q + n + 1, cmpa); 
        f(i, 1, n) {
            std[q[i].ind] = 1;
            v.push_back(q[i].ind);
            if(i == n || q[i].a != q[i+1].a) {
                for(int j : v) {
                    if(j >= kl && j <= kr) x[j - kl + 1] = std;
                    
                }
                v.clear();
            }
        }
        f(i, 1, n) std[i] = 0;
        sort(q + 1, q + n + 1, cmpb); 
        f(i, 1, n) {
            std[q[i].ind] = 1;
            v.push_back(q[i].ind);
            if(i == n || q[i].b != q[i+1].b) {
                for(int j : v) {
                    if(j >= kl && j <= kr) x[j - kl + 1] &= std;
                }
                v.clear();
            }
        }
        f(i, 1, n) std[i] = 0;
        sort(q + 1, q + n + 1, cmpc); 
    
        f(i, 1, n ) {
            std[q[i].ind] = 1;
            v.push_back(q[i].ind);
            if(i == n || q[i].c != q[i+1].c) {
                for(int j : v) {
                    if(j >= kl && j <= kr) x[j - kl + 1] &= std;
                }
                v.clear();
            }
        }    
        f(i, 1, kr - kl + 1) {
            ans[x[i].count() - 1] ++;
        }
    }
    f(i, 0, n - 1) cout << ans[i] << endl;
    
    //time_t finish = clock();
    //cout << "time used:" << (finish-start) * 1.0 / CLOCKS_PER_SEC <<"s"<< endl;
    return 0;
}

但是正经 CDQ 分治也是要做的。

标签:return,省选,Luogu,kl,int,tin,计划,bitset,ind
From: https://www.cnblogs.com/Zeardoe/p/16974645.html

相关文章

  • 进程和任务计划管理
    一、进程1.程序什么是程序?是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。用于描述进程要完成的功能,是控制进程执行的指令集。保......
  • 【学习计划】蒟蒻大学生的疲惫寒假
    线性代数:矩阵运算(以及看了一半的行列式和逆矩阵)数据分析:numpy/matplotlib绘图(有个不知道存去哪里的教材)神经网络:卷积神经网络(填博客的坑)pytorch用法(!一窍不通)再次巩固P......
  • luogu省选计划day1
    T1过水已隐藏T2整体二分经典题,主席树上二分也可以在二分时要算一个国家的每一个出现位置,看起来是不行的但是均摊一下没有问题使用线段树辅助计算答案T3过水已隐藏T......
  • 计划管理,系统管理及日志
    一、引导过程1、开机自检服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时......
  • 任务计划异常运行排查
    任务运行异常-->>王新宇、麻思,也可按以下方法自行排查一道。ping{ip},ip为ffmpeg所在的机器在tc部署的机器上执行:curlXXX:8998/ext/api/v1/task/status,XXX为ffmpeg......
  • 省选互测1
    A.Delov的npy们题目来源AGC031E本来想直接用洛谷题面,但是\(Delov\)整了活,于是我也整了整活题面#Delov的npy们>你有喜欢的女孩子嘛有温柔的女孩子在等......
  • 大四寒假学习计划
    日期早上上午下午晚上周一晨练,英语喀兴林高量vasp毕设学习周二~[[资料待看#微信读书|python物理学]][[资料待看#蔻享DMFT|DMFT寇享]]学习周三......
  • Starlink星链计划能与5G抗衡?看一下马斯克吹过的牛
    文章目录​​一、Starlink星链计划是什么?​​​​1.卫星发射情况​​​​2.性能测试​​​​二、5G通信性能​​​​1.通信速度​​​​2.通信时延​​​​3.速度快的......
  • 源语言计划 【origin-lang】
    【学生时代】想法之初origin-lang该设想之初是考虑解决人与计算机之间沟通问题。多语言在体现了文化多样性的同时,也成为了科技进步的绊脚石。设想一下,全球各地的开发者,......
  • 寒假训练计划打卡
    暑假暂定计划1.CF至少两天一把(vp或者正式赛)2.牛客每周的小白和寒假训练赛3.每周的atcoder4.坚持每天至少五个题目标1.CF19002.图论入门+一点点精通3.字符串入门4......