自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Remilia's

此博客停更了,新博客地址www.zhuoyifan.net

  • 博客(26)
  • 收藏
  • 关注

原创 UVA 1415 - Gauss Prime(数论,高斯素数拓展)

UVA 1415 - Gauss Prime题目链接题意:给定a + bi,判断是否是高斯素数,i = sqrt(-2)。思路:普通的高斯素数i = sqrt(-1),判断方法为:1、如果a或b为0,判断另一个数为4 * n + 3形式的素数(用到费马平方和定理)2、如果a、b都不为0,判断a ^ 2 + b ^ 2 是否为素数那么这题,提取出sqrt(2)

2014-06-30 18:00:46 1603 2

原创 UVA 10951 - Polynomial GCD(数论)

UVA 10951 - Polynomial GCD题目链接题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,并且n为素数.思路:和gcd基本一样,只不过传入的是两个多项式,由于有%n这个条件,所以计算过程可以用乘法逆去计算除法模,然后最后输出的时候每项除掉首项的次数就是答案了.代码:#include #include #i

2014-06-30 10:04:36 1840

原创 UVA 11490 - Just Another Problem(数论)

11490 - Just Another Problem题目链接题意:有S个士兵,排成一个矩阵,矩阵中可以有两个洞,要求两个洞上下左右厚度一样,问能缺少士兵的情况数。思路:推推公式,设厚度为a, 正方形为i, 那么(3 a + 2 i) (2 a + i) = S + 2 i i;化简一下得到6 i i + 7 a i = S由于S很大,所以去枚举厚度,这样只要

2014-06-30 01:35:23 1908

原创 UVA 718 - Skyscraper Floors(数论)

UVA 718 - Skyscraper Floors题目链接题意:在一个f层高的楼上,有e个电梯,每个电梯有x,y表示y + k * x层都可以到,现在要问从a层能否到达b层(中间怎么换乘电梯不限制)思路:对于两个电梯间能不能换乘,只要满足y[i] + xx x[i] == y[j] + yy y[j].然后移项一下,就可以用拓展欧几里得求解,进而求出x,y的通解,然后利

2014-06-29 23:03:35 1605

原创 UVA 11916 - Emoogle Grid(数论)

UVA 11916 - Emoogle Grid题目链接题意:一个N列的网格,有B个格子可以不涂色,其他格子各涂一种颜色,现在一共有k种颜色,要求同一列格子颜色不能相同,问总方案数 MOD 100000007答案等于R时最小的M是多少。思路:先把格子分为两部分,有不涂色的一部分,没有的一部分,然后计算出有的情况数,之后如果每多一行,每个格子上能涂颜色必然是k - 1种,也就

2014-06-28 15:39:00 1752

原创 10710 - Chinese Shuffle(数论+完美洗牌)

UVA 10710 - Chinese Shuffle题目链接题意:给定n张牌,完美洗牌n - 1次,问是否会变回原来的序列思路:完美洗牌:假设有a1a2a3...anb1b2b3...bn的牌,设每张牌原来的位置为x,那么完美洗牌一次后,前n张牌分别到2 x位置,后n张分别到1, 3, 5..也就是2x % (2 n + 1)的位置,因此每张牌位置变为2 x %

2014-06-27 23:40:58 1161

原创 UVA 11426 - GCD - Extreme (II) (数论)

UVA 11426 - GCD - Extreme (II)题目链接题意:给定N,求∑i=ni=1∑jnj=1gcd(i,j)的值。思路:lrj白书上的例题,设f(n) = gcd(1, n) + gcd(2, n) + ... + gcd(n - 1, n).这样的话,就可以得到递推式S(n) = f(2) + f(3) + ... + f(n) ==> S(n) = S

2014-06-27 20:07:29 2282

原创 UVA 11105 - Semi-prime H-numbers(数论)

11105 - Semi-prime H-numbers题目链接题意:给定4 * n + 1的集合,在这个集合基础上求这个集合的集合素数,然后求出这个集合中,由两个集合素数相乘得到的数有几个。思路:先筛出集合素数,然后暴力一下两两组合有多少个即可。代码:#include #include const int N = 1000005;int vis[N

2014-06-27 13:48:50 1155

