
ACM
文章平均质量分 81
wqOoops
多出来的自由……
展开
-
数论类题目小结 (转帖)~~~经典…
数学类题目小结 暑假慢慢做吧……2009-11-20 22:10数学类题目小结 从放暑假前周sir给我讲了一个用polya计数法和burnside定理做的题目(pku2409)后,突然觉得组合数学挺有意思,然后从那时起到现在几乎都在做这类的题目。 做到现在感觉这类题目转载 2010-06-02 22:37:00 · 1722 阅读 · 0 评论 -
pku2282,pku3286(计数统计)
<br />http://162.105.81.212/JudgeOnline/problem?id=3286<br />http://162.105.81.212/JudgeOnline/problem?id=2282<br />题意:给定一个区间(a,b),分别统计出0~9这几个数出现的次数。(pku2282)<br />分析:考虑由0,1,2,…,9组成的所有n位数。从n个0到n个9共有n位数,在这n位数中,0~9每个数字使用次数相同;<br />满足如下递归式,由此可知,可从低位向高位进行统计,再减原创 2010-08-10 23:49:00 · 1013 阅读 · 0 评论 -
polya定理 和 置换 poj2409
所属题型:组合数学要求知识:polya或者burnside题意转述:一串由n个珠子组成的项链,用c种颜色涂染,问能形成多少种不同项链。限制:旋转得来的为同一种,翻转得来的也为同一种。本题有多种算法,下面给出比较容易想到且易于理解的两种算法。推荐使用算法2,因为若是碰到高精度问题,算法2比算法1易于处理,且复杂度也比算法1低好多。核心知识点都是Polya定理。解决过程:算法一:I.计算旋转置换和翻转置换的个数:1.旋转置换 N个珠子,把项链当成一个圆,每次旋转角度为I*360/N(I∈(1,n)),共有N原创 2010-06-11 18:51:00 · 4076 阅读 · 2 评论 -
pku3244(公式变换,推理)
<br />http://162.105.81.212/JudgeOnline/problem?id=3244<br />题意:定义两个三元组I(xi, yi, zi)和J(xj, yj, zj),他们的差为D(I, J) = max{xi - xj, yi - yj, zi - zj} - min{xi - xj, yi - yj, zi - zj},给定n个三元组(n <= 200000),求任意两个三元组的差的和。<br />此题是很好很难的数学题,自己不能想出解法,参照了牛人的解法,这题的公式变换很原创 2010-08-05 16:15:00 · 1030 阅读 · 0 评论 -
pku1737(求连通图个数,运用高精度加法,减法,乘法,组合数)
<br />http://162.105.81.212/JudgeOnline/problem?id=1737<br />题意: 一个无向图就是有v个顶点和e条边(E∈{V*V})构成的一个集合。如果一个无向图对于每个点对(u,v)都可以从u通过边到底v,那么这个图就是连通的,你的任务就是写一个程序来计算总共有多少个不同的包含n个顶点的连通的无向图;<br />分析:对于我老菜来说此题是很好很难的图论+数论。自己弄了很久,最后看了牛人的解题报告才弄明白,汗~废话少说贴下牛人的报告吧。<br /> <br /原创 2010-08-08 16:07:00 · 2120 阅读 · 0 评论 -
pku3372(找规律,公式,推理)
<br />http://162.105.81.212/JudgeOnline/problem?id=3372<br /> <br />这题有个很神奇的公式,没什么可说的,以下内容转自:LonelyBoy、笨小孩_sunhaowen。<br />题意:N个小孩围成一个圈,老师 顺时针隔 0, 1, 2, 3,。。。个小孩发糖,问每个小孩是否都能领到糖。<br />解法很简单 当N是2^K时输出YES,否则输出NO。printf((N & N - 1) ? "NO/n" : "YES/n");<br />关键原创 2010-08-05 14:42:00 · 1362 阅读 · 0 评论 -
方程的解数(哈希表的应用)
方程的解数问题描述 已知一个n元高次方程: 其中:x1, x2, …,xn是未知数,k1,k2,…,kn是系数,p1,p2,…pn是指数。且方程中的所有数均为整数。 假设未知数1≤ xi ≤M, i=1,,,n,求这个方程的整数解的个数。输入文件(equation.in) 文件的第1行包含一个整数n。第2行包含一个整数M。第3行到第n+2行,每行包含两个整数,分别表示ki和pi。两个整数之间用一个空格隔开。第3行的数据对应i=1,第n+2行的数据对应i=n。输出文件(equation.out) 文转载 2010-06-07 22:38:00 · 1524 阅读 · 1 评论 -
hdu1695 (容斥原理)
<br />http://acm.hdu.edu.cn/showproblem.php?pid=1695<br />题意:已知给定k,x,y求 1<=a<=x 1<=b<=y中满足gcd(a,b)=k 的(a,b)对数。(注意数对是无序的)。 1<=x,y<=10w, 0<=k<=10w<br /><br />大体思路:<br />枚举[1..y]中每个数i 判断[1..min(x,i)]中有多少数与i互质,统计个数。(注意,枚举的是比较大的区间[1..y])。<br />显然如果原创 2010-08-04 12:41:00 · 5451 阅读 · 5 评论 -
pku2356 pku3370(鸽巢原理)
<br />http://162.105.81.212/JudgeOnline/problem?id=3370<br />http://162.105.81.212/JudgeOnline/problem?id=2356<br /> <br />定理:如果n+1个物体被放进n个盒子,那么至少有一个盒子包含两个或更多个物体。<br />应用:给定n个数a1,a2,...,an.则比存在整数k和l(0<=k<l<=n))使得a[k+1]+a[k+2]+....+a[l]能被n个数整除。<br /><br />a原创 2010-08-03 16:19:00 · 1301 阅读 · 0 评论 -
poj3272
这是一个经典的二分搜索题,也很难想到要用二分,看了disscuss才知道的,没办法,加油吧~~题意是:输入N个数,要求分成M份,使每一份的和尽量小,最后输出最大的那个和sum;思路是:先求出最大值max,然后right = max,left = 0; 二分逐渐逼近的求最后答案。。。#include using namespace std;__int64 money[100001];int N, M;bool fun(__int64 x){ __int64 sum = 0;原创 2010-06-05 21:58:00 · 1318 阅读 · 0 评论 -
pku3735(矩阵3)
<br />http://162.105.81.212/JudgeOnline/problem?id=3735<br /> <br />这个题也是一个关于矩阵的一个经典的应用。<br />(转自matrix67)<br /> 有n只猫猫排成一排,初始时每只猫猫都没有花生。定义三种操作:给第i只猫猫一颗花生,令第i只猫猫吃掉它所有的花生,交换猫猫i和猫猫j的花生。给出长度不超过k的操作序列,输出循环执行m次操作序列后的结果。数据规模n≤100,k≤100,m≤1 000 000 000。看到这道题我们立原创 2010-07-30 19:12:00 · 922 阅读 · 0 评论 -
pku3243(baby_step, giant_step算法)
<br />http://162.105.81.212/JudgeOnline/problem?id=3243<br />题意:给定XY mod Z = K已知X, Z, K 求最小的Y值,这题和pku2417差不多,都是用这个算法的,但是我差了很多资料,理解还不是很好啊,今天看了AC大牛的解题报告,学习了他的写法,,膜拜下~~~上面写的很清楚,但是俺菜还是不够理解啊~<br />http://hi.baidu.com/aekdycoin/blog/item/b317ca18bb24334942a9ad55原创 2010-08-02 00:24:00 · 1699 阅读 · 0 评论 -
十个利用矩阵乘法解决的经典题目(转Matrix67)
<br /> 十个利用矩阵乘法解决的经典题目(转Matrix67)<br />PDF文档下载:十个利用矩阵乘法解决的经典题目<br />好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。<br /> 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于转载 2010-07-29 01:11:00 · 943 阅读 · 0 评论 -
pku3233(矩阵2)
<br />http://162.105.81.212/JudgeOnline/problem?id=3233<br /> 题目大意:给定矩阵A,求A + A^2 + A^3 + ... + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k<=10^9。<br /> 这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有:<br /> A + A^2 + A^3 + A^4 + A^5 + A原创 2010-07-29 00:43:00 · 870 阅读 · 0 评论 -
pku3660 (传递闭包,强连通图分支)
<br />http://162.105.81.212/JudgeOnline/problem?id=3660<br />题意:n个牛参加比赛,给出m 组数据,表示胜负关系,问能准确确定排名的有多少头牛?<br />分析:我们以N头奶牛作为N个节点,M场比赛结果作为M条有向边<br /> (即a胜过b 则连a->b)<br /> 然后利用Floyd算法求出该图的传递闭包map[][]。<br /> 显然,如果map[i][j]=1 则i比j强 ,如果map[i][j]=0 则i比j弱,或者不确定<br原创 2010-08-11 11:48:00 · 1208 阅读 · 0 评论 -
pku1150(经典数论,质因子)
<br />http://162.105.81.212/JudgeOnline/problem?id=1150<br />题意:求C(n, m)最后一位非0位。n!/(n-m)!<br />此题是很经典的数论题,做完学到了很多东西,但是不是自己能做出来的;下面转帖:第四维空间博客的解析。<br />这个题怎么来做呢?先别急,我们先来讨论一下下面几个子问题:<br />1.如何求出n阶乘中质因数x(比如说5)出现的次数?<br />比如说15的阶乘 :1*2*3*4*5*6*7*8*9*10*11*12*13原创 2010-08-09 17:52:00 · 1173 阅读 · 0 评论 -
pku2480(欧拉函数的应用,推公式,积性函数)
http://162.105.81.212/JudgeOnline/problem?id=2480题意:给定N(int) 求 ∑gcd(i,N) 1分析:一看这题的数据就知道不能暴力的,要用到欧拉函数分解才行的,只是自己的数论还不成熟,想了好久都没有解法;最后看了牛人的解题报告才弄明白的;此题解法:对于gcd(M,N)=i 有Ci个M满足此式 答案便是∑(Ci*i)gcd(M,N)=i gcd(M/i,N/i)=1 而求gcd(M/i,N/i)=1 有多少个M/i满足 这便是欧拉函数Phi()的定义所原创 2010-08-09 15:29:00 · 2388 阅读 · 0 评论 -
pku1325(二分图最小覆盖)
<br />http://162.105.81.212/JudgeOnline/problem?id=1325<br />题意:有两台机器A、B,一台有n种模式,一台有m种模式,有k个任务,每个任务都可以用A的某个模式或B的某个模式完成,开始两机器均为0模式,问最少切换多少次模式可完成所有任务。<br />思路:两台机器的模式可理解为两个集合,每个任务可理解为连接两种模式的线,则该问题可转换为二分图问题,即拿出多少个点可以消除所有的线,就是求二分图的最小点覆盖数,由于有最小点覆盖数等于最大匹配数,因此只需要原创 2010-09-04 20:53:00 · 992 阅读 · 0 评论 -
pku2914(求最小割)
<br />http://162.105.81.212/JudgeOnline/problem?id=2914<br /> <br />题意: 求一无向图的最小割,无源汇点. 500个点, 500 * 499 / 2条边 10s时间.<br />一个很傻很暴力的做法就是枚举源汇点求最小割,但是复杂度不是一般滴高.<br />下面是抄袭别人的Stoer-Wagner算法:<br />核心思想是迭代缩小规模, 算法基于这样一个事实:<br /> <br />对于图中任意两点s和t, 它们要么属于最小割的两个不同原创 2010-09-02 21:25:00 · 1255 阅读 · 0 评论 -
Dinic算法最大流。。
<br />先贴下书上的代码~<br />#include<iostream>using namespace std;#define maxn 1000#define maxm 100000#define maxw 2000000000struct gtype{ int x, y; //边(x, y)的流量F,容量为C, int f; int c; int next; //为反继指针 int op; //反向边指针};gtype g[maxm*2];原创 2010-08-31 23:37:00 · 1252 阅读 · 1 评论 -
pku1966 (点的连通度,用最大流求)
http://162.105.81.212/JudgeOnline/problem?id=1966连通度概念:一个具有n个顶点的图G,在去掉任意k-1个顶点后(1下面是很清楚的代码:但是奇怪的代码,,样例都没过,居然超时????牛人指点下啊~~~#includeusing namespace std;#define V 102#define typec int // type of resconst typec inf = 0x3f3f3f3f; // max of resconst t原创 2010-09-02 00:32:00 · 1247 阅读 · 2 评论 -
hdu3208 hdu3215
http://acm.hdu.edu.cn/showproblem.php?pid=32082009-5-30东华大学全国邀请赛 I题 Integer Power 解题分析DescriptionLMY and YY are number theory lovers. They like to find and solve some interesting number theory problems together. One day, they become interested in some spec原创 2010-08-30 21:10:00 · 1847 阅读 · 3 评论 -
pku1274(基本的二分图最大匹配)
<br />http://162.105.81.212/JudgeOnline/problem?id=1274<br />题意:有m头奶牛和n个牛棚,其中每头奶牛只愿意进它愿意进的牛棚。也许每头牛只愿进一个棚,也许一个棚只容纳一头牛。现在给定m头年和n个牛棚,并且给定每头牛愿意进的牛棚编号,请让你设计一种牛对棚的方案,使牛——棚的匹配数最大,并输出这个最大匹配值。<br />思路:其实这题就是求一个二分图最大匹配。<br />下面是用邻接矩阵写的AC~<br />#include<iostream>us原创 2010-08-24 20:49:00 · 890 阅读 · 0 评论 -
稳定婚姻问题算法
<br /><br />转自:http://teruterubouzu-laputa.spaces.live.com/<br />话说在1962年,两个数学家David Gale 和Lloyd Shapley提出了下面的问题:<br />给定若干个男生和同样多的女生,他们每个人都对所有的异性有一个心理的偏好次序。是否存在一种男女配对组合构成一种稳定的组合关系?这里稳定组合的意思是说,不存在两个非伴侣的异性对彼此的评价比对各自伴侣的评价还要高。(可以理解,这样的异性太容易红杏出墙了,所以是某种不稳定因素。)进原创 2010-08-18 23:18:00 · 1992 阅读 · 1 评论 -
pku3487(稳定婚姻问题)
<br />http://162.105.81.212/JudgeOnline/problem?id=3487<br />题意就不说了,不明白的就看我上一篇博客吧;下面介绍下有关算法:参照了牛人的算法;<br /> <br />Gale-Shapley 算法<br />while 存在男人m是自由的且还没对每个女人都求过婚<br /> 选择这个男人m<br /> 令w是m的优先表中还没求过婚的最高排名的女人<br /> if w是自由的 <br原创 2010-08-18 23:36:00 · 1249 阅读 · 0 评论 -
pku1905 pku3122(二分2,几何,面积)
<br />http://162.105.81.212/JudgeOnline/problem?id=1905<br />http://162.105.81.212/JudgeOnline/problem?id=3122<br />pku1905题意:一根横在两堵墙之间的木棒受热膨胀后,变为弧形,求弧形中点与原木棒中点的距离,给出木棒原长度L,膨胀系数C,加热的度数N,膨胀n度后长度为LL=(1+N*C)*L;根据图形和有关几何的知识可以等到下面的公式:<br /> <br />①R^2 - L^2/4 =原创 2010-08-12 19:13:00 · 1091 阅读 · 0 评论 -
pku3258(二分)
<br />http://162.105.81.212/JudgeOnline/problem?id=3258<br />题意:有一条河长度为L,河面上有N个石头。有一奶牛从0(一岸)跳到L(另一岸),它会依次跳到每个石头上过河。现给出N个石头的坐标,问若从N中去掉M个石头,每种方案中每次跳跃中的最小次数中的最长的那个距离。<br />分析:一开始都没想都要用二分,最后看了牛人的解析,才知道的,下面也是根据牛人思路写的;<br />加入搜索答案是mid,可以从数组的a[0]开始搜索每个点,如果该点与前一个点原创 2010-08-11 23:29:00 · 915 阅读 · 0 评论 -
poj1286Necklace of Beads polya定理~~
题意:有三种颜色和n个珠子,让你求圆形的珠链经过旋转和翻转或本质不一样的总数。分析:这个和poj2409几乎是一样的,只是本只有三种颜色,解法是一样的。。。要是不理解就看看本站的poj2409!!解法一:#include#includeusing namespace std;double ans;int n;int gcd(int a, int b){ if(b == 0) return a; return gcd(b, a%b);}int main(){原创 2010-06-15 21:35:00 · 769 阅读 · 0 评论 -
poj1152 数学题(进制位)
题意:是给你一个N进制的整数R,题目保证R能被N-1整除,让你求符合条件的最小的N。分析:看见很多大牛都觉得很水的题,但是还是要数论来证明的,自己没能证明出来,看了牛人的证明才能水掉~~数论的模运算证明:设输入的是abcd,假设其解是n进制,则有(a*n*n*n + b*n*n + c*n + d)%(n-1)=0则有:( (a*n*n*n)%(n-1)+ (b*n*n)%(n-1)+ (c*n)%(n-1)+d )%(n-1)=0则有:((a* (n%(n-1)) *(n%(n-1)) *(n%(n原创 2010-06-16 17:23:00 · 1408 阅读 · 0 评论 -
poj2154质因数分解+快速幂+欧拉函数解决
<br />题目要求:给出两个整数n和p,代表n个珠子,n种颜色,要求不同的项链数,并对结果mod(p)处理。<br />此题本人不会做啊,只能找解题报告了,要用到欧拉函数x是n约数, 最后的答案是 (1/n * ∑Euler(n/x)(n^x)) % p x= 1<br /> <br />由于只关心gcd(N,i),考虑N的某个约数m在1...N的gcd中出现了几次。<br />gcd(N,i)==m ==> gcd(N/m,i/m)==1<br />显然就是欧拉函数 phi(N/m) <br原创 2010-06-15 21:22:00 · 3646 阅读 · 3 评论 -
学ACM算法题有用吗?(转)
<br />学ACM算法题有用吗?(转)2009-12-25 15:18<br />有同学提问:<br />==================================================<br />杨中科老师你好,我想向你咨询下工作的事情。<br />先介绍我的情况 普通本科大二学生,,之前一直在练acm的题,也获得了一些大赛的奖项,有一天有个人问我,叫我做一个小软件,我发现我不会。。更惨的就是我好像什么软件都不会做(这里指的是基于c/c++的开发),,除了console的一些算法题,转载 2010-06-02 20:41:00 · 867 阅读 · 0 评论 -
pku3070 (矩阵1)
<br />http://162.105.81.212/JudgeOnline/problem?id=3070<br />题意很简单,给出一个数n,就是要求第n个斐波纳契数模10000(就是求最后4位数)。<br />分析:要是用递推式F[n] = F[n-1] + F[n-2]来计算,则复杂度是O(n)的,由于n的范围达到 0 ≤ n ≤ 1,000,000,000肯定会超时的。<br />按题目要求要用矩阵来做的,详情看原题。<br />那么对于一个矩阵怎么来取模呢?实际上这与整数的取模幂运算a^b m原创 2010-07-28 17:30:00 · 1052 阅读 · 0 评论 -
pku1222(高斯消元1)
http://162.105.81.212/JudgeOnline/problem?id=1222题意:有一个5*6的方阵,每个位置都表示按钮和灯,1表示亮,0表示灭。每当按下(i,j)时,(i,j)和(i-1,j)、(i+1,j)、(i,j-1)(i,j+1)都会改变,亮的变灭,灭的变亮;问在这样的一个方阵中按下哪些按钮可以把整个方阵都变成灭的,这时1表示按了,0表示没按。转载分析:这个游戏的名字叫做Lights Out。一个板子上面有MxN个按钮,按钮也是灯。每次按下一个按钮,这个按钮和它的上下左右相邻原创 2010-07-26 17:12:00 · 5864 阅读 · 4 评论 -
pku1730 (整数分解素数+GCD,求幂pow)
<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1730<br /> <br />题目大意:<br />给一个数n,求一个最大的q使得 n = a^q,其中a,q,n都是32位整数。(多组数据)<br />分析:只要将n进行素因子分解,把所有素因子数目的gcd求出来就行。注意:n可能是负数,所以对于负数还需要将求出来的结果试除2,直到结果不是偶数才是最后负数的结果。<br />下面的代码是把整数n分解成素数幂的形式n=p1^t1*…*pk^tk;<br原创 2010-07-15 14:42:00 · 1052 阅读 · 1 评论 -
pku3128Leonardo's Notebook(置换群的幂运算) ???
http://acm.pku.edu.cn/JudgeOnline/problem?id=3128题意:给出一个置换a,证明它是否是另一个置换b的平方。此题也要用到潘震皓的《置换群快速幂运算 研究与探讨》这篇文章。也是懵懵懂懂的~~~哎…加油吧!!!#includeusing namespace std;const int MAX = 27;char str[MAX];int data[MAX], ans[MAX], visit[MAX];int fun(int n){ int原创 2010-07-11 21:38:00 · 909 阅读 · 0 评论 -
pku1721 CARDS(置换群的幂运算) ???
http://acm.pku.edu.cn/JudgeOnline/problem?id=1721一下分析转至潘震皓的《置换群快速幂运算 研究与探讨》洗牌机 (CEOI 1998)此题对于我老菜来说是属于难题,但是通过这篇经典的文章,学到了很多~~赞下潘震皓。。。。[问题描述]剀剀和凡凡有N张牌(依次标号为1,2,……,N)和一台洗牌机。假设N是奇数。洗牌机的功能是进行如下的操作:对所有位置I(1≤I≤N),如果位置I上的牌是J,而且位置J上的牌是K,那么通过洗牌机后位置I上的牌将是K。剀剀首先写下一个1~原创 2010-07-11 20:00:00 · 1994 阅读 · 0 评论 -
pku1979 简单搜索
<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=1979<br />题意:从@开始,‘.’能走,‘#’不能走,求最多能走的步数。<br />从四个方向搜下就行了~<br />#include<iostream>using namespace std;char map[22][22];int H,W;int seach(int x, int y){ if(x<0 || x>=H || y<0 || y>=W) return 0原创 2010-07-11 10:31:00 · 873 阅读 · 0 评论 -
pku1026Cipher 置换群
http://acm.pku.edu.cn/JudgeOnline/problem?id=1026题意是:给出n个数字出现的顺序,给出一个字符串加密的次数k,再给一串字符串,长度少于n,用空格补全;按着每个字符所处位置的数字进行排序加密,我们可以发现每个数字经过x次加密就能构成一个循环,这样我们只要找到这个循环周期x,就好了,加密次数k要用到模运算来处理,这样才不会超时。加密方式如题中所给:1 2 3 4 5 6 7 8 9 104 5 3 7 2 8 1 6 10 9对于第一个字符,加密3次的结果如下:1原创 2010-07-11 00:29:00 · 800 阅读 · 0 评论 -
pku3270 Cow Sorting
http://acm.pku.edu.cn/JudgeOnline/problem?id=3270题目描述:给你一个数字序列(每个数字唯一),每次你可以交换任意两个数字,代价为这两个数字的和,问最少用多少代价能把这个序列按升序排列好。题目的具体做法是参考刘汝佳的《算法艺术与信息学奥赛》大概思路是:1.找出初始状态和目标状态。明显,目标状态就是排序后的状态。2.画出置换群,在里面找循环。例如,数字是8 4 5 3 2 7明显, 目标状态是2原创 2010-07-10 16:56:00 · 1234 阅读 · 1 评论 -
第二类Stirling数
<br /><br />Ⅴ.第二类Stirling数<br />在五类典型的递推关系中,第二类Stirling是最不为大家所熟悉的。也正因为如此,我们有必要先解释一下什么是第二类Strling数。<br />【定义2】n个有区别的球放到m个相同的盒子中,要求无一空盒,其不同的方案数用S(n,m)表示,称为第二类Stirling数。<br />下面就让我们根据定义2来推导带两个参数的递推关系——第二类Stirling数。<br />解:设有n个不同的球,分别用b1,b2,……bn表示。从中取出一个球bn,bn转载 2010-07-09 18:38:00 · 3431 阅读 · 0 评论