begin

Ikki's Story IV - Panda's Trick_poj3207_2-sat

跟風遠走 提交于 2020-02-24 23:05:47
 Description liympanda, one of Ikki’s friend, likes playing games with Ikki. Today after minesweeping with Ikki and winning so many times, he is tired of such easy games and wants to play another game with Ikki. liympanda has a magic circle and he puts it on a plane, there are n points on its boundary in circular border: 0, 1, 2, …, n − 1. Evil panda claims that he is connecting m pairs of points. To connect two points, liympanda either places the link entirely inside the circle or entirely outside the circle. Now liympanda tells Ikki no two links touch inside/outside the circle, except on

Leetcode-探索 | 旋转数组

落爺英雄遲暮 提交于 2020-02-24 09:57:41
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100] 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的原地算法。 —————————————————————————————————————————————— 1. 暴力模拟,O(n*k),TLE: 1 class Solution(object): 2 def rotate(self, nums, k): 3 """ 4 :type nums: List[int] 5 :type k: int 6 :rtype: void Do not return anything, modify nums in-place instead. 7 """ 8 extraLattice = 0 9

C++中迭代器原理、失效和简单实现

妖精的绣舞 提交于 2020-02-22 22:19:52
目录 迭代器的使用 迭代器的种类 迭代器的失效 迭代器的实现 1.迭代器的使用 为了提高C++编程的效率,STL中提供了许多容器,包括vector、list、map、set等。有些容器例如vector可以通过脚标索引的方式访问容器里面的数据,但是大部分的容器不能使用这种方式,例如list、map、set。STL中每种容器在实现的时候设计了一个内嵌的iterator类,不同的容器有自己专属的迭代器,使用迭代器来访问容器中的数据。除此之外,通过迭代器,可以将容器和通用算法结合在一起,只要给予算法不同的迭代器,就可以对不同容器执行相同的操作,例如find查找函数。迭代器对指针的一些基本操作如*、->、++、==、!=、=进行了重载,使其具有了遍历复杂数据结构的能力,其遍历机制取决于所遍历的数据结构,所有迭代的使用和指针的使用非常相似。通过begin,end函数获取容器的头部和尾部迭代器,end 迭代器不包含在容器之内,当begin和end返回的迭代器相同时表示容器为空。 template<typename InputIterator, typename T> InputIterator find(InputIterator first, InputIterator last, const T &value) { while (first != last && *frist !=

PAT (Basic Level) Practice 1030 完美数列 (25分) (使用upper_bound进行二分查找!)

Deadly 提交于 2020-02-22 15:02:56
1.题目 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 输入格式: 输入第一行给出两个正整数 N 和 p,其中 N(≤10​5​​)是输入的正整数的个数,p(≤10​9​​)是给定的参数。第二行给出 N 个正整数,每个数不超过 10​9​​。 输出格式: 在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。 输入样例: 10 8 2 3 20 4 5 1 6 7 8 9 输出样例: 8 2.题目分析 使用uppper_bound函数进行二分查找 知识补充( https://blog.csdn.net/qq_40160605/article/details/80150252 ) 在 从小到大 的排序数组中 lower_bound( begin,end,num):从数组的begin位置到 end-1 位置二分查找 第一个大于或等于num的数字 ,找到返回该数字的地址,不存在则返回 end 。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。 upper_bound( begin,end,num):从数组的begin位置到 end-1 位置二分查找 第一个大于num的数字 ,找到返回该数字的地址,不存在则返回end

ado事务

北城以北 提交于 2020-02-22 13:21:25
Delphi(Pascal) code var sqlStr:String; begin sqlStr:= ' begin ' sqlStr:= sqlStr+ 'update table1 set col1 = ''test'' where 1=2;'; sqlStr:= sqlStr+ 'update table1 set col1 = ''test2'' where 1=2;'; sqlStr:= sqlStr+ ' end '; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(sqlStr); adoquery1.ExecSQL; end; 把sql语句用begin...end包起來,再提交給DB处理,就OK了! ADOQuery的批处理方式 比如在一个窗体里有一个“取消”和“确定”按钮,“取消”按钮批次取消所有修改,“确定”按钮批次提交: 1.设置QryDef(数据集)的LockType为ltBatchOptimistic,CursorType为ctStatic,CursorLocation为clUseClient 2.“确定”按钮的单击事件为: if QryDef.Connection.InTransaction then begin try QryDef.UpdateBatch(); QryDef

STL

徘徊边缘 提交于 2020-02-22 05:28:53
常用STL及其函数 list 链表:双链表 不常用 assign ( ) 给list赋值 back ( ) 返回最后一个元素 begin ( ) 返回指向第一个元素的迭代器 clear ( ) 删除所有元素 empty ( ) 如果list是空的则返回 true end ( ) 返回末尾的迭代器 erase ( ) 删除一个元素 front ( ) 返回第一个元素 get_allocator ( ) 返回list的配置器 insert ( ) 插入一个元素到list中 max_size ( ) 返回list能容纳的最大元素数量 merge ( ) 合并两个list pop_back ( ) 删除最后一个元素 pop_front ( ) 删除第一个元素 push_back ( ) 在list的末尾添加一个元素 push_front ( ) 在list的头部添加一个元素 rbegin ( ) 返回指向第一个元素的逆向迭代器 remove ( ) 从list删除元素 remove_if ( ) 按指定条件删除元素 rend ( ) 指向list末尾的逆向迭代器 resize ( ) 改变list的大小 reverse ( ) 把list的元素倒转 size ( ) 返回list中的元素个数 sort ( ) 给list排序 splice ( ) 合并两个list swap ( )

[置顶] Effective STL 学习笔记

久未见 提交于 2020-02-21 11:39:33
看Effective STL 作的一些笔记,希望对各位有帮助。 以下是50条条款及相关解释。 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型。 2. 不要试图编写独立于容器类型的代码。 3. 确定容器中的对象拷贝正确而高效。也就是防止在存在继承关系时发生剥离。 4. 调用empty而不是检查size()是否为0来判断容器是否为空。 原因是调用empty比检查size()更加高效。 5. 尽量使用区间成员,而不是多次使用与之对应的单元素成员函数,原因是这样更加高效。 如尽量使用vector的 assign 或 insert 成员函数,而不是一直使用 push_back 。 6. 小心C++编译器最烦人的分析机制 。如 下面的代码中的第二句被C++解释成为了函数声明,这很奇怪但又符合标准。 ifstream dataFile ("ints.dat") list <int> data( istream_iterator<int>(dataFile), istream_iterator<int>() ); // 被解释成为函数声明 正确的写法是这样的,注意第一参数两边的括号: list <int> data( ( istream_iterator<int>(dataFile) ) , istream_iterator<int>() ); 这是因为C+

Ikki's Story IV - Panda's Trick poj3207 tarjan+2-SAT

烈酒焚心 提交于 2020-02-21 04:26:39
题意 / Description : liympanda, one of Ikki’s friend, likes playing games with Ikki. Today after minesweeping with Ikki and winning so many times, he is tired of such easy games and wants to play another game with Ikki. liympanda has a magic circle and he puts it on a plane, there are n points on its boundary in circular border: 0, 1, 2, …, n − 1. Evil panda claims that he is connecting m pairs of points. To connect two points, liympanda either places the link entirely inside the circle or entirely outside the circle. Now liympanda tells Ikki no two links touch inside/outside the circle, except

linux C获取时间戳(精确到毫秒)

本秂侑毒 提交于 2020-02-20 13:06:26
最近有个需求,需要数据库程序统计一次sql查询的过程耗时多久,于是乎就需要程序获取当前时间戳,由于这个时间非常短,因此需要精确的毫秒,话不多说,直接给程序~ #include <stdlib.h> #include <stdio.h> #include <sys/time.h> #include <unistd.h> int main(){ //执行sql之前 struct timeval begin; gettimeofday(&begin,NULL); long long beginTime = (long long)begin.tv_sec * 1000 + (long long)begin.tv_usec / 1000; printf("beginTime is:%ld\n",beginTime); //执行sql的过程 sleep(5); //sql执行之后 struct timeval end; gettimeofday(&end,NULL); long long endTime = (long long)end.tv_sec * 1000 + (long long)end.tv_usec / 1000; printf("endTime is:%ld\n",endTime); long long interval = endTime - beginTime;

[算法]找到无序数组中最小的K个数

痴心易碎 提交于 2020-02-20 01:45:22
题目: 给定一个无序的整型数组arr,找到其中最小的k个数。 方法一: 将数组排序,排序后的数组的前k个数就是最小的k个数。 时间复杂度:O(nlogn) 方法二: 时间复杂度:O(nlogk) 维护一个有k个数的大根堆,这个堆代表目前选出的k个最小的数。在堆的k个元素中堆顶元素是最小的k个数中最大的那个。 接下来要遍历整个数组,遍历的过程中看当前数是否比堆顶元素小。如果是,就把堆顶元素替换成当前数,然后调整堆。如果不是,则不做任何操作,继续遍历下一个数。在遍历完成后,堆中的k个数就是所有数组中最小的k个数。 程序: public static int[] getMinKNumsByHeap(int[] arr, int k) { if (k < 1 || k > arr.length) { return arr; } int[] heap = new int[k]; for (int i = 0; i != k; i++) { heapInsert(heap, arr[i], i); } for (int i = k; i < arr.length; i++) { if (arr[i] < heap[0]) { heap[0] = arr[i]; heapify(heap, 0, k); } } return heap; } private static void