A1487. 分配游戏(王康宁)

  把题目所给的三元组看成三维空间里的点坐标,记录下来每个点在每个坐标平面上的映射,对于每一个询问,查询每个面上分别有多少个点在该点的映射与原点所组成的矩形内部

  原先想到二维树状数组,然而老爷吃着鸡块说了一句空间炸了,,,于是炸了

  然后发现其实还是在树状数组上lg,但是要把插入和询问和(huo)在一起,按其中一维排序,先询问后查询

  膜一下fatheryoung,码代码神快,神稳

  风格分不及格,,,贴代码好方

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef pair<int,int>pii;
 4 typedef pair<pii,pii>haha;
 5 #define maxn 1000005
 6 #define maxm 200005
 7 #define rep(i) for(int i=0;i<3;i++)
 8 #define mp make_pair
 9 #define fir first
10 #define sec second
11 int hh,n,m,t,a[3],ans[maxm],hash[maxn*6],BIT[3][maxn*6];
12 haha poi[3][maxm];
13 int read(){
14     char ch=0;
15     int tmp=0;
16     while(!isdigit(ch))ch=getchar();
17     while(isdigit(ch)){
18         tmp=tmp*10+ch-‘0‘;
19         ch=getchar();
20     }
21     return tmp;
22 }
23 inline void in_hash(){
24     rep(i)hash[++hh]=a[i];
25 }
26 void insert(int p,int x){
27     x=lower_bound(hash+1,hash+1+hh,x)-hash;
28     for(int i=x;i<=hh;i+=i&-i)//
29         BIT[p][i]++;
30 }
31 int query(int p,int x){
32     x=lower_bound(hash+1,hash+1+hh,x)-hash - 1;
33     int sum=0;
34     for(int i=x;i>=1;i-=i&-i)
35         sum+=BIT[p][i];
36     return sum;
37 }
38 int main(){
39     n=read();m=read();t=read();
40     for(int i=1;i<=m;i++){
41         a[0]=read();a[1]=read();a[2]=read();
42         in_hash();
43         rep(j)
44             for(int k=j+1;k<3;k++){
45                 int ord=j+k-1;
46                 poi[ord][i]=mp(mp(a[j],1),mp(a[k],i));
47             }
48     }
49     for(int i=1;i<=t;i++){
50         a[0]=read();a[1]=read();a[2]=read();
51         in_hash();
52         rep(j)
53             for(int k=j+1;k<3;k++){
54                 int ord=j+k-1;
55                 poi[ord][i+m]=mp(mp(a[j],0),mp(a[k],i));//
56             }
57     }
58     sort(hash+1,hash+1+hh);
59     hh=unique(hash+1,hash+1+hh)-(hash+1);
60     rep(i)sort(poi[i]+1,poi[i]+1+m+t);
61     n=m+t;
62     rep(i)
63         for(int j=1;j<=n;j++){
64             int id=poi[i][j].sec.sec;
65             int op=poi[i][j].fir.sec;
66             int val=poi[i][j].sec.fir;
67             if(op==1)insert(i,val);
68             else ans[id]+=query(i,val);
69         }
70     for(int i=1;i<=t;i++)printf("%d\n",ans[i]);
71     return 0;
72 }

时间: 2024-08-29 17:52:57

A1487. 分配游戏(王康宁)的相关文章

tsinsen A1486. 树(王康宁) 边分治+字典树

不知为何,这个代码只能得95分 放一下傻逼代码... #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,K; int nn2=1,nn=1,nod; #define N 1000000 #define ed(x) (x>>1) #define ab(x) ((x)>0?(x):-(x)) i

【Tsinsen-A1486】树(王康宁) 点分治 + Trie

A1486. 树(王康宁) 时间限制:1.0s   内存限制:512.0MB 总提交次数:455   AC次数:97   平均分:52.62 查看未格式化的试题   提交   试题讨论 试题来源 2013中国国家集训队第二次作业 问题描述 给出一棵N个点的树,每个点有各自的权值,小A想选出一条简单路径,使得这条路径上的点的权值的异或和最大.另外,小A有一些喜欢的点,他希望在这条路径上经过至少K个自己喜欢的点. 输入格式 第一行包括两个整数N, K,分别表示树的点数和路径上至少包含的小A喜欢的点的

A1486. 树(王康宁)

