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

张家口网站建设开发2023疫情第三波爆发时间

张家口网站建设开发,2023疫情第三波爆发时间,ajax 效果网站,网站视频下载软件蓝桥杯2024年真题java B组 【H.拼十字】 原题链接:拼十字 思路: 使用树状数组或线段树解决。 先将输入的信息存入到一个n行3列的数组中,将信息排序,按照长度小到大,长相同时,宽度小到大 排序。 建立三个…

蓝桥杯2024年真题java B组 【H.拼十字】

原题链接:拼十字
思路:

使用树状数组或线段树解决。

先将输入的信息存入到一个n行3列的数组中,将信息排序,按照长度小到大,长相同时,宽度小到大
排序。
建立三个树状数组,维护三种颜色对应的信息,树状数组的索引就是数据的宽度,值就是有几个这样宽度的数据。
遍历数组每组数据:
当颜色为0时,假设该组数据为6 3 0,则要求的就是其他两个颜色中宽度比当前宽度大的(因为长度已经从小到大排过序),也就是去1,2树状数组中找宽度比当前3的宽度大的,就是下标大于3的(就是宽度大于三的),就是1,2树状数组中的4到无穷大(就是到N)的和。
将该组数据加到对应的树状数组0中去,就是tree0.add(arr[i][1],1)

其他两种情况同理。
该过程中的树状数组中的很多空间是无效的,但还是通过了。

code:

import java.io.*;
import java.util.Arrays;
public class Main {static int N = 100005;static int MOD = 1000000007;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StreamTokenizer in = new StreamTokenizer(br);PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();int n = (int) in.nval;//数据信息,一行存储一个数据项int[][] arr = new int[n + 1][3];Tree tree0 = new Tree(N);Tree tree1 = new Tree(N);Tree tree2 = new Tree(N);for (int i = 1; i <= n; i++) {in.nextToken();arr[i][0] = (int) in.nval;in.nextToken();arr[i][1] = (int) in.nval;in.nextToken();arr[i][2] = (int) in.nval;}long res = 0;//排序,先按照长度升序排序,在按照宽度进行升序排序Arrays.sort(arr, (a, b) -> {if (a[0] != b[0]) {return Integer.compare(a[0], b[0]); // 按 arr[i][0] 升序}return Integer.compare(a[1], b[1]); // 如果 arr[i][0] 相同,按 arr[i][1] 升序});for (int i = 1; i <= n; i++) {//将当前的节点加入线段树中//先求和res %= MOD;if (arr[i][2] == 0){res += tree1.sum(arr[i][1]);res += tree2.sum(arr[i][1]);tree0.add(arr[i][1],1);} else if (arr[i][2] == 1) {res += tree0.sum(arr[i][1]);res += tree2.sum(arr[i][1]);tree1.add(arr[i][1],1);}else{res += tree0.sum(arr[i][1]);res += tree1.sum(arr[i][1]);tree2.add(arr[i][1],1);}}out.print(res);out.flush();out.close();br.close();}
}
class Tree{long[] tree;int N;public Tree(int N){this.N = N;tree = new long[N + 1];}//获取最右边的1public long lowBit(int i) {return i & -i;}public void add(int i,long  val) {while (i <= N) {tree[i] += val;i += lowBit(i);}}//计算的是原数组中的 1-i 对应的和public long query(int i) {long res = 0;while (i > 0) {res += tree[i];i -= lowBit(i);}return res;}public long sum(int i){return query(N) - query(i);}
}
http://www.dtcms.com/wzjs/204394.html

相关文章:

  • 比较有名的公司网站百度seo快速排名优化软件
  • 网站建设甲方原因造成停工seo网络搜索引擎优化
  • 哪里办网站不用备案中国优化网
  • 济南做公司网站郑州网站建设十大公司
  • 茶叶网站建设哪家公司网站建设多少钱
  • 辽宁朝阳百姓网免费发布信息网seo全网营销
  • seopc流量排名网站百度ai人工智能平台
  • 找源码的网站宁波seo推广推荐公司
  • 做食品检测的网站专业做seo推广
  • 千图网免费素材图库设计seo怎么刷排名
  • 沈阳网站网页百度搜索关键词技巧
  • 苏州做公司网站成人短期技能培训
  • 适合个人做的网站有哪些东西吗广州疫情最新动态
  • 巩义网络推广公司seo搜索引擎优化价格
  • 上海做网站汉狮网络郑州竞价托管
  • 请别人做网站有风险吗百度搜索入口
  • 怎样优化网站关键词排名靠前朝阳seo推广
  • 中国建筑土木建设有限公司网站哈尔滨网络推广
  • 营销型网站免费模板新冠咳嗽一般要咳多少天
  • 网站开发多少钱seo引擎优化服务
  • php网站中水印怎么做军事新闻
  • 深圳响应式网站找哪里站长推荐
  • 大庆建设大厦网站小网站怎么搜关键词
  • wordpress网站阿里云备案竞价恶意点击器
  • 网店美工需要掌握哪些软件搜狗整站优化
  • 怎么在招聘网站做评估碉堡了seo博客
  • 公司网站建设上海网上店铺的推广方法有哪些
  • 网站的费用多少广告联盟大全
  • 大同推广型网站建设查询关键词排名工具
  • 广东中山市做网站html网页制作代码