- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 hdu3068 Manacher模板
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;//#pragma comment(linker, "/STACK:102400000,1024
2016-04-27 10:10:09 217
原创 51nod1066bash游戏
题目:一堆石子有n个, 每次可以取大于等于1不超过m的任意个,去最后一个的人胜利,给你n , m ,问先手必胜还是后手必胜。思路:最优解是两个人每回合取(m+1)个数。所以只需要判断n%(m+1)的结果就可以#include #include #include #include #include #include #include #include #inc
2016-04-25 18:13:33 375
原创 Codeforces3D#51nod1476 括号匹配的最小代价
题目大意:这里有一个关于合法的括号序列的问题。如果插入“+”和“1”到一个括号序列,我们能得到一个正确的数学表达式,我们就认为这个括号序列是合法的。例如,序列"(())()", "()"和"(()(()))"是合法的,但是")(", "(()"和"(()))("是不合法的。我们这有一种仅由“(”,“)”和“?”组成的括号序列,你必须将“?”替换成括号,从而得到一个合法的括号序列。
2016-04-25 17:28:38 1012
原创 wust1591
题目大意:有串P,Q,任选一个串S使得三者最长公共子序列最小。解法:直接统计字符出现次数….出现次数最少的那个就是…..…………………………………………………………………………………………#include #include #include #include #include #include #include #include #include
2016-04-25 15:43:42 232
原创 wust1592期望
题目大意:有n个点,每个点得分概率为p,连续x个得分点的总得分为1+2+3+..+x,求n个点总得分的期望解法 E(n)=1*p^n+2*p^(n-1)+...+n*p在用错位相减法求出结果为:E(n) = (p^(n+2) - (n + 1)p^2 + nP) / (p-1)^2特判p = 1的情况。#include #include #incl
2016-04-25 15:21:10 227
原创 wust1593线段树
题目大意:给你n个数,m次操作,操作有两种 0 l r ,计算n个数从l乘到r后置0的个数,1 a b ,将a位置换位b。每个数均小于100,n,m思路:简单的线段树,每个节点维护该区间拥有的2的因子个数,5的因子个数,以及数据里是否拥有0.每次计算,如果有0输出1,否则输出因子2和5的最小个数。ps:记录0的个数的时候没有0忘记初始化为0.。。。。。。。#include
2016-04-25 15:00:31 236
原创 poj1845 逆元,快速模幂
题目大意:给定两个正整数和,求的所有因子和对9901取余后的值。分析:很容易知道,先把分解得到,那么得到,那么 的所有因子和的表达式如下 因为要取模且存在除法,所以要用到逆元。对于正整数和,如果有,那么把这个同余方程中的最小正整数解叫做模的逆元。 逆元一般用扩展欧几里得算法来求得,如
2016-04-22 13:29:43 1082
原创 51nod 125乘法逆元 (扩展欧几里得)
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。Input输入2个数M, N中间用空格分隔(1 Output输出一个数K,满足0 Input示例2 3Output示例2思路:对于正整数和,如果有,那么把这
2016-04-22 09:28:11 1037
转载 乘法逆元
定义:满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。为什么要有乘法逆元呢?当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。证:(其实很简单。。。)根据b*k≡1 (mod p)有b*k=p*
2016-04-20 18:03:10 282
原创 hdu1358 KMP循环节
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#pragma comment(linker, "/STACK:102400000,102400
2016-04-13 20:52:18 273
原创 ubuntu如何强制关闭qq和启动qq
第一次在终端直接输入qq就启动了,但是后拉力鼠标放到qq的图表上就看不到了,也打不开qq主面板。上网查了一下首先,用ps查看进程,方法如下:$ ps -ef……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 0 11:38 ? 00:00
2016-04-11 19:46:44 2753
原创 ubuntu 安装搜狗输入法
1、百度下载搜狗拼音for linux2、安装3、运行im-config命令,选ok是,选中fcitx(启用小企鹅拼音) , 然后退出去重启电脑。4、重启后看输入法那一栏能不能切换到搜狗拼音,不能的话运行fcitx-config-gtk3,选择窗口左下角的+号,取消只显示当前语言的勾,搜索搜狗输入法,添加即可
2016-04-11 14:27:05 261
原创 HDU3746 KMP相同公共前缀和公共后缀的最大长度应用及KMP
题目大意:在字符串后面最少添加多少个字符可以实现两次循环。思路:前面有提到过字符串相同公共前缀和公共后缀的最大长度。他的求法和next求法类似,次数也用next数组命名。求得相同前缀和的后缀的最长长度后,进行判断。如果next[last] = 0,则说明这个字符在前面只出现了一次,必须在结尾加len个字符。若果next[last]刚好可以被字符创长度整除,说明前面已经构成了循环,所以添加0
2016-04-11 13:31:26 805
转载 hdu3336 KMP应用
题意:给一个字符串,输出包括从1到len长 字符串每个前缀出现的总个数 YY: 基本思想是 KMP + DP,主要看KMP kmp思想:对字符串进行预处理,记录与当前位置i后缀相同的“最近”位置,用next[i]记录, 保证 s[1 .. i] 中 s[i - next[i] + 1 .. i] 与 s[1 .. next[i]] 是相同
2016-04-10 17:21:00 292
转载 whu1608 遍历子集状压写法
题目大意:给你n个数和s,问最多将n分为多少组,使每组通过加减操作能得到s的组数最多,输出组数接下来粘贴大神代码,以便学习#include #include #include #include using namespace std;typedef long long lint;int n, s, T, a[20];int sum[1 << 20], f[1
2016-04-10 14:50:20 397
原创 面试常见问题链接
1、堆和栈的区别 : 堆和栈区别2、c/c++内存分配方式: C/C++内存分配方式3、内存溢出及解决方案 : 点击打开链接4、Struct 和Class区别: struct和class区别5、C++虚函数和纯虚函数的区别 : 虚函数6、C语言异常处理机制: 异常7、C语言文件操作: 文件操作8、UDP和TCP区别
2016-04-10 14:43:39 302
原创 单链表反转
node *Reverse(node *head){ node *p1 , *p2 , *p3; if(head == NULL || head -> next == NULL) return head; p1 = head , p2 = head -> next; while(p2 != NULL) { p3 = p2 -> next;
2016-04-10 14:43:06 270
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2016-04-10 14:21:10 247
转载 c/c++内存分配方式
C/C++内存分配有三种方式:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程序在
2016-04-10 14:19:16 629
转载 内存溢出原因及解决方案
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软
2016-04-10 14:18:03 4237 1
转载 Struct和Class的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和c
2016-04-10 14:17:11 225
转载 c++虚函数和纯虚函数的区别
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plain copy
2016-04-10 14:16:29 348
转载 C语言异常处理机制
1.概述 什么是异常?异常一般指的是程序运行期(Run-Time)发生的非正常情况。异常一般是不可预测的,如:内存不足、打开文件失败、范围溢出等。UNIX 使用信号给出异常,并当发生异常时转跳到信号处理过程进行异常处理。DOS下的信号对比UNIX系统而言相对较少。 我们知道,不管是在c++还是在java中,异常都被认为是一种很优雅的处理错误的机制。而如果想在c语
2016-04-10 14:15:40 323
转载 c语言文件操作
文件文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在磁盘或
2016-04-10 14:14:17 314
原创 HDU1711 KMP
题目大意:模式串匹配问题,用KMP练练手,顺便学习一下。、这里来说一下我对KMP中NEXT数组的理解。NEXT数组是对模式串自身的一个最长公共前缀和后缀的一个匹配过程,比如字符串“abab” ,他的相同前缀和后缀的最大程度是模式串中各个子串 前缀后缀公共元素的最大长度a空空0abab0aba
2016-04-08 10:29:33 250
原创 hiho 1290 2016微软4月笔试 dp
题目大意:给你一个机器人,从左上角走到右下角需要的最少改变格子的次数。格子有.代表空和b代表障碍物组成,可以b变.,也可以.边b。思路:dp[i][j][0]表示当前节点向下走到终点需要的最少改变次数,dp[i][j][1]表示当前节点向右走走到终点的最少改变次数。那么如果当前点需要向右走,就需要判断右面点的dp值哪一个更小,1、如果需要转弯则需要再往右判断一位,如果是b或边界则
2016-04-07 21:49:00 296
原创 单链表的插入删除
#include #include #include #include #include #include using namespace std;class node{public : int val; node *next;};void add(int val , node *head){ node *p ; p = head; while
2016-04-05 21:05:21 247
原创 HDU5656 所有子集GCD和
题目大意:给你一个集合,求所有子集的gcd之和。所有数据均小于等于1000,集合数量小于等于1000.结果对1e8+7取模思路:我们考虑记f[i]表示从这些数中选择若干个数,使得他们的gcd是i的倍数的方案数。假如有K个数是i的倍数,则f[i]=2^K-1,再用g[i]表示从这些数中选择若干个数,使得他们的gcd是i的方案数,则g[i]=f[i] - g[j] (对于所有j是i
2016-04-04 16:11:24 1232
原创 OpenFileDialog Filter
System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog(); dlg.AutoUpgradeEnabled = false; dlg.Filter = "(*.jpg,*.png,*.jpeg,*.bmp,*.gif)|*.jgp;*.png;
2016-04-02 10:55:27 744
原创 概率dp
题目:将一个数每次除以它的因子,求除到1的期望 思路:dp[1]=0;dp[i] = (dp[i] + sum(dp[j])(所有因子dp和)+ sum(因子个数和)+1)/sum(因子个数);#include #include #include #include #include #include #include #include #include #
2016-04-01 10:57:51 316
原创 区间DP 矩阵相乘复杂度计算
题目:一个 a*b的矩阵与一个b*c的矩阵相乘,复杂度是 a*b*c,会得到一个a*c的矩阵。但是!!!我出题目的时候懵逼了!!!!!,复杂度弄成a*b*b*c了,所以你们就按我的来。现在有N个矩阵连乘,不同的计算顺序复杂度是不一样的,求最小复杂度。a*b的矩阵与一个b*c的矩阵相乘,复杂度是a*b*b*c!!!!!Input 首先是一个N(N在10
2016-04-01 10:10:10 1987
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人