蓝桥杯 小朋友排队+
2016-04-13 13:25
246 查看
蓝桥杯 历届试题 小朋友排序
在这里用的树状数组和离线化
有不足之处还请大牛指出!
并没有 百分百正确 只通过了60%的数据测试
希望java大牛看到后能提出优化和改进。
在这里用的树状数组和离线化
有不足之处还请大牛指出!
并没有 百分百正确 只通过了60%的数据测试
希望java大牛看到后能提出优化和改进。
import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { static int[] old; static int[] now; static int[] treearray; static int[] left; static int[] right; static int[] hight; static int a; // static int n; public static void main(String args[]) { Scanner sc = new Scanner(System.in); a = sc.nextInt(); old = new int[a + 1]; now = new int[a + 1]; treearray = new int[a + 1]; for (int i = 1; i < old.length; i++) { now[i] = old[i] = sc.nextInt(); } // Arrays.sort(old); int k = 1; Map<Integer, Integer> hs = new HashMap<Integer, Integer>(); for (int i = 1; i < old.length; i++) { hs.put(old[i], k++); } for (int i = 1; i < now.length; i++) { now[i] = hs.get(now[i]); } // left = new int[a + 1]; for (int i = 1; i <= a; i++) { update(now[i], 1); left[i] = i - getSum(now[i]); } // sop(left); // right = new int[a + 1]; treearray = new int[a + 1]; for (int f = a; f >= 1; f--) { update(now[f], 1); right[f] = getSum(now[f] - 1); } // sop(right); // hight = new int[a + 1]; for (int i = 1; i <= a; i++) { hight[i] = left[i] + right[i]; } long ans = 0; for (int i = 1; i <= a; i++) { ans += (1 + hight[i]) * hight[i] / 2; } System.out.println(ans); } public static void update(int t, int x) { for (int i = t; i < a + 1; i += lowbit(i)) { treearray[i] += x; } } public static int getSum(int x) { int temp = 0; for (int j = x; j >= 1; j -= lowbit(j)) { temp += treearray[j]; } return temp; } private static int lowbit(int x) { // TODO Auto-generated method stub return x & -x; } }
相关文章推荐
- QLibrary加载so的注意事项
- android数据库sqlite基本操作。
- 可变参数列表
- 第七周项目(1)-普通函数求两点间距离
- Eclipse 下maven 笔记
- ubuntu系统的grub配置
- STL中二分查找 lower_bound()
- 关于java中文件下载中文乱码的事
- MyBatis异常 Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException:
- Hibernate 之 cascade 和 inverse
- Spark如何使用Akka实现进程、节点通信的简明介绍
- Podfile升级后的影响
- Best Time to Buy and Sell Stock
- Split函数,正则表达式与空字符串
- JSP大学实用教程(第2版)代码一
- 接受前台数据
- EXT.NET MVC 5 工作随笔02 传参时如果参数在当前页面获取不到时,用?解决
- C++第3次上机作业
- 规则引擎笔记
- Android 如何动态设置View参数,LayoutParams.addRules详解,TypedValue.applyDimension的使用