张嘉锡V

导航

 

2020年6月24日

摘要: Java多线程 实现多线程的几种方式 继承Thread类 自定义线程类继承Thread类 重写run()方法 创建线程对象,调用start()方法启动线程 public class MyThread entends Thread { @Override public void run() { // 阅读全文
posted @ 2020-06-24 22:16 张嘉锡V 阅读(60) 评论(0) 推荐(0) 编辑
 
摘要: 整数离散化 特点: 数的值域较大, 但个数很少。 例题:[区间和]:https://www.acwing.com/problem/content/804/ 假定有一个无限长的数轴,数轴上每个坐标上的数都是0。 现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。 接下来,进行 m 次询问 阅读全文
posted @ 2020-06-24 17:21 张嘉锡V 阅读(98) 评论(0) 推荐(0) 编辑
 
摘要: 位运算 移位运算 $$1 << n \Longleftrightarrow 2^n$$ $$1 >> x \Longleftrightarrow \frac n {2^x}$$ lowbit运算 int lowbit(int x) { return x & (-x); } 二进制的状态压缩 取出整数 阅读全文
posted @ 2020-06-24 14:47 张嘉锡V 阅读(51) 评论(0) 推荐(0) 编辑
 
摘要: 指数型枚举: 无个数限制 题目描述: 从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 朴素dfs枚举 int n; vector<int> ans; void calc(int x) { if(x == n + 1) { for(auto c: ans) printf("%d 阅读全文
posted @ 2020-06-24 11:06 张嘉锡V 阅读(50) 评论(0) 推荐(0) 编辑
 
摘要: 整数二分: 代码模板: // >= x : The smallest of the conditions while(l < r) { int mid = (l + r) >> 1; if(a[mid] >= x) r = mid; else l = mid + 1; } // <= x : the 阅读全文
posted @ 2020-06-24 11:05 张嘉锡V 阅读(47) 评论(0) 推荐(0) 编辑
 
摘要: 存储方式: 使用字符串、数组存储 从低位到高位依次存放, 即string[0] 存放个位 创建: 将字符串转换成数组 string x, y; vector<int> a, b; cin >> x >> y; for(int i = x.length() - 1; i >= 0; i--) a.pu 阅读全文
posted @ 2020-06-24 11:04 张嘉锡V 阅读(75) 评论(0) 推荐(0) 编辑
 
摘要: 前缀和 题目描述: 求一段整数序列中下标从l到r之间的所有整数的和 算法分析: 朴素算法 算法思路:: 从l到r遍历 时间复杂度:O(n) 前缀和算法 建立数组SN, s[i]存储的是从1到i的所有元素的和 ans = s[r] - s[l - 1] 时间复杂度:O(1) 一维前缀和 构造s[N]数 阅读全文
posted @ 2020-06-24 10:58 张嘉锡V 阅读(128) 评论(0) 推荐(0) 编辑
 
摘要: Quick_Sort and Merge_Sort Quick_Sort: 由小到大排序 算法思路: 确定一个分界点x, 设置两个指针i、j, i从下标0到x的下标处从前到后遍历, j由下标n - 1,到x的下标处由后到前遍历。 当i所指的数比x大,此时i指针停止。 当j所指的数比x小,此时j指针停 阅读全文
posted @ 2020-06-24 10:54 张嘉锡V 阅读(96) 评论(0) 推荐(0) 编辑