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

1236. 递增三元组

en...

就是学了也有比较长的时间,能写出来的题目还是没有难度

希望你只是走的慢,但一直在路上

1236. 递增三元组 - AcWing题库

这个题的优化蛮好的

第一版:二分

#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int n; 
int a[N],b[N],c[N];
int ct[N];
long long ans;
int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){scanf("%d",&b[i]);}for(int i=0;i<n;i++){scanf("%d",&c[i]);}sort(a,a+n);sort(c,c+n);for(int i=0;i<n;i++){int x=b[i];int l=-1,r=n;while(l<(r-1)){int mid=(l+r)>>1;if(a[mid]<x) l=mid;else r=mid;}int tmp=l+1;l=-1,r=n;while(l<(r-1)){int mid=(l+r)>>1;if(c[mid]<=x) l=mid;else r=mid;}ans+=(long long)tmp*(n-r);}printf("%lld",ans);return 0;
}

第二版:因为对每个数都要二分,改成线性找,时间复杂度降O(n),但是排序O(nlogn)

#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int n; 
int a[N],b[N],c[N];
long long ans;
int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){scanf("%d",&b[i]);}for(int i=0;i<n;i++){scanf("%d",&c[i]);}sort(a,a+n);sort(b,b+n);sort(c,c+n);int l=-1,r=-1;for(int i=0;i<n;i++){while(l<(n-1)&&a[l+1]<b[i]) l++;while(r<(n-1)&&c[r+1]<=b[i]) r++;//   printf("%d\n",(l+1)*(n-1-r));ans+=(long long)(l+1)*(n-1-r);}printf("%lld",ans);return 0;
}

第三版:排序是为了确定比某个值小的数的个数,hash,总时间复杂度降O(n)

#include<iostream>
using namespace std;
const int N=100010;
int n; 
int ha[N],b[N],hc[N];
int cta[N],ctc[N];
long long ans;
int main(){scanf("%d",&n);for(int i=0;i<n;i++){int x; scanf("%d",&x);ha[x]++;}for(int i=0;i<n;i++){scanf("%d",&b[i]);}for(int i=0;i<n;i++){int x; scanf("%d",&x);hc[x]++;}for(int i=1;i<N;i++){cta[i]=cta[i-1]+ha[i-1];}for(int i=N-2;i;i--){ctc[i]=ctc[i+1]+hc[i+1];}for(int i=0;i<n;i++){ans+=(long long)cta[b[i]]*ctc[b[i]];}printf("%lld",ans);return 0;
}

http://www.xdnf.cn/news/4866.html

相关文章:

  • STL?vector!!!
  • spring ai alibaba 使用 SystemPromptTemplate 很方便的集成 系统提示词
  • U9C-SQL-采购订单视图
  • RGB矩阵照明系统详解及WS2812配置指南
  • 机器学习-无量纲化与特征降维(一)
  • flask开启https服务支持
  • 基于WSL用MSVC编译ffmpeg7.1
  • O2OA(翱途)服务器故障排查
  • 【AI提示词】蝴蝶效应专家
  • 【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践
  • 【递归,搜索与回溯算法篇】专题(一) - 递归
  • 初学python的我开始Leetcode题8-4
  • vue教程(vuepress版)
  • 深入理解二叉树(2)
  • Music AI Sandbox:打开你的创作新世界
  • 简单说明.nii.gz文件数据结构
  • QVariant 的核心用途
  • Springboot整合kafka简单使用
  • 功率级OBC自动化测试方案
  • swagger3融入springboot
  • keil使用
  • 【CF】Day54——Educational Codeforces Round 161 (Rated for Div. 2) DE
  • 【工具安装】Windows环境下Node.js的安装与配置
  • 网站公安备案流程及审核时间
  • SpringBoot默认选择CGLIB动态代理的深度解析:兼容性、性能与设计哲学
  • 【 window.addEventListener(‘message‘, handleMessage)无效的问题】
  • Java 中常见的数据结构及其常用 API
  • IBM崛起之路——领先的托管与咨询服务提供商
  • 【C++】C++函数指针详解与实用技巧
  • 15前端项目----用户信息/导航守卫