当前位置: 首页 > news >正文

二维偏序-蓝桥20102,没写完

代码:

暴力:只过了35%,双重for循环o(n^2)=1e10;

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N=1e9+10;
typedef long long LL;
typedef pair<int,int> PII;

int main()
{
  // 请在此输入您的代码
  //相当于找该(x,y)位置  0~x,0~y这个矩形范围内存在的点数
  int n,x,y;
  int ans=0;
  vector<PII> a;
  scanf("%d",&n);
  for(int i=1;i<=n;i++){
    scanf("%d %d",&x,&y);
    a.push_back({x,y});
  }
  sort(a.begin(),a.end());
  //先排序,默认pair按第一个first来排,所以只用看第二个参数,有几个是满足yi<yj的(该位置之前的数,有几个<=现在的数)
  for(int i=0;i<n;i++){
    int cnt=0;
    for(int j=0;j<i;j++){//区间[j,i]  1~i
      if(a[j].second<=a[i].second&&(i!=j)){
        cnt++;
      }
    }
    ans+=cnt;
  }
  printf("%d",ans);
  return 0;
}

注意这个vector是从下标为0开始的。我当时把for中i=1输入当成下标为1了,其实就是输n次

思路:

先看了题目给的表格有了一点想法,以该(x,y)为分界,左下方小于该点的点数和

后来排序后,发现可以从二维变一维,直接找在当前位置之前有几个数小于等于当前数的

注意i!=j

优化可以在一维这里优化,二重循环--->树状数组

相关文章:

  • 996引擎-源码学习:PureMVC Lua 中的 Facade 类
  • 【状态适配器模式:级联选择器多状态数据处理完整解决方案】
  • layui中transfer两个table展示不同的数据列
  • 基于RV1126开发板实现多路网络摄像头取流方案
  • 设计模式:策略模式 - 消除复杂条件判断的利器
  • 【算法】——会了二分查找,对O(logn)真的很敏感
  • LabVIEW 中 “Flatten To Json String” VI 应用及优势
  • 【C++取经之路】lambda和bind
  • LeetCode 3396 题解
  • 安装vllm
  • 【mllm】——x64模拟htp的后端无法编译debug
  • MySQL深分页问题
  • 【Code】《代码整洁之道》笔记-Chapter11-系统
  • Cuto壁纸 2.6.9 | 解锁所有高清精选壁纸,无广告干扰
  • 单细胞多组学及空间组学数据分析与应用
  • 《系统分析师-浏览试卷(一)总结》
  • 元生代品牌建设:平台实现工作流(comfyui)创建与技术文档说明
  • CVE-2025-32375 | Windows下复现 BentoML runner 服务器远程命令执行漏洞
  • JavaScript:基本语法
  • 电脑的usb端口电压会大于开发板需要的电压吗
  • 建设银行人力资源系统网站首页/论坛推广的特点
  • 哪些网站做的比较炫/免费的舆情网站app
  • 箱包官方网站模板/搜狗网站收录提交入口
  • 网站设计专业实验室建设/软文写作什么意思
  • 90设计网站怎么样/关键词指数
  • 做网站需要实名认证吗/自媒体软文发布平台