题意:给定一个颜色序列,维护:1、单点修改 2、区间查询不同颜色的种数 题解: 定义f[i]为i左边第一个和i颜色相同的位置,用分块来维护f。 询问:看区间中有多少个位置的f[i]<l 更新:暴力枚举p左右最近的与p颜色相同的位置,更新即可 #include <cmath> #include <cs ...
分类:
其他好文 时间:
2017-02-27 01:11:46
阅读次数:
234
题意:给定一个数列,维护:1、[L,R]之间所有的数+=W 2、求[L,R]中大于等于C的数的数量 题解:更新用add标记,头尾俩块暴力重构;查询将每个块排序然后二分找。 #include <cmath> #include <ctime> #include <cstdio> #include <cs ...
分类:
其他好文 时间:
2017-02-27 00:56:02
阅读次数:
198
题意:给定一个数列,要求维护:1、求倒数L个数中的最大值 2、在数列末尾插入(最近的1询问的答案+x)%D。其中初始序列为空。 法一:因为询问最多200000个,所以直接建一棵大小为M的线段树维护即可 #include <cstdio> #include <cstring> #include <cs ...
分类:
Web程序 时间:
2017-02-26 08:09:44
阅读次数:
242
1,数据库每次查询只能使用一个索引 2,假设数据 表T (a,b,c) rowid 为物理位置rowid a b c(1) 1 1 1(2) 2 1 13(3) 2 2 14(4) 1 3 3(5) 2 3 12(6) 1 2 5(7) 2 3 9(8) 1 2 2(9) 1 ...
分类:
数据库 时间:
2017-02-25 21:24:10
阅读次数:
216
理想的生活 干净的环境, 规律的圈子, 中意的人...... ...
分类:
编程语言 时间:
2017-02-11 12:32:56
阅读次数:
197
1、二分法 int[] arr = {1,2,3,4,5,6,7,8,9,10}; int key = 2; int min ,max ,mid; min = 0; max = arr.length-1; mid = (min+max)>>1;//(min+max)/2 while (arr[mid ...
分类:
编程语言 时间:
2017-02-06 10:57:37
阅读次数:
235
废话不多说,先来程序.一步一步看注释, 首先要注意:使用二分法时,数组必须是有序的,也就是从大到小或者从小到大的,不能是无序的 ...
分类:
编程语言 时间:
2017-02-05 16:44:14
阅读次数:
194
废话不多说,先来程序.一步一步看注释,首先要注意:使用二分法时,数组必须是有序的,也就是从大到小或者从小到大的,不能是无序的publicstaticinthalfSearch(int[]arr,intkey){
intmin,max,mid;//分别为最小值,最大值,和中间值
min=0;
max=arr.length-1;
mid=(max+min)/2;//这应该..
分类:
编程语言 时间:
2017-02-05 15:44:02
阅读次数:
160
%%转载 前两天看到一篇介绍二分原理 的帖子,想起了以前写二分法的事情。二分法看似简单,但实际写的时候却发现 +1 -1 的地方很容易弄错。幸好之前看过循环不变量的介绍。 所谓循环不变量,是指在循环过程中保持不变的量。具体取什么样的量呢?显然,pi之类的常量在任何循环中都保持不变,但对分析循环并没有 ...
分类:
编程语言 时间:
2017-01-28 17:26:33
阅读次数:
273
快速排序: void sort(int *a,int left,int right){ if(left>=right) { return ; } int i=left; int j=right; int key=a[left]; while(i<j) { while (i<j&&key<=a[j]) ...
分类:
编程语言 时间:
2017-01-21 20:23:37
阅读次数:
184