题目:http://www.tsinsen.com/A1486 题解: 其实看到和路径有关的就应该想到点分治. 我们找出重心之后遍历每一棵子树得到它的 { x=经过特殊点的个数,y=到rt的异或和} 然后我们按x排序,维护两个头尾指针不断把满足条件的加入trie,然后把左边的放进trie里查询. 但是还有一个问题,所取的两个点不能位于同一棵子树!!! 我yy了一个做法.我们在用三元组来记录{ x=经过特殊点的个数,y=到rt的异或和,ch=所属子树} 然后往trie里插的时候,每条边保留两个ch

Tsinsen A1486. 树(王康宁)

Description 一棵树,问至少有 \(k\) 个黑点的路径最大异或和. Sol 点分治. 用点分治找重心控制树高就不说了,主要是对答案的统计的地方. 将所有路径按点的个数排序. 可以发现当左端点递增的时候右端点单调递减,时刻满足Trie树里的所有元素都是合法的即可,不断把右端点丢进去,用左端点统计答案. 主要跨越根的时候根的贡献计算了两次,需要删掉一次. 对于需要满足不是一颗子树,可以将Trie树上的节点打一个标记,表示这个节点及其子节点都是在某子树下的路径,子树个数大于1的时候这个标记

[转]献给迷茫的大多数

网易陕西省西安市网友 [3308只信仰公平] 的原贴:1 人生在世,都是为了生存,不但要生存还要更幸福的生存.美女.香车.豪宅,贤妻.爱女.情人,总之,幸福生活是人人都向往的,这是每个人最基本的权利和追求,这就是人权. 但是,要想实现这一切,都需要钱,都需要财富作为基础.没有财富,别说幸福生活就连自由你都没有.你整天为了生存去打工,为了糊口,更为了养活一家子,孩子的奶粉和学费,老家还要盖房子,农村的父母还要赡养,这一切的一切,就像一条无形的锁链,把你牢牢的“栓”在工厂生产流水线上,想去旅游?把你

【资料】国家集训队论文集(1999~2014)

本文版权归ACShiryu和acvay所有,如转载请注明原作者. 国家集训队1999论文集 1.陈宏:<数据结构的选择与算法效率--从IOI98试题PICTURE谈起> 2.来煜坤:<把握本质,灵活运用--动态规划的深入探讨> 3.齐鑫:<搜索方法中的剪枝优化> 4.邵铮:<数学模型的建立.比较和应用> 5.石润婷:<隐蔽化.多维化.开放化--论当今信息学竞赛中数学建模的灵活性> 6.杨帆:<准确性.全面性.美观性--测试数据设计中的三要素

04号团队-团队任务5:项目总结会

1.团队信息: 团队序号04号团队 开发的软件名称 : 飞机大战 今日整理人姓名与学号以及在团队中的职务 : 王景园 2016035107228 软件工程师 2. 团队项目的代码仓库地址: 团队项目的代码仓库地址: https://gitee.com/wang_jingyuan/aircraft_war  主仓库 3.给出团队会议的时间.地点.成员参与情况与照片: 时间: 2018/12/23  6点整 地点:寝室 成员:UI设计师王菊   软件工程师王景园  产品经理王擎 成员参与情况: 全员

简历生成平台项目开发-STEP3第一次项目例会探讨

时间:2016.7.13周三7点半 地点:图书馆 讨论主题:项目需求和功能分析.第一次任务分配 内容:按照之前的讨论,我们认为简历生成功能,不仅要适应学生求职的需求,更多的是要在格式和内容上满足HR的要求,所以安排尹忠诚调研网上关于HR对简历的要求.大概有以下几点: 1.简历篇幅不宜过多 2.英文简历求职必备 3.借鉴的简历不受欢迎 4.教育经历:大学生择业“资本”&工作经历:HR经理招聘首选 一份好的简历,应该具有以下的特点: ◎内容真实 简历内容的完整性.真实性 ◎言简意赅 一般来说,简历最

大型手游登录流程

游戏登录过程在玩家的眼里是非常简单的,只需要点一下登陆按钮即可: 实际上这个过程没有想象的那么简单,特别是在手游中,一般会加入第三方渠道之后: 下面就把这个登录的整个过程写下来. 一 登录渠道(客户端) 流程: 1 客户端输入渠道账号user_name和密码password: 2 登录,登录SDK成功之后,会返回一个token: 3 保存token: 传入:app_id.app_key.user_name.password 返回:token 说明: app_id和app_key是游戏制作方在接入