原创 UVA 10368 - Euclid's Game(数论+博弈)

10368 - Euclid's Game题目链接题意:Stan和Ollie玩游戏,有两个数字a,b,每次可以选择较小数字的倍数,把另一个数字-去这个数,要保证>= 0,最后谁那步能得出0谁就赢了,问谁会赢。思路:其实这个相减的过程就是一个辗转相除的过程,考虑每一次辗转相除,如果只有1倍的数可以减,那么必须到下一步,如果有多步,先手的就有机会选择是自己到下一步或者让对方到下

2014-06-26 11:15:45 1348

原创 UVA 10692 - Huge Mods(数论)

UVA 10692 - Huge Mods题目链接题意:求a0a1a2...mod m思路:直接算肯定不行,利用欧拉定理ab=a(b mod phi(m) + phi(m))(b>=phi(m)),对指数进行降值处理,然后就可以利用快速幂去计算了,计算过程利用递归求解。代码:#include #include const int N = 1005;i

2014-06-26 10:34:40 2078

原创 UVA 756 - Biorhythms(数论)

756 - Biorhythms题目链接基本就是裸的中国剩余定理。代码:#include #include const int M = 23 * 28 * 33;const int m[3] = {23, 28, 33};int p[3], d;int gcd(int a, int b, int &x, int &y) { if (!b) {x =

2014-06-25 19:37:08 1177

原创 【数论】中国剩余定理

问题:给定a1a2...an, 和m1,m2...mn,mi之间两两互质,求一个x,使得x/ai=mi构造方法:先求出M=∏ni=1mi, 对于每个mi,求出M / mi, 然后和mi利用拓展欧几里得算法求出M/mi∗p+mi∗q=1时的值,取∑ni=1(p∗ai∗M/mi)就是答案。证明:证明参考了wiki由于mi之间两两互质,所以gcd(mi,mj)

2014-06-25 19:35:26 1497

原创 UVA 10140 - Prime Distance(数论)

10140 - Prime Distance题目链接题意:求[l,r]区间内最近和最远的素数对。思路:素数打表,打到sqrt(Max)即可,然后利用大的表去筛素数,由于[l, r]最多100W,所以可以去遍历一遍,找出答案。注意1的情况,一开始没判断1,结果WA了代码:#include #include #include using namespace

2014-06-24 12:46:51 1959

原创 UVA 10539 - Almost Prime Numbers(数论)

