题目传送门题意:给两串字符串,操作1:替换其中一个字符串的某个位置的字符 操作2:查询从p开始相等的最长连续长度分析:树状数组可以维护一个区间内公共长度(连续)的情况,查询时用二分查找最远的端点即可。还可以用线段树去做,线段树能处理的问题很多,这题只要往右区间合并就行了。收获:1.线段树的区间合并又...
分类:
编程语言 时间:
2015-08-26 17:07:20
阅读次数:
184
题目传送门题意:给出一些花开花落的时间,问某个时间花开的有几朵分析:这题有好几种做法,正解应该是离散化坐标后用线段树成端更新和单点询问。还有排序后二分查找询问点之前总花开数和总花凋谢数,作差是当前花开的数量,放张图易理解:还有一种做法用尺取法的思想,对暴力方法优化,对询问点排序后再扫描一遍,花开+1...
分类:
其他好文 时间:
2015-08-25 21:10:20
阅读次数:
460
二分搜索是一种常用的搜索方法,它要求数组中的元素必须是有序存放的。不失一般性,我们假定数组元素按升序存放。二分搜索方法首先将关键字与位于数组中央的元素进行比较,比较结果有三种情况:
1)如果关键字小于中央元素,我们只需要继续在数组的前半部分进行搜索。
2)如果关键字与中央元素相等,则搜索结束,找到匹配元素。
3)如果关键字大于中央元素,我们只需要继续在数组的后半部分进行搜索。
二分搜索的代...
分类:
编程语言 时间:
2015-08-25 19:43:31
阅读次数:
169
H - 玻色-爱因斯坦凝聚态
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
Now, here is a fuction:
F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (...
分类:
其他好文 时间:
2015-08-21 21:36:13
阅读次数:
200
/**
* 功能:有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置。
*/
/**
* 思路:对二分查找法做修改,与mid比较的地方,如果mid为空字符串,则将mid换到离它最近的非空字符串的位置。
* @param strings
* @param str
* @return
*/
public static int search(Strin...
分类:
编程语言 时间:
2015-08-21 11:28:07
阅读次数:
200
1138 - Trailing Zeroes (III)
PDF (English)
Statistics
Forum
Time Limit: 2 second(s)
Memory Limit: 32 MB
You task is to find minimal natural number N, so that ...
分类:
其他好文 时间:
2015-08-20 22:39:33
阅读次数:
394
1138 - Trailing Zeroes (III)
PDF (English)
Statistics
Forum
Time Limit: 2 second(s)
Memory Limit: 32 MB
You task is to find minimal natural number N, so that ...
分类:
其他好文 时间:
2015-08-20 21:00:56
阅读次数:
223
一个有10亿条记录的文本文件,已按照关键字排好序存储。请设计算法,可以快速的从文件中查找指字关键字的记录。 因为已经排好序了,可以使用 二分查找方法检索。 又因为文件过于庞大,可以将文件File分成1000份子记录集即读入10000次,每次读入10亿/10000条记录; 每次 读入一次...
分类:
其他好文 时间:
2015-08-20 14:37:46
阅读次数:
241
栈、队列、链表都有他们各自的好处,同样的也有弊端的存在。
如果我想要一个有序的数组和链表这个当然很好实现。现在我要在这几个数据结构中查找一个值。先说数组,因为是有序的通过二分查找很快的就可以找到。查找的效率还是很高的,但如果要是插入呢,为了保证有序,我要先找到插入位置,然后再将比插入数字大的数字依次向后移动;这时的第一反应就是链表!他打插入速度很快,只要改变指针的指向就可以了。但是链表大查找要从头开始找啊。只有知道了前一个元素的地址才能知道下一个地址。所以链表查找起来又费劲了。这时候就有人引进了...
分类:
编程语言 时间:
2015-08-20 13:12:44
阅读次数:
132
首先介绍一下什么是二分法查找。
顾名思义二分法即多次将待查数组的长度折半,但前提条件时待查找数组中的数据需要是已经排序好了的数据。
主要思想:
对于待查找数组arr[low,high],其中high=arr.length-1,待查找元素des
(1)确定数组中间位置mid=(low+high)/2
(2)将查找值des与arr[mid]进行比较,若相等,则直接返回该位置;否则确定新的查找位置,继续二分查找。区域确定如下:如果arr[mid]>des由数组的有序性可知
arr[mid,mid+1..........
分类:
编程语言 时间:
2015-08-20 13:09:32
阅读次数:
118