上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 38 下一页
摘要: 逆元:http://www.cnblogs.com/E-star/archive/2013/04/26/3045412.html题意:给定三个数a,b,n, a,b,n(1 ≤ a < b ≤ 9, 1 ≤ n ≤ 106) 求由a,b组成的长度为n的数有多少种。思路:我们只要枚举a的个数i,然后n-i就是b的个数,i个a与n-i个b的排列有多少种? f[n]/(f[i]*f[n - i]) f[i]表示i的阶乘。这里整体思路很明显出来了,可是这里仍然有一个关键就是如何求f[n]/(f[i]*f[n - i])%mod? 所以这里就要求逆元了。运用求逆元的两种方法都可以,因为这里的mod 阅读全文
posted @ 2013-04-26 18:17 E_star 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 模P乘法逆元:对于整数a、p,如果存在整数b,满足ab mod p =1,则说,b是a的模p乘法逆元。定理:a存在模p的乘法逆元的充要条件是gcd(a,p) = 1证明: 首先证明充分性 如果gcd(a,p) = 1,根据欧拉定理,a^φ(p) ≡ 1 mod p,因此 显然a^(φ(p)-1) mod p是a的模p乘法逆元。 再证明必要性 假设存在a模p的乘法逆元为b ab ≡ 1 mod p 则ab = kp +1 ,所以1 = ab - kp 因为gcd(a,p) = d 所以d | 1 所以d只能为1逆元主要帮助我们来求a/b%mod的值,我们知道加,减,乘的运算可以取余,但是除法不能 阅读全文
posted @ 2013-04-26 18:10 E_star 阅读(1122) 评论(0) 推荐(0) 编辑
摘要: A:直接找出最小值,看是否能被所有数整除即可B:判断是否出现连续的“#”>=m若果存在肯定不能调。C:题意:两个人玩游戏(A,B),每个人分配一个字符串长度为2*n的字符串s1,s2,然后A先从[1~2*n]选一个数i,然后他就从s1中取走s1[i],然后是B从[1~2*n]中选一个还未曾被选过的数然j后取走s2[j]最后他们分别否会获得n个“0”,“1”他们可以任意组合这些0,1最后谁组合出来的数最大谁赢,若想等则平局。思路:首先分析如果出现s1[i] = s2[i] = 1的话,他们肯定会去这个“1”因为这样既保证自己得到一个1,另一方失去一个1,如果存在计数个那么最后A肯定比B多1 阅读全文
posted @ 2013-04-25 20:35 E_star 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 作者:阮一峰日期:2012年5月31日我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并 阅读全文
posted @ 2013-04-18 17:43 E_star 阅读(384) 评论(0) 推荐(0) 编辑
摘要: A:题意: 给出n个数,只能交换相邻两个数,问经过若干次交换后是否存在一个状态这个状态满足相邻两个数不同。思路:只要判断存在一个数出现的次数小于等于(n +1)/2就满足条件B:题意:给出两个长度为n的字符串,定义两个字符串不可比较:只要存在(1 ≤ i, j ≤ n),si > wiandsj < wj我们就说s,w是不可比较的。字符串中可能会出现‘?'表示可取0-9的任意数,问存在多少种可能使得两个串不可比较。思路:我觉得属于黑书里面分决策动机的DP,我再考虑的时候,想到面对当前i子符,状态什么? 就是比较到了第i个字符,是否出现了si >wi sj < w 阅读全文
posted @ 2013-04-18 14:46 E_star 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 这里我一直好奇的是这三个漂亮的循环是怎么完成最终正确的结果的,如何证明它们是正确的。直到看了这里的解析,才算弄懂了。floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在),floyd算法加入了这个概念Ak(i,j):表示从i到j中途不经过索引比k大的点的最短路径。这个限制的重要之处在于,它将最短路径的概念做了限制,使得该限制有机会满足迭代关系,这个迭代关系就在于研究:假设Ak(i,j)已知,是否可以借此推导出Ak-1(i,j)。假设我现在要得 阅读全文
posted @ 2013-04-18 09:33 E_star 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 在内核中tcp协议栈有6种类型的定时器:1 重传定时器。2 delayed ack定时器3 零窗口探测定时器上面三种定时器都是作为tcp状态机的一部分来实现的。4 keep-alive 定时器主要是管理established状态的连接。5 time_wait定时器 阅读全文
posted @ 2013-04-18 08:43 E_star 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 现象&后果:当传入的参数p指向的内容为0x9A、0XAB等内容(最高位为1)时,得到的int型变量util的值将会出错,因为char会进行符号扩展,使得0x9A(十进制的154)变成了-102。会造成程序运行时的数据处理错误。分析:char符号扩展是与编译器相关的,但在x86平台上,对于任何主流的编译平台,char总是进行符号扩展的。上述代码在将char型的*p赋给int型变量util的时候,需要先进行char型到unsigned char型的转换,以避免按照char的最高位进行符号扩展。上述出错代码的符号扩展过程如下:因为要扩展的短数据类型为有符号数的-- char x=100111 阅读全文
posted @ 2013-04-16 16:29 E_star 阅读(1967) 评论(0) 推荐(0) 编辑
摘要: pagesectionnotitlesubmit1131.5.1例题1括号序列POJ11411161.5.1例题2棋盘分割POJ11911171.5.1例题3决斗Sicily18221171.5.1例题4“舞蹈家”怀特先生ACM-ICPC Live Archive1191.5.1例题5积木游戏http://202.120.80.191/problem.php?problemid=12441231.5.2例题1方块消除http://poj.org/problem?id=13901231.5.2例题2公路巡逻http://202.120.80.191/problem.php?problemid=1 阅读全文
posted @ 2013-04-15 16:37 E_star 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,// 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。用途二:用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时 阅读全文
posted @ 2013-04-14 21:38 E_star 阅读(198) 评论(0) 推荐(0) 编辑
摘要: C语言以及C++语言中的const究竟表示什么?其具体的实现机制又是如何实现的呢?本文将对这两个问题进行一些分析,简单解释const的含义以及实现机制。 问题分析 简单的说const在C语言中表示只读的变量,而在C++语言中表示常量。关于const在C与C++语言中的使用以及更多的区别,以后有时间另开一贴说明。 那么const究竟是如何实现的呢? 对于声明为const的内置类型,例如int,short,long等等,编译器会如何实现const的本意?那么对于非内置类型是否也是与内置数据类型一样处理呢,例如对于结构体类型则会怎样处理呢?下面通过几个小例子来说明这些问题: C语言const... 阅读全文
posted @ 2013-04-13 23:16 E_star 阅读(264) 评论(0) 推荐(1) 编辑
摘要: A:直接模拟左边上去多少右边下来多少就行。B:题意:每本书都有一个厚度ti,宽度wi,每本书的高度相同,给出n本书,让你排在一起是的所栈空间最小。竖着放,或者横着放一层。如图:开始想着贪心,发现不对,一看数据量n<=100,那肯定是dp了。每本书要么竖着放,要么横着放,有点01背包的放与不放的思想。dp[i][j]表示对于第i本书,还有j个横着的空间可以放书的情况下,最小的占用空间。dp[i][j] = min(dp[i - 1][j],dp[i - 1][j + ti + wi] - ti)View Code #include <iostream>#include < 阅读全文
posted @ 2013-04-11 21:36 E_star 阅读(386) 评论(0) 推荐(0) 编辑
摘要: int a = 2; printf("%d\n",sizeof(a)); int x; cin>>x; cout<<hex<<x<<endl; cout<<oct<<x<<endl; int y; scanf("%x%o",&x,&y); printf("%X, %o\n",x,x); return 0; 阅读全文
posted @ 2013-04-11 00:03 E_star 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体: struct stu1 { int i; char c; int j; }; 先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小。显然,结构体变量中第一个成员的地址就是结构体变量的首地址。因此,第一个成员i的偏移量为0。第二个成员c的偏移量是第一个成员的偏移量加上第一个成员的大... 阅读全文
posted @ 2013-04-09 09:48 E_star 阅读(5902) 评论(1) 推荐(1) 编辑
摘要: 250pt:题意:给出一个序列,该序列中可能有相同的值,然后交换任意两个数形成不同序列的数量。思路:由于这里的序列长度为n,n <= 1000 所以我们只要利用set的蛆虫特性,O(n^2)枚举swap就可以了。但是如果n非常大达到10^7怎么办?其实我们还可以利用set来记录该序列中一共出现了多少不同的数,只要出现一对不同的数那么交换这两个肯定能够得到一个不同的序列最后结果就是(set.size() - 1)*set.size()/2;View Code #define M 5007 #define N 1007 using namespace std; int n,m; class 阅读全文
posted @ 2013-04-09 08:34 E_star 阅读(304) 评论(2) 推荐(0) 编辑
摘要: class Insec{ private int i = 9; protected int j; Insec(){ System.out.println("i = " + i + ", " + "j = " + j); j = 39; } private static int x1 = printInt("static Insec.x1 init"); static int printInt(String s){ System.out.println(s); return 47; } pri... 阅读全文
posted @ 2013-04-06 19:37 E_star 阅读(490) 评论(0) 推荐(0) 编辑
摘要: A: 求个和就行。B:题意:给定一个n*m的矩阵,将每个方格内都有一个值。我们可以选择其中的任意一个方格执行+d 或者-d操作,问最终使得方格内的数全部相同的最小不数。思路:贪心,中位数找最小值以及最大值,然后从最小值不断+d操作记录可能出现的数,知道大于最大值。然后查看一下所有矩阵中的数是否全部出现,如果全部出现,则说明一定可以得到一个所有值相同的矩阵。然后我们将所有值排序,取中位数,则中位数就是我们要得到的相等的那个值,然后计算每一个小方格到达该值的步数即可。View Code #include <iostream>#include <cstdio>#include 阅读全文
posted @ 2013-04-05 12:07 E_star 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 在oracle中,你会遇到startup,startup mount,startup nomount这三个不同的命令,startup,startup mount,startup nomount有什么区别?startup nomount只是启动了实例而没有启动数据库,startup mount启动了实例,并加载了数据库,但是数据库没有打开,startup是最全的,实例,数据库加载,数据库打开都完成。归档模式与非归档模式:归档模式,可以在线或者离线备份数据库,可以是全备份或者是部分备份(单个表空间,数据文件)非归档模式只能离线备份,而且必须备份所有的数据文件,控制文件,日志文件! 阅读全文
posted @ 2013-04-03 14:49 E_star 阅读(555) 评论(0) 推荐(0) 编辑
摘要: C++ :关键字public,private,protected被称为 访问权限修饰符 或 访问控制修饰符 分别表示 公有,私有,保护 属性。(访问属性 又称 访问权限)private是类的默认访问属性JAVA:关键字public,private,protected,默认访问属性 为包访问权限。 阅读全文
posted @ 2013-04-02 10:00 E_star 阅读(436) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4532题意:中文...思路:话说这类题目做的真的很少,比赛时无从下手。首先我们不考虑组内之间的顺序问题,将其转化为组合。dp[i][j]表示第i组插入到队列中存在j个空,该空的左右两边是同一组的人,这样我们只要将第i + 1组的人查到该空的话,就是合法的。 这里用了一下滚动数组优化了一下。dp[cur][i - k + x - j] += dp[pre][i]*c[x - 1][j - 1]%mod*c[i][k]%mod*c[sum - i][j - k]%mod;pre表示前一状态,i表示枚举的前一状态. 阅读全文
posted @ 2013-04-02 08:37 E_star 阅读(412) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 38 下一页