
ACM-数论与组合数学
文章平均质量分 83
yew1eb
https://github.com/yew1eb
展开
-
HDU3714 Error Curves (单峰函数)
大意:给你n个二次函数Si(x),F(x) = max{Si(x)}求F(x)在[0,1000]上的最小值。S(x)=ax^2+bx+c (0简单分析一下可知函数F(x)的图形是下凸函数,可以采用三分法求最值。CODE:#include #include using namespace std;const int maxn = 10原创 2013-09-06 16:21:46 · 2020 阅读 · 0 评论 -
zoj 3836 Circulation pipe , exgcd
Circulation pipeTime Limit: 4 Seconds Memory Limit: 65536 KBDarkgy is a transport pipe master. One day, due to some strange redstone signal, an Iron pipe changed its direction and make a原创 2014-12-01 03:21:11 · 1830 阅读 · 0 评论 -
zoj 3203 Light Bulb,三分基础题
Light BulbTime Limit: 1 Second Memory Limit: 32768 KBCompared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow and he has only one light bulb in原创 2014-07-31 09:39:41 · 1800 阅读 · 0 评论 -
ZOJ2002 Copying Books
Copying BooksTime Limit: 2 Seconds Memory Limit: 65536 KBBefore the invention of book-printing, it was very hard to make a copy of a book. All the contents had to be re-written by hand原创 2013-08-08 11:43:33 · 1755 阅读 · 0 评论 -
poj 2456 Aggressive cows,二分,最大化最小值
描述农夫 John 建造了一座很长的畜栏,它包括N (2 但是,John的C (2 输入有多组测试数据,以EOF结束。第一行:空格分隔的两个整数N和C第二行——第N+1行:分别指出了xi的位置输出每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。样例输入5 312849样例输出3排序后,二分最小距离#原创 2014-08-21 09:42:31 · 1692 阅读 · 0 评论 -
poj 2976 Dropping tests,二分
poj 2976 Dropping tests题意同 poj 3111 (只有一点点区别 )#include#include#includeusing namespace std;const int maxn = 1000 + 10;int a[maxn], b[maxn];struct node { double val; bool原创 2014-08-21 16:30:38 · 1616 阅读 · 0 评论 -
UVa 10428 The Roots,牛顿迭代法
UVa 10428 The Roots原创 2014-08-21 20:40:36 · 1554 阅读 · 0 评论 -
hdu1757 A Simple Math Problem(矩阵乘法)
Problem DescriptionLele now is thinking about a simple function f(x).If x If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);And ai(0Now, I will give a0 ~ a9 a原创 2014-02-22 18:24:41 · 2311 阅读 · 0 评论 -
博弈类题目集
HDOJ--------------------------------第一类取石子:1846 巴什博弈1847 减法游戏2188 巴什博弈2149 巴什博弈第二类取石子:1527 威佐夫1525 威佐夫变形2177 计算有点小麻烦第三类取石子:2176 简单Nim求SG1848 SG值1730 简单SG 注意在N态往自己方向原创 2014-02-25 12:18:13 · 2051 阅读 · 2 评论 -
hdu1850 Being a Good Boy in Spring Festival ,尼姆博弈(Mimm game),Min sum hdu2176 poj2975
题意:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。题解:尼姆博奕(Nimm Game)先求所有堆的 Nim-sum = N1 ^ N2 ^ ... NM然后res =Nim-sum ^ Ni如果 res 即为剩下的局原创 2014-08-22 14:33:08 · 1766 阅读 · 0 评论 -
hdu1848 Fibonacci again and again,SG函数
#include#include#includeusing namespace std;const int maxn = 1100;int f[20];int SG[maxn];bool vis[maxn];int mex(int n) //minimal excludant{ if(SG[n]!=-1) return SG[n]; int i, t;原创 2014-08-22 21:22:57 · 1510 阅读 · 0 评论 -
Nim游戏和SG函数
一、Nim游戏重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。 Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。 Nim 游戏是组合游戏(Combinatorial Games)的一种,准确转载 2014-08-23 08:14:17 · 2964 阅读 · 2 评论 -
poj 1845 Sumdiv ,质因子分解
题意:求A^B的所有约数之和。题解:A = P1^a1 * P2^a2 * ... * Pn^an.A^B的所有约数之和为: sum = [1+p1+p1^2+...+p1^(a1*B)] * [1+p2+p2^2+...+p2^(a2*B)] *...* [1+pn+pn^2+...+pn^(an*B)].用递归二分求等比数列1+pi+pi^2+pi^原创 2014-08-28 20:02:20 · 1718 阅读 · 0 评论 -
hdu1847 Good Luck in CET-4 Everybody! ,巴什博奕,理解SG函数及性质
hdu1847 Good Luck in CET-4 Everybody! 题意:总共n张牌,双方轮流抓牌,每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…),抓完牌,胜负结果也出来了:最后抓完牌的人为胜者。给出n,问先手赢还是后手赢?PS:当然这题可以直接推出 n%3==0必败,否则必胜。下面介绍另外一种做法 SG值:一个点的SG值就是一个不等于它原创 2014-08-22 15:54:54 · 1802 阅读 · 0 评论 -
poj 3111 K Best ,二分,牛顿迭代
poj 3111 K Best有n个物品的重量和价值分别是wi和vi。从中选出k个物品使得单位重量的价值最大。题解:1、二分做法2、牛顿迭代效率比较:二分做法:转换成判断是否存在选取K个物品的集合S满足下面的条件:sigma(vi) / sigma(wi) >= x {vi∈S, wi∈S}--> simga原创 2014-08-21 16:12:20 · 3785 阅读 · 3 评论 -
poj 1019 Number Sequence , 二分
从下面这一有规律的串中,查找第i(1 ≤ i ≤ 2147483647)个为的数是什么?11212312341234512345612345671234567812345678912345678910123456789101112345678910......二分#include#include#include#include#includeusing namespa原创 2014-08-28 10:30:01 · 1686 阅读 · 0 评论 -
POJ1061 青蛙的约会,exgcd
Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面原创 2013-09-23 17:35:43 · 1850 阅读 · 0 评论 -
UVa10341 Solve It!
题意:解方程: 输入格式: 输入包含不超过2100组数据。每行为一组数据,包含6个整数p, q, r, s, t, u (0输出格式: 对于每组数据,输出所有解,按照从小到大顺序排列,每个解均保留小数点后4位。如果无解,输出 No solution 。分析:在0=0 且f(1) code:#include #include原创 2013-09-06 12:39:50 · 1945 阅读 · 0 评论 -
Training 二分\三分
hdu1007 最近点对问题hdu2199 二分答案解方程 hdu2289 hdu2899 hdu3714 hdu4004 poj3122原创 2013-05-07 09:32:00 · 2516 阅读 · 9 评论 -
poj 1064 Cable master ,二分 精度!!!
给出n根绳子,求把它们切割成K条等长的绳子的最大长度是多少?二分用 for(int i=0; ieps) 循环100次精度能达到1e-30,基本上能一般题目的精度要求。而 浮点数二分区间的话容易产生精度缺失导致死循环。#includedouble L[10000 + 10];int n, k;int ok(double x) { int原创 2014-08-21 02:05:31 · 2005 阅读 · 0 评论 -
矩阵乘法题目总结
loading....原创 2014-02-22 18:31:12 · 2216 阅读 · 7 评论 -
HDU 2604 Queuing,矩阵快速幂
题目地址:HDU 2604 Queuing题意: 略分析:易推出: f(n)=f(n-1)+f(n-3)+f(n-4)构造一个矩阵: 然后直接上板子:/*f[i] = f[i-1] + f[i-3] + f[i-4]*/#include#includeusing namespace std;const int原创 2014-08-04 15:30:46 · 1623 阅读 · 0 评论 -
poj3999 Kind of a Blur,高斯消元
Kind of a BlurTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 642 Accepted: 137DescriptionImage blurring occurs when the object being captured is out of原创 2014-09-26 11:35:44 · 2435 阅读 · 0 评论 -
hdu 2147 kiki's game, 入门基础博弈
博弈的一些概念:必败点(P点) : 前一个选手(Previous player)将取胜的位置称为必败点。 必胜点(N点) : 下一个选手(Next player)将取胜的位置称为必胜点。必败(必胜)点属性(1) 所有终结点是必败点(P点);(2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);(3)无论如何操作, 从必败点(P点)都只能进入必胜原创 2014-08-22 02:15:47 · 1819 阅读 · 0 评论 -
hdu1525 Euclid's Game , 基础博弈
http://acm.hdu.edu.cn/showproblem.php?pid=1525题意:两人博弈,给出两个数a和b,较大数减去较小数的任意倍数,结果不能小于0,将两个数任意一个数减到0的为胜者。题解:假设a大于ba == b. N态a%b == 0. N态a >= 2*b,先手能决定谁取(b,a%b),并且知道(b,a%b)是P态还是N态原创 2014-08-22 02:05:25 · 2530 阅读 · 0 评论 -
hdu1730 Northcott Game,Nim-sum
题解:转化成求Nim-sum每行黑白棋的初始间距作为每堆石子个数如果当前为P态,则不管当前选手怎样操作,下一个选手都能使其操作后的局面又变为P态。Nim-sum = 0,即P态。#include#include#include#includeusing namespace std;int main() { int n, m; while(原创 2014-08-23 08:49:41 · 1721 阅读 · 0 评论 -
zoj 3666 Alice and Bob , SG函数
题意:在一个有向无环图上,有若干玩具,每人每次只能将一个玩具移动一步,玩具被移动到终点n将不能再被移动了,最后不能移动者输。组合博弈SG函数应用#include#include#include#includeusing namespace std;const int maxn = 10000 + 100;int SG[maxn];vector原创 2014-08-26 20:11:41 · 1816 阅读 · 0 评论 -
UVa729 - The Hamming Distance Problem(全排列)
给2个相同长度的2元字串,比较他们在相同位置的内容,并计算各位置内容不一样的总数,我们称该数為它们之间的Hamming distance。这任务可以经由对字串中各相同位置字元作XOR的运算或者做2进位的相加(但不进位)而得到。以下的例子為2个长度為10的2元字串A、B经过XOR运算。可以看出共有6个1,所以其Hamming distance為6。原创 2013-06-06 21:29:22 · 1828 阅读 · 0 评论 -
盒子游戏(湖南省第七届大学生计算机程序设计竞赛)
盒子游戏有两个相同的盒子,其中一个装了n个球,另一个装了一个球。Alice和Bob发明了一个游戏,规则如下:Alice和Bob轮流操作,Alice先操作。每次操作时,游戏者先看看哪个盒子里的球的数目比较少,然后清空这个盒子(盒子里的球直接扔掉),然后把另一个盒子里的球拿一些到这个盒子中,使得两个盒子都至少有一个球。如果一个游戏者无法进行操作,他(她)就输了。下图是一个典型的游戏:原创 2013-09-06 00:21:07 · 2270 阅读 · 0 评论 -
poj1833 排列
next_permutation()函数的使用。提交的时候 G++会超时, C++能过。#include #include using namespace std;int a[1040];int main(){ int n, k, i, t; scanf("%d", &t); while (t--) { scanf("%d%d", &n原创 2013-08-13 03:40:48 · 1726 阅读 · 2 评论 -
斯特灵数 (Stirling数)
@维基百科在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的。第一类s(4,2)=11第一类Stirling数是有正负的,其绝对值是个元素的项目分作个环排列的方法数目。常用的表示方法有。换个较生活化的说法,就是有个人分成组,每组内再按特定顺序围圈的分组方法的数目。例如:{A原创 2013-08-17 15:17:28 · 2317 阅读 · 0 评论 -
poj2084 Game of Connections
Catalan数,组合数学书上有公式。import java.math.*; import java.io.*; import java.util.*; public class Main { public static void main(String [] args){ Scanner cin = new Scanner(System.i原创 2013-08-13 03:21:56 · 1639 阅读 · 0 评论 -
卡塔兰数
转自维基百科:http://zh.wikipedia.org/zh/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0卡塔兰数是組合數學中一個常在各種計數問題中出現的數列。以比利時的數學家欧仁·查理·卡塔兰 (1814–1894)命名。卡塔兰数的一般項公式為 前幾項為 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42,原创 2013-05-28 14:13:46 · 2298 阅读 · 0 评论 -
HDU1023(Catalan数)
Catanlan数维基百科:http://zh.wikipedia.org/zh/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0hdu1023 题意:一堆火车以严格的顺序到一个站里,问出来的时候有多少种顺序。 C[0] = 1 C[n] = C[n-1]*(4*n-2)/(n+1)import java.math.*;原创 2013-05-24 22:26:37 · 1689 阅读 · 0 评论 -
SGU 140 Integer Sequences (多元线性同余方程)
SGU 140 整数序列时间限制: 0.50 sec空间限制: 4096 KB整数序列A 是由 N 个非负整数 A2 .. AN 组成的,他的每个元素都不超过 2 000 000 000。考虑两个长度都是N的序列A 和X。他定义们的积 (A*X) 为整数 R=A1*X1 + A2*X2 + .. + AN*XN。你的任务是解方程 A*X=B (mod P),序列A和整原创 2013-09-06 11:05:31 · 3127 阅读 · 0 评论 -
poj1220 (高精度任意进制转换)
http://poj.org/problem?id=1220高精度任意进制转换代码是从discuss里找到的,据说是maigo神牛写的。超精简!!我自己第一写的时候,还把n进制先转成10进制,然后再从10进制转为m进制。。。悲催的是写了好长滴,还没调对啊!!!Code:#include #include const int maxn = 1000;原创 2013-08-20 02:36:15 · 2888 阅读 · 0 评论 -
poj1365 Prime Land
数字的质因子分解。。Code:#include #include #include #include using namespace std;typedef long long LL;int main() { LL n, p, t, i; int pri[100], e[100]; while (true) { cin >> p原创 2013-08-19 06:01:20 · 1933 阅读 · 0 评论 -
[证明]为什么完全平方数有奇数个因子?
为什么完全平方数有奇数个?解一: 设m为完全平方数,对m进行质因子分解: m=(p1)^a1×(p2)^a2×…×(pn)^an ; 易知a1,a2,…,an都是偶数,那么a1+1, a2+1, a3+1,...an+1都是奇数。 于是平方数A的正约数(即因数)个数(a1+1)(a2+1)……(an+1)是奇数,证毕。解二: m可以表示为 m原创 2013-06-26 22:48:46 · 5542 阅读 · 3 评论 -
[证明]一个数能被3整除,当且仅当它的各位数的和能被3整除。
一个数能被3整除,当且仅当它的各位数的和能被3整除。有网友给了一个简单的证明方法: 就拿一个四位数 abcd , 它可以表示为 1000*a+100*b+10*c+d = 999*a+99*b+9*c +(a+b+c+d), 999*a+99*b+9*c 能被3整除不用考虑,所以只要 a+b+c+d能被3整除就能说明四位数abcd能被3整除。。原创 2013-06-16 00:37:53 · 4651 阅读 · 5 评论 -
贝尔数,分拆
@维基百科贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):Bn是基数为n的集合的划分方法的数目。集合S的一个划分是定义为S的两两不相交的非空子集的族,它们的并是S。例如B3 = 5因为3个元素的集合{a, b, c}有5种不同的划分方法:{ Bn表示[n]上的分拆个数,原创 2013-08-12 22:42:47 · 2978 阅读 · 0 评论