- 博客(105)
- 资源 (1)
- 收藏
- 关注
原创 寻找峰值,二分
二分法:当num[mid] > num[mid+1]时,处于下坡阶段,峰值在左边,r=mid当num[mid] <= num[mid+1]时,处于上坡阶段,峰值在右边,l=mid+1最后返回l,即为其中一个峰值点class Solution: def findPeakElement(self, nums): l=0 r=len(nums)-1 while(l<r): mid = (l+...
2021-03-13 21:13:55
130
原创 位运算重复数字
腾讯面试题:https://www.jianshu.com/p/63862cfcaa02class Solution(object): def findDuplicates(self, nums): """ :type nums: List[int] :rtype: List[int] """ res = [] // 逐个遍历,将 num 所对应的 index 设置为负数。
2021-03-09 22:43:27
279
原创 leetcode 两正序数组的中位数
class Solution: def findMedianSortedArrays(self, nums1, nums2) : le1 = len(nums1) le2 = len(nums2) mid = int((le1 + le2) / 2) i = 0 j = 0 flag = 0 pre = 0 las = 0 cur = -1 .
2020-06-11 16:58:33
161
转载 c/c++ char* string型 排序
char:[cpp] view plain copy#include<algorithm> #include<cstring> #include<cstdio> #define M 100000 #define len 22 using namespace std; char str[M][len]; int cmp1(const void *a...
2018-03-29 22:34:05
1553
原创 uvalive4487 带权并查集
两种操作,I p q v表示p^q = v,如果与之前有冲突, 则输出“The first i facts are conflicting.”其中i为之前所有的I操作的次数(算上当前冲突这次)。Q k p1p2..pk表示求p1^p2...^pk的值,输出值或“I don't know.”首先,I操作后面跟的参数个数不确定所以用if(sscanf(s, "%d%d%d", &p, &q,
2014-10-04 19:05:08
736
原创 UVA11732 Trie
strcmp() is a library function in C/C++ which compares two strings. It takes two strings as input parameter and decides which one is lexicographically larger or smaller: If the first string is greater
2014-08-30 16:44:16
699
原创 LA3938 线段树 动态求区间最大连续和
After doing Ray a great favor to collect sticks for Ray, Poor Neal becomes very hungry. In return for Neal's help, Ray makes a great dinner for Neal. When it is time for dinner, Ray arranges all the d
2014-08-28 16:02:46
930
原创 LA3942 Trie+DP
Each of the following S lines contains one word from the set. Each word will be at most 100 characters long. There will be no two identical words and all letters in the words will be lowercase.The
2014-08-28 14:03:42
722
原创 UVA11235 RMQ
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local ContestProblem F: Frequent valuesYou are given a sequence of n integers a1 , a2 , ... , an in non-decreasin
2014-08-27 10:51:18
741
原创 线段树+扫描线
参考:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html分析:1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度2.重点:扫描线法:假想有一条扫描线,从左往右(从右往左),或者从下往上(从上往下)扫描过整个多边形
2014-08-24 10:48:41
1032
原创 HDU1823 二维线段树 求最大值
Luck and LoveTime Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5382 Accepted Submission(s): 1344Problem Description世界上上最远的距离不是
2014-08-23 19:56:59
942
原创 POJ3140 简单树形DP
Contestants DivisionTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 8119 Accepted: 2318DescriptionIn the new ACM-ICPC Regional Contest, a special moni
2014-08-17 21:04:33
673
原创 POJ1463 简单树形DP
Strategic gameTime Limit: 2000MS Memory Limit: 10000KTotal Submissions: 6260 Accepted: 2883DescriptionBob enjoys playing computer games, especially strategic game
2014-08-17 20:40:55
639
原创 POJ1185 炮兵阵地 状态DP
炮兵阵地Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 19217 Accepted: 7421Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也
2014-08-16 19:44:01
613
原创 Hrbustoj1376 能量项链 简单区间DP
能量项链Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 76(23 users)Total Accepted: 30(22 users)Rating: Special Judge: NoDescription在Mars星
2014-08-16 19:10:16
855
原创 hrbustoj1212 乘积最大 区间DP
题意:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大
2014-08-16 17:09:24
703
原创 LA2572 UVA1308
Do you know confetti? They are small discs of colored paper, and people throw them around during parties or festivals. Since people throw lots of confetti, they may end up stacked one on another, so t
2014-07-25 11:25:52
658
原创 win8下更改codeblocks颜色
因为白色太刺眼!所以可以改成一下风格!首先找到 C:\Users\xdq\AppData\Roaming\codeblocks的defoult
2014-05-11 16:06:30
673
原创 约瑟夫环
System OverloadTime Limit: 10 Seconds Memory Limit: 32768 KBRecently you must have experienced that when too many people use the BBS simultaneously, the net becomes very, very slow.
2014-04-19 10:39:42
640
原创 后缀数组小结
---------------具体见参考资料.-------------《后缀数组-处理字符串的有力工具 》。后缀数组三个主要数组:sa[]--下标为此后缀排名,值为排该名的是誰!rank[]--下标和值 与 sa数组刚好相反!height[i]==后缀sa[i] 与后缀 sa[i-1] 的最长公共前缀长度!常用按height值二分的方法来得到 每两个后缀(因为height只是
2014-04-02 22:22:00
607
原创 排列公式
int C(int n, int k){ int i, ret = 1; for(i = 1; i <= n - k; ++i) { ret *= k + i; ret /= i; } return ret;}
2014-03-30 22:06:52
522
原创 KMP
用一句话概括“若模式串 P 的前 i 个字符组成的子串为S,那么‘S的前next[i]个字符’与‘S的后 next[i]个字符’相同。” 举例:模式串 P 为 ababaaab。next[5]的值为 3。这说明 P 的前 5 个字符组成的字符串ababa 的“前3 个字符”与“后 3 个字符”相同,均为 aba。 [POJ][2406][KMP] Power Strings--
2014-03-26 20:49:23
554
原创 仿射密码
描述仿射密码是替换密码的另一个特例,可以看做是移位密码和乘数密码的结合。其加密变换如下:E(m)=(k1*m+k2) mod q;(其中k1,k2为密钥,且0现已知一经过仿射加密的密文和密钥,请破译出它的明文。输入输入包含不超过1000组数据;每组数据包含一个由大写字母组成的字符串和两个正整数k1,k2,字符串长度不超过50,0输出每组输出占一行
2014-02-18 15:35:26
3399
原创 康托展开
知识点: 康托展开 和 逆康托展开/**注:转载zhongkeli**/康托展开 康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。 这个公式可能看着让人头大,最好举个例子来说明一下。例如,有一个数组 s = ["A", "B", "C
2014-02-15 19:34:52
652
原创 大数取余
(a * b) % c = ((a % c) * (b % c)) % c(a + b) % c = ((a % c) + (b % c)) % c10000位大的数字可以分开算:比如:m=123123 = (1*10 + 2)*10 + 3m%n = 123%n = (((1%n * 10%n + 2%n)%n * 10%n) % n + 3%n)%nstring
2014-02-15 17:36:04
861
原创 快速幂取模
描述求a的b次方对c取余的值 输入第一行输入一个整数n表示测试数据的组数(n每组测试只有一行,其中有三个正整数a,b,c(1=输出输出a的b次方对c取余之后的结果样例输入32 3 53 100 1011 12345 12345样例输出3110481#include using namespace s
2014-02-15 13:47:27
602
原创 汉诺塔
汉诺塔(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片
2014-02-12 20:58:36
636
原创 欧拉函数
poj2478--裸题题解:就是求n以内 所有互素的数 的组合数! 即n以内所有整数的欧拉函数之和!欧拉函数知识点 可以参考白书。// 2478 Accepted 4084K 235MS C++ 620B // 2478 Accepted 8000K 282MS C++ 735B #include //详细可以参见 白书!#include#includeusing names
2014-02-06 21:05:30
991
原创 线性同余方程
/*********PS:该知识点必须先学 模线性方程!!**********/问题描述:给出bi,ni的值,且n1, n2, n3,…, ni两两之间不一定互质,求Res的值? 解:采用的是合并方程的做法。 这里将以合并第一第二个方程为例进行说明 由上图前2个方程得(设k1、k2为某一整数):解:采用的是合并方程的做法。 这里将以合并第一第二个方程为例进行说明
2014-02-01 21:26:25
886
原创 模线性方程
poj2115大致题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。若在有限次内结束,则输出循环次数。否则输出死循环。解题思路:根据题意可得方程:A+C*X=B (X 再%2^k 就是最后要的结果。)X=[(B-A) / C]% 2^k =[(B-A) % 2^k] / C (C 不需
2014-01-29 21:31:30
762
原创 二次筛素数!
坑爹的解说,一点都不详细。。害我想好久。。poj--2689题意 找一个范围内的 相邻的 差 最小和最大 的 两个素数!因为这个范围的上限值可能到了 int 的最大值。所以直接用一次筛出全部素数 肯定超时,数组也开不到20多亿!所以这里接触到 二次筛法!!因为 范围 (L, U)其里面的合数的 一个素因子不可能 超过 sqrt(U)。-------PS:这个与我们判断
2014-01-25 22:54:56
815
原创 gcd简单应用
相等的最小公倍数Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 145(55 users)Total Accepted: 63(44 users)Rating: Special Judge: NoDescription定
2014-01-17 10:03:38
792
原创 Splay小结
Splay基本操作:1.rotate() 旋转操作---包含三种情况2.splay() 伸展-----一般是旋到根或根的父亲的下面3.rotate_to() 先找到要伸展的结点,再splay;4.push_up() 向上维护根的信息5.push_down()向下下放延迟标记6.Cut() 删除一个区间7.insert()插入一个区间8.Flip()翻转一个区间9
2013-12-08 22:00:18
765
原创 Treap小结
Treap(Tree+Heap)---是一种通过 rand() 来随机生成数字作为修正值来调整的平衡树。基本操作:1.旋转。2.插入(合并重复的),删除(懒惰删除)。3.查最值,求第k小,求排名。4.中序遍历就是从小到大的。5.维护附加关键字.1.求第k小:POJ1442//12321199 1442 Accepted 976K 204MS C++ 2080B
2013-11-29 20:20:02
690
原创 线段树小结
如果是1~n 个数 那么我们知道线段树 最后一层 一定是n个结点! 那么 可得线段树 最多的结点数为 2^(log2(n)+1)-1 个单点更新HDU1754//9596209 2013-11-16 12:13:35 Accepted 1754 531MS 7184K 1579 B#include #includeusing namespace std;#define MA
2013-11-20 19:37:13
996
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人