COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)
思路:
此题显然是CDQ套CDQ套树套树
(然而我懒)
想用一种奇怪的姿势卡过去
就出现了以下解法
5w*5w/8的bitset hiahiahia
但是空间会爆怎么办啊… 折半~ 变成5w*2.5w/8完美卡过去
时间会慢很多么 并没有~~完全可以过 甚至比某些姿势不好的树套树快hiahiahia
代码是不是很短~
//By SiriusRen
#include <bitset>
#include <cstdio>
#include <algorithm>
using namespace std;
int n;long long ans;
bitset<25000>b[50000],jy;
struct Node{int a,b,c,id;}node[50000];
bool cmpa(const Node &a,const Node &b){return a.a<b.a;}
bool cmpb(const Node &a,const Node &b){return a.b<b.b;}
bool cmpc(const Node &a,const Node &b){return a.c<b.c;}
inline int rd(){
int x=0;char p=getchar();
while(p<'0'||p>'9')p=getchar();
while(p>='0'&&p<='9')x=x*10+p-'0',p=getchar();
return x;
}
int main(){
freopen("partial_order.in","r",stdin);
freopen("partial_order.out","w",stdout);
scanf("%d",&n);
register int i;
for(i=0;i<n/2;i++)b[i]|=jy,jy.set(i);
for(i=n/2;i<n;i++)b[i]|=jy;
for(i=0;i<n;i++)node[i].a=rd();
for(i=0;i<n;i++)node[i].b=rd();
for(i=0;i<n;node[i].id=i,i++)node[i].c=rd();
jy.reset();sort(node,node+n,cmpa);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id<n/2)jy.set(node[i].id);}
jy.reset();sort(node,node+n,cmpb);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id<n/2)jy.set(node[i].id);}
jy.reset();sort(node,node+n,cmpc);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id<n/2)jy.set(node[i].id);}
for(i=0;i<n;i++)ans+=b[i].count();
jy.reset();
for(i=0;i<n;i++)b[i].reset();
for(i=n/2;i<n;i++)b[i]|=jy,jy.set(i-n/2);
jy.reset();sort(node,node+n,cmpa);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id>=n/2)jy.set(node[i].id-n/2);}
jy.reset();sort(node,node+n,cmpb);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id>=n/2)jy.set(node[i].id-n/2);}
jy.reset();sort(node,node+n,cmpc);
for(i=0;i<n;i++){b[node[i].id]&=jy;if(node[i].id>=n/2)jy.set(node[i].id-n/2);}
for(i=0;i<n;i++)ans+=b[i].count();
printf("%lld\n",ans);
}
COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)的更多相关文章
- BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1513 Solved: 1154 [Submit] ...
- Redis奇怪的姿势
Redis奇怪的姿势 写在前面 之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下. 写入启动项 环境搭建 window ...
- cogs 558 奇怪的函数
提交地址:http://cojs.tk/cogs/problem/problem.php?pid=558 558. 奇怪的函数 ★☆ 输入文件:xx.in 输出文件:xx.out 简单对比 ...
- 【卡常 bitset 分块】loj#6499. 「雅礼集训 2018 Day2」颜色
好不容易算着块大小,裸的分块才能过随机极限数据:然而这题在线的数据都竟然是构造的…… 题目描述 有 $n$ 个数字,第 $i$ 个数字为 $a_i$. 有 $m$ 次询问,每次给出 $k_i$ 个区间 ...
- COGS 2479 偏序 题解
[题意] 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于30%的 ...
- COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]
传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于100%的 ...
- COGS 2479. [HZOI 2016] 偏序 (CDQ套CDQ)
传送门 解题思路 四维偏序问题,模仿三维偏序,第一维排序,第二维CDQ,最后剩下二元组,发现没办法处理,就继续嵌套CDQ分治.首先把二元组的左右两边分别打上不同的标记,因为统计答案时只统计左边对右边的 ...
- loj515 贪心只能过样例(bitset)
题目: https://loj.ac/problem/515 分析: 所有可能和的最大值是1e6 如果dp的话,dp[i][j]表示前i个数能否凑出和为j的数 这样是O(n^5)的 考虑到[j]可以用 ...
- bzoj题目分类
转载于http://blog.csdn.net/creationaugust/article/details/513876231000:A+B 1001:平面图最小割,转对偶图最短路 1002:矩阵树 ...
随机推荐
- checkbox的使用总结
1 checkbox如何选中时显示内容,不被选中时隐藏内容 <!DOCTYPE html> <html> <head> <meta name="vi ...
- SQL Server 分割字符串转列
CREATE FUNCTION dbo.sf_DS_SplitNVarchar ( @strValues nvarchar(4000) ) RETURNS @tblStrList TABLE (id ...
- 将百度百科的机器学习词条中的一段关于机器学习的demo改用Java写了一遍
这是引用的百度百科中关于机器学习的一段示例,讲述了通过环境影响来进行学习的例子. 下面是代码: import java.io.BufferedReader; import java.io.IOExce ...
- Android自定义日历控件(继承系统控件实现)
Android自定义日历控件(继承系统控件实现) 主要步骤 编写布局 继承LinearLayout设置子控件 设置数据 继承TextView实现有圆圈背景的TextView 添加Attribute 添 ...
- GRpc-Go使用笔记
linux下配置GRpc-golang 1.git中下载protobuf包 2.解压(/usr/local/protobuf) unzip protobuf-cpp-3.0.0-alpha-3.z ...
- Comparison of programming paradigms
Main paradigm approaches[edit] The following are widely considered the main programming paradigms, a ...
- hdu1542 矩形面积并(线段树+离散化+扫描线)
题意: 给你n个矩形,输入每个矩形的左上角坐标和右下角坐标. 然后求矩形的总面积.(矩形可能相交). 题解: 前言: 先说说做这道题的感受: 刚看到这道题顿时就懵逼了,几何 烂的渣渣.后来从网上搜题解 ...
- 你应该更新的 Java 知识
作者:dreamhead 出处:<你应该更新的Java知识>系列 你应该更新的 Java 知识 Tag:你应该更新的Java知识 Java Guava 集合 版权声明:转载时请以超链接形式 ...
- [读书笔记] Python数据分析 (一) 准备工作
1. python中数据结构:矩阵,数组,数据框,通过关键列相互联系的多个表(SQL主键,外键),时间序列 2. python 解释型语言,程序员时间和CPU时间衡量,高频交易系统 3. 全局解释器锁 ...
- html全屏显示
JavaScript代码: function toggleFullScreen() { if (!document.fullscreenElement && // alternativ ...