超时暴力60分

#include <iostream>
#include <algorithm>
#include <cstring>
#include <sstream>
using namespace std;
typedef long long LL;
const int N = 5e5 + 4, mod = 1e9 + 7;vector<int> v[N];
int y[N], sizy, x[N], sizx, numx[N], a[N], b[N], n, q;
int c[N];// 这题暴力就是 先离散化之后看每个网格交点是否满足;
// 优化就是区间的时候可以先求出最大值,再一遍线段树更新每个点是否满足,修改是单点修改,查询是区间和 int main()
{scanf("%d%d", &n, &q);for(int i = 1;i <= n;i ++){scanf("%d%d", a+i, b+i);y[i] = a[i]; x[i] = b[i];  // 离散化数组,y和x好像有点抽象 }sort(y+1, y+n+1); sizy = unique(y+1, y+n+1)-y;sort(x+1, x+n+1); sizx = unique(x+1, x+n+1)-x;for(int i = 1;i <= n;i ++){a[i] = lower_bound(y+1, y+sizy, a[i]) - y;b[i] = lower_bound(x+1, x+sizx, b[i]) - x; numx[b[i]] ++;v[a[i]].push_back(b[i]);  }for(int i = 1;i <= sizy;i ++)sort(v[i].begin(), v[i].end());int ma = 0, ans = 0;for(int i = 1;i < sizy;i ++){for(int j = 0;j < v[i].size()-1;j ++)for(int t = v[i][j]+1;t < v[i][j+1];t ++)   // 遍历每个点算答案 {int mi = min(min(c[t], numx[t]-c[t]), min(j+1, (int)v[i].size()-j-1));if(mi>ma)  // 更新答案 ma = mi, ans = 1;  else if(ma == mi)ans ++;}for(auto x:v[i])c[x] ++;     }if(q-1)cout<<ans;else cout<<ma;puts("");return 0;
}

100分线段树单点修改代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <sstream>
#define ls  (u<<1)
#define rs  (u<<1|1)
#define mid (l+r>>1)
using namespace std;
typedef long long LL;
const int N = 3e5 + 4, mod = 1e9 + 7;vector<int> v[N];
int y[N], sizy, x[N], sizx, numx[N], a[N], b[N], n, q;
int c[N], ma = 0;
LL ans = 0;
struct point{int ma, sum;
}tr[N<<2];void push_up(point &a, point &b, point &c){a.sum = b.sum+c.sum;a.ma=max(b.ma,c.ma);return ;}void modify(int u, int l, int r, int x, int f)
{if(l==r){tr[u].ma = min(c[x], numx[x]-c[x]);if(f)   // 这个要判断,因该是 又一遍开始的时候有答案贡献把,奇怪; tr[u].sum = tr[u].ma >= ma ;  }else {x <= mid ? modify(ls, l, mid, x, f) : modify(rs, mid+1, r, x, f);push_up(tr[u], tr[ls], tr[rs]);}return ;
}point quary(int u, int l, int r, int L, int R)
{   if(L<=l&&R>=r) return tr[u];point x = {0, 0}, z = {0, 0}, y = {0, 0};if(L <= mid) y = quary(ls, l, mid, L, R);if(R > mid) z = quary(rs, mid+1, r, L, R);push_up(x, z, y);return x;
}int main()
{scanf("%d%d", &n, &q);for(int i = 1;i <= n;i ++){scanf("%d%d", a+i, b+i);y[i] = a[i]; x[i] = b[i];}sort(y+1, y+n+1); sizy = unique(y+1, y+n+1)-y;sort(x+1, x+n+1); sizx = unique(x+1, x+n+1)-x;for(int i = 1;i <= n;i ++){a[i] = lower_bound(y+1, y+sizy, a[i]) - y;b[i] = lower_bound(x+1, x+sizx, b[i]) - x; numx[b[i]] ++;v[a[i]].push_back(b[i]);  }for(int i = 1;i <= sizy;i ++)sort(v[i].begin(), v[i].end());for(int i = 1;i < sizy;i ++){for(int j = 0;j < v[i].size()-1;j ++)if(v[i][j]+1 < v[i][j+1]){int mi = min(min(j+1, (int)v[i].size()-j-1), quary(1, 1, sizx, v[i][j]+1, v[i][j+1]-1).ma);if(mi>ma) ma = mi; }for(auto x:v[i])c[x] ++, modify(1, 1, sizx, x, 0);}for(int i = 1;i < sizx;i ++) c[i] = 0;for(int i = 1;i < sizy;i ++){for(int j = 0;j < v[i].size()-1;j ++)if(v[i][j]+1 < v[i][j+1])ans += quary(1, 1, sizx, v[i][j]+1, v[i][j+1]-1).sum;for(auto x:v[i])c[x] ++, modify(1, 1, sizx, x, 1);}if(ma == 0)ans = 0;if(q&1)cout<<ma;else cout<<ans;puts("");return 0;
}

201609-5 祭坛相关推荐

  1. BZOJ2934 : [Poi1999]祭坛问题

    对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用at ...

  2. CCF201609-5 祭坛【线段树】(100分解题链接)

    试题编号: 201609-5 试题名称: 祭坛 时间限制: 2.0s 内存限制: 256.0MB 问题描述: 问题描述 在遥远的Dgeak大陆,生活着一种叫做Dar-dzo-nye的怪物.每当这种怪物 ...

  3. 计算机控制系统第2次作业,201609计算机控制系统作业2

    201609计算机控制系统作业2 单项选择题 第1题 在样条函数中,当加速度是常数直线段的时候,对应的位移是___. A.常数 B.直线 C.抛物线 D.三次样条 答案:C 第2题 步进电机细分的作用 ...

  4. mc服务器怎么修改祭坛的概率,邪术祭坛 (Eldritch Altar)

    邪术祭坛有3种,生成时按照以下几率生成. 1.可以生成血腥教徒,血腥骑士的邪术祭坛 (40%几率) 2.可以生成邪术守卫的邪术祭坛 (20%几率) 3.什么都生成不了的邪术祭坛(40%几率) 这3种祭 ...

  5. 龙ol服务器维护补偿boss,龙OL枭吴祭坛副本攻略

    枭吴祭坛位于凤翔,传送可达,为38级可进副本,推荐50+满队进入,此副本依然不推荐,路远怪多内攻疼.地图大,通刷很累时间可能会不够,建议前段右路走杀一个BOSS,直奔含金量高的后段两只BOSS,前后传 ...

  6. nginx在Centos下的安装,转:http://www.linuxidc.com/Linux/2016-09/134907.htm

    安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 一. gcc 安装 安装 nginx 需要 ...

  7. 201609计算机控制技术作业三,计算机控制技术大作业2015..doc

    计算机控制技术大作业2015. 深圳大学考试答题纸 (以论文.报告等形式考核专用)二○一四 -二○一五 学年度第 2 学期 课程编号1700470001课程名称计算机控制技术主讲教师评分学 号姓名专业 ...

  8. 【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)

    由于楼主是web开发方向,所以这里就介绍一下web接入qq登录的方法,以及和app的qq登录打通的方法 0.前提 已经有一个在工信部备案过的域名的网站,具体可以查询工信部的备案页面(请注意这里的信息很 ...

  9. ccf-csp 2016-2018部分题目总结

    目 录 2016-04 折点计数 俄罗斯方块 路径解析 游戏 网络连接 2016-09 最大波动 火车购票 炉石传说 交通规划 祭坛 2016-12 中间数 工资计算 权限查询 压缩编码 2017-0 ...

最新文章

  1. Python 3.8 新特性全面解读
  2. CountUp.js – 让数字以非常有趣的动画方式显示
  3. PMCAFF | 阿里PM的可用性测试秘籍:有理有据的用户体验优化
  4. 科大星云诗社动态20210831
  5. python 卡方检验 特征选择_结合Scikit-learn介绍几种常用的特征选择方法
  6. 沙老师的作业系列——Crackme3
  7. list array解析(总算清楚一点了)
  8. 【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...
  9. android thrift https,HTTPS 学习
  10. java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...
  11. Java开发人员的升级之路
  12. codesys中打开linux端的串口_CODESYS版本3.5 SP14 Patch 3发布
  13. 从Oracle到PostgreSQL:Storage Index 特性 vs BRIN 索引
  14. UE4 无法include “filename.generated.h”
  15. 打破数据孤岛难题,翼方健数解码隐私安全计算技术
  16. 第三方支付——微信web端支付(java)
  17. 零基础入行IT,怎么成为一名优秀的IT人才?
  18. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)
  19. python 环境配置
  20. java游戏暗金装备_暗黑2装备升级公式图解(暗金装备升级一览表)

热门文章

  1. 辍学程序员改变世界,这位长得像马云的90后要击败Facebook的扎克伯格了…
  2. JAVA软件图片浏览下载_java模拟浏览器下载图片
  3. java什么时候可能产生内存溢出_哪些场景会产生OOM?怎么解决?
  4. vue 一个页面有点请求需要同时发送_前端性能优化,这些你都需要知道
  5. java程序编六角星_跨平台移动端解决方案—Weex
  6. php定位和天气,基于thinkphp实现依据用户ip判断地理位置并提供对应天气信息的应用...
  7. php实现电脑自动关机,用批处理实现电脑自动关机
  8. python中test_在python中生成py.test测试
  9. 快速修改HTML5,HTML5无刷新修改URL(示例代码)
  10. gif android 点击 加载,android 加载显示gif图片的解决方案