UVA 10539 - Almost Prime Numbers题目链接题意:给定一个区间,求这个区间中的Almost prime number,Almost prime number的定义为:只能整除一个素数。思路:既然是只能整除一个素数,那么这些数肯定为素数的x次方(x > 1),那么只要先打出素数表,然后在素数表上暴力找一遍就可以了,因为素数表只要找到sqrt(Max

2014-06-24 01:02:33 2158

原创 UVA 10515 - Powers Et Al.(数论)

UVA 10515 - Powers Et Al.题目链接题意:求出m^n最后一位数思路:由于m和n都非常大,直接算肯定是不行的,很容易想到取最后一位来算,然后又很容易想到最后一位不断乘自身肯定会形成周期,并且这个周期还挺短的,于是先求出周期,然后用n去取模该周期求出答案是第几个即可代码:#include #include int t[10];int

2014-06-22 20:26:06 1237

原创 UVA 10622 - Perfect P-th Powers(数论)

UVA 10622 - Perfect P-th Powers题目链接题意:求n转化为b^p最大的p值思路:对n分解质因子,然后取所有质因子个数的gcd就是答案,但是这题有个坑啊,就是输入的可以是负数,负数的情况比较特殊,p只能为奇数,这时候是要把答案不断除2除到为奇数即可。代码:#include #include #include long lon

2014-06-22 20:05:40 1082

原创 Codeforces Round #253 (Div. 1) (A, B, C)

Codeforces Round #253 (Div. 1)题目链接A:给定一些牌,然后现在要提示一些牌的信息,要求提示最少,使得所有牌可以被分辨出来。思路:一共2^10种情况,直接暴力枚举,然后对于每种情况去判断,判断的时候只要两两张牌枚举出来判断即可。不得不说CF机子真心强大,2秒限制还是能跑10^8B:给定n个发生概率,求选出其中一些事件,使得正好有一件发生的概率

2014-06-21 21:54:48 1037

原创 UVA 10090 - Marbles (数论)

UVA 10090 - Marbles题目链接题意:有两种盒子,一种代价c1,能装n1个珠子,一种代价c2,能装n2个珠子,问如何正好装n个珠子,并且使得代价最少。思路:利用扩展欧几里得算法求出n1∗x+n2∗y=n的一个解(x′,y′)就可以知道x,y的通解分别为x=x′∗n/gcd(n1,n2)+n2/gcd(n1,n2)∗ty=y′∗n/gac(n1,n2)−

2014-06-17 21:38:16 1644

原创 HDU 3037 Saving Beans (Lucas定理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3037推出公式为C(n + m, m) % p, 用Lucas定理求大组合数取模的值代码:#include #include #include using namespace std;int t;long long n, m, p;long long pow(long lon

2014-06-17 18:53:40 835

原创 UVA 10127 - Ones(数论)

UVA 10127 - Ones题目链接题意:求出多少个1组成的数字能整除n思路:一位位去取模,记录答案即可代码:#include #include int n;int main() { while (~scanf("%d", &n)) { int ans = 1; int now = 1; while (now) {

2014-06-14 14:13:05 863

原创 UVA 294 294 - Divisors (数论)

UVA 294 - Divisors题目链接题意:求一个区间内,因子最多的数字。思路:由于区间保证最多1W个数字,因子可以遍历区间,然后利用事先筛出的素数求出质因子,之后因子个数为所有(质因子的个数+1)的积代码:#include #include #include using namespace std;const int N = 35005;in

2014-06-14 13:46:13 1324

原创 UVA 11728 - Alternate Task (数论)

Uva 11728 - Alternate Task题目链接题意:给定一个因子和,求出对应是哪个数字思路:数字不可能大于因子和,对于每个数字去算出因子和,然后记录下来即可代码:#include #include const int N = 1005;int n, ans[N];void init() { memset(ans, -1, sizeo

2014-06-13 22:56:19 890

原创 Codeforces Round #251 (Div. 2) C、D

Codeforces Round #251 (Div. 2)C题:题意:给定一些数字,要把这些数字方程k行,其中p行和为奇数,剩下和为偶数。思路:根据奇数偶数的性质,先把p行放1个奇数,然后看看剩下的奇数是不是偶数个,如果不是肯定不满足,然后判断一下剩下的奇数个数/2加上偶数个数是否多余p个,如果不是肯定不满足,然后把这些放入p行,还有剩下的数字就全丢到最后一行去。D题:题

2014-06-06 08:46:22 820

原创 UVA 10593 - Kites(DP)

UVA 10593 - Kites题目链接题意:给定一张纸,问能剪出如题目所述的风筝有几种方法思路:正方形和菱形分开考虑,不过dp[i][j]都表示以(i,j)为右下角,所构成图形的边长,那么状态转移为往之前两个方向的最小边长。但是有一些特殊情况要判断,这个在纸上画一画就很清楚了代码:#include #include #include using namespa

2014-06-03 19:58:07 1334

原创 Codeforces Round #250 (Div. 2)

Codeforces Round #250 (Div. 2)题目链接A:水题,暴力判断有没有3个两倍长或两倍短的字符串,注意如果有多个答案也是属于C的情况B:先打出lowbit的表,然后从大到小去组合即可C:贪心,权值大的点优先拿掉D:并查集+贪心,先把边都按权值从大到小排序,然后加边,该边可以被用到的次数为左边集合个数乘上右边集合个数,最后答案在除以C2n即可

2014-06-03 15:42:00 1133

原创 UVA 10844 - Bloques (第二类斯特灵数)

UVA 10844 - Bloques题目链接题意:给定n个数字,问这n个数字能分成子集分成有几种分法思路:一开始先想了个状态,dp[i][j]表示放i个数字,分成j个集合的方案,那么转移为,从dp[i - 1][j - 1]在多一个集合,和从dp[i - 1][j]有j个位置放,那么转移方程为dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]

2014-06-01 19:51:49 1263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除