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

甘肃做网站哪个平台好郑州东区做网站电话

甘肃做网站哪个平台好,郑州东区做网站电话,破解wordpress后台密码,中文网站排名文章目录 题目原题链接思路分析二分做法1二分做法2双指针做法前缀和解法 题目 原题链接 递增三元组 思路分析 由时间复杂度可知需要至少优化到 O ( n l o g n ) O(nlogn) O(nlogn)才行 而纯暴力枚举三个数组的话#xff1a; O ( n 3 ) O(n^3) O(n3) 可以考虑将b[]作为标志 O ( n 3 ) O(n^3) O(n3) 可以考虑将b[]作为标志枚举a[]中小于b[i]的和c[]中大于b[i]的 既然是查找 这种类型的题目可以想到用二分或者双指针来降低枚举的时间复杂度 二分做法1 #include iostream #include algorithm using namespace std; typedef long long LL; const int N 100010; int a[N], b[N], c[N]; int n; bool check_a(int mid, int x) {if(a[mid] x) return true;else return false; } bool check_c(int mid, int x) {if(c[mid] x) return true;else return false; } int main() {cin n;for(int i 1; i n; i) scanf(%d, a[i]);for(int i 1; i n; i) scanf(%d, b[i]); for(int i 1; i n; i) scanf(%d, c[i]);sort(a 1, a 1 n);sort(b 1, b 1 n);sort(c 1, c 1 n);LL res 0;for(int i 1; i n; i) { //以b[]为参照物int st 0, ed 0;int la 1, ra n, lc 1, rc n;while(la ra) {int mid la ra 1 1;if(check_a(mid, b[i])) la mid;else ra mid - 1;}if(a[ra] b[i]) st ra;while(lc rc) {int mid lc rc 1;if(check_c(mid, b[i])) rc mid;else lc mid 1;}if(c[rc] b[i]) ed n - rc 1;res (LL)st * ed;}printf(%lld, res);return 0; }二分做法2 上方的只需要变动这块就行直接调用库函数 for(int i 1; i n; i) { //以b[]为参照物int st 0, ed 0;int la 1, ra n, lc 1, rc n;// while(la ra) {// int mid la ra 1 1;// if(check_a(mid, b[i])) la mid;// else ra mid - 1;// }// if(a[ra] b[i]) st ra;//要想找第一个小于的那么可用第一个大于等于的-1st lower_bound(a 1, a 1 n, b[i]) - a - 1;// while(lc rc) {// int mid lc rc 1;// if(check_c(mid, b[i])) rc mid;// else lc mid 1;// }// if(c[rc] b[i]) ed n - rc 1;//找第一个大于的可直接用uppered n - (upper_bound(c 1, c n 1, b[i]) - c) 1;res (LL)st * ed;}双指针做法 //双指针只需修改上方为下面这样即可 int l 1, r 1; for(int i 1; i n; i) {while(an a[l] b[i]) l;while(cn c[r] b[i]) r;ans (LL)(l-1)*(n-r1); }前缀和解法 #includeiostream #includecstdio #includecstring #includealgorithm using namespace std; const int N 100010; int n; int a[N],b[N],c[N]; int as[N]; //as[N]表示在A[]中有多少个数小于b[i] int cs[N]; //cs[N]表示在C[]中有多少个数小于b[i] int cnt[N],s[N]; //s[i]表示1~i之间的数的数量int main() {cin n;long long res 0;//a,b,c的目的是为了范围从1开始以便后续使用前缀和for(int i 0;i n;i) scanf(%d,a[i]),a[i];for(int i 0;i n;i) scanf(%d,b[i]),b[i];for(int i 0;i n;i) scanf(%d,c[i]),c[i];//求as[i]for(int i 0;i n;i) cnt[a[i]]; //某个数的数量for(int i 1;i N;i) s[i] s[i-1] cnt[i]; //前缀和for(int i 0;i n;i) as[i] s[b[i] - 1]; //1到b[i]之间的数的数量//求cs[i]memset(cnt,0,sizeof cnt); //将cnt重置为0memset(s,0,sizeof s); //将s重置为0for(int i 0;i n;i) cnt[c[i]];for(int i 1;i N;i) s[i] s[i-1] cnt[i];for(int i 0;i n;i) cs[i] s[N-1] - s[b[i]];//枚举每个b[i]for(int i 0;i n;i) res (long long)as[i] * cs[i];cout res endl;return 0; }
http://www.pierceye.com/news/891349/

相关文章:

  • 单页面网站可以做自适应网站吗建筑设计培训
  • 做海报可以在哪些网站下载素材一键生成装修效果图app
  • 福田区住房和建设局官方网站wordpress仿凡客商城主题
  • 做下载网站用什么程序好深圳公司注册服务
  • 猎头网站模板济源专业网站建设(制作网站)
  • kotlin做网站单页应用网站
  • 邢台网站改版开发长沙教育网站开发
  • 网站开发人员必备技能网站背景图片自动切换
  • 企业网站建立策划书有网站吗给一个
  • 外贸建站有哪些公司建设主管部门网站查询
  • 泰安市网站建设广州优化公司哪家好
  • 手机网游传奇西安关键词优化平台
  • 网站建设公司权威机构3d虚拟人物制作软件
  • 北京网站建设seo公司哪家好阿里巴巴企业邮箱登录入口
  • 广州shopify代建站新产品代理
  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设
  • 如何用家用电脑做网站wordpress的伪静态
  • 东营市城市和建设管理局网站网络基础知识点
  • 怎么制作网站链接转发视频网页游戏开服表怎么取消