随笔分类 -  ---数论---

摘要:题目链接:Educational Codeforces Round 27 G. Shortest Path Problem? 题意: 有n个点,m条边,可能有自环,每条边有一个值,现在定义两点之间的距离为经过的边的异或值。 问从1到n的最短路是多少。 题解: 首先我们用一个dfs将每个环的异或值处理 阅读全文
posted @ 2017-09-14 18:18 bin_gege 阅读(168) 评论(0) 推荐(0)
摘要:题目链接:hdu 5995 Guessing the Dice Roll 题意: 有一个6面的骰子,有n(n≤10)个人每个人猜了一个长度为l(l≤10)的序列,不停的掷骰子直到满足一个人的序列则那个人获胜,求每个人获胜的概率。 题解: 将他们猜的串插入AC自动机,然后转移k次,这里k要足够大才能收 阅读全文
posted @ 2017-07-29 15:15 bin_gege 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #422 (Div. 2) D. My pretty girl Noora 题意: 给你一个数n和t,l,r,让你求 t0·f(l) + t1·f(l + 1) + ... + tr - l·f(r). 其中f(n)是n个人的最少比较次数。 比如n为4,可 阅读全文
posted @ 2017-07-06 00:25 bin_gege 阅读(161) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo 题意: 在一个二维方格子里有n条线段,有三种走法 (x + 1, y + 1), (x + 1, y), or (x + 1, y - 1). 现在要求每次都要在线段下行走 阅读全文
posted @ 2017-06-27 12:03 bin_gege 阅读(151) 评论(0) 推荐(0)
摘要:题目链接:poj 1721 CARDS 题意: 看了半天才看懂,就是一次置换为b[i]=a[a[i]],a[i]=b[i]。 现在已经知道了置换了多少次和当前的序列,问你最原来的序列为 题解: 将这个置换的循环次数ans找出来,再做ans-s次就行了。 1 #include<cstdio> 2 #i 阅读全文
posted @ 2017-06-24 22:04 bin_gege 阅读(163) 评论(0) 推荐(0)
摘要:题目链接:poj 2369 Permutations 题意: 给你一个置换序列,问你循环周期是多少。 题解: 找到每个子循环周期,总体的循环周期就是这些子循环周期的最小公倍数。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 阅读全文
posted @ 2017-06-24 20:28 bin_gege 阅读(128) 评论(0) 推荐(0)
摘要:题目链接:poj 3590 The shuffle Problem 题意: 给你一个数n,让你找一个字典序最小的置换序列,使得变换整个周期最大。 题解: 由于置换群的性质,我们可以将n拆分成m个数,使得这m个数的和为n,并且这m个数的最小公倍数最大。 dp可以求出将n拆分后的最大的最小公倍数。 然后 阅读全文
posted @ 2017-06-24 19:56 bin_gege 阅读(153) 评论(0) 推荐(0)
摘要:题目链接:hdu 1817 Necklace of Beads 这题的弱化版:传送门 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 typedef long lo 阅读全文
posted @ 2017-06-23 20:06 bin_gege 阅读(106) 评论(0) 推荐(0)
摘要:题目链接:hdu 3923 Invoker 题意: 将n种元素,填在有m个位置的戒指上,问有多少种方案。 能旋转,翻转的算一种。 题解: 通过打表发现,对于x个位置的戒指,旋转i位的循环数为gcd(i,x); 然后对于翻转:考虑m的奇偶性,一共有m条对称轴。 然后就可以直接上快速幂解了。 1 #in 阅读全文
posted @ 2017-06-23 19:58 bin_gege 阅读(127) 评论(0) 推荐(0)
摘要:题目链接:hdu 3430 Shuffling 题意: 给出n张牌,标号为1-n,然后给出两个序列,序列1表示序列1,2,3,4……,n洗一次牌后到达的. 序列2表示目标序列,问初始序列按序列1的洗牌方式洗几次能到达序列2的情况,如果不能到达输出-1. 题解: 在初始序列和序列1的变换中找出1能变到 阅读全文
posted @ 2017-06-22 23:28 bin_gege 阅读(187) 评论(0) 推荐(0)
摘要:题目链接:hdu 1802 Black and white painting 题意: 有一个n*n的格子,然后用c种颜色去涂,问你有多少种方案。 能旋转,反射的算一种方案。 题解: polya定理的经典运用 旋转只有 0,90,180,270度三种旋法。旋0度,则置换的轮换数为n*n旋90度,n为偶 阅读全文
posted @ 2017-06-22 17:32 bin_gege 阅读(192) 评论(0) 推荐(0)
摘要:题目链接:hdu 1439 Cipher 题意: 给你一个n元的key,让你将一个字符串置换k次。 题解: 暴力将每个数的循环数找到,然后k%后对应填字符就行了。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 阅读全文
posted @ 2017-06-22 12:01 bin_gege 阅读(247) 评论(0) 推荐(0)
摘要:题目链接:hdu 6030 Happy Necklace 题意: 给你一个有n颗只有红黑的珠子串,对于任意一个连续的质数个珠子,红的珠子都不能少于黑的珠子。 问你有多少个这样的含n颗珠子的串满足这样的条件。 题解: 首先打个表,发现是An=An-1+An-3。 然后直接上矩阵就好了 1 #inclu 阅读全文
posted @ 2017-05-17 20:40 bin_gege 阅读(136) 评论(0) 推荐(0)
摘要:题目链接:hdu 4609 3-idiots 题意: 给你n条线段。问随机取三个,可以组成三角形的概率。 题解: FFT搞,具体可看kuangbin菊苣的详细题解:传送门 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++ 阅读全文
posted @ 2017-04-07 09:00 bin_gege 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:hdu 1402 A * B Problem Plus 题意: 让你求两个大数的乘法。 题解: FFT裸题。 FFT学习推荐:FFT学习笔记 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using 阅读全文
posted @ 2017-03-22 18:01 bin_gege 阅读(120) 评论(0) 推荐(0)
摘要:题目链接:hdu 1705 Count the grid 题意: 给定一个三角形三点坐标,问三角形内有多少个坐标均为整数的点。 题解: 给定顶点坐标均是整点(或正方形格点)的简单多边形,皮克定理说明了其面积 S 和内部格点数目 n、边上格点数目 s 的关系:S = n +s/2+1 三角形两向量叉积 阅读全文
posted @ 2017-03-04 21:04 bin_gege 阅读(190) 评论(0) 推荐(0)
摘要:题目链接:Codeforces Round #400 E. The Holmes Children 题意: 定义f(1)=1,f(n),n>1的值为满足x+y=n且gcd(x,y)=1的(x,y)个数;定义g(n)=Σd|n f(n/d);定义Fk(n)满足k=1时Fk(n)=f(g(n)),k>1 阅读全文
posted @ 2017-02-25 17:29 bin_gege 阅读(286) 评论(0) 推荐(0)
摘要:题目链接:hdu 2855 Fibonacci Check-up 题意&题解: 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,sizeof(a)) 3 #define F(i,a,b) for(int i=a;i<=b;i++) 4 阅读全文
posted @ 2017-02-20 20:15 bin_gege 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:hdu 2807 The Shortest Path 题意: 如果矩阵A*B=C,那么就表示A-->B有一条单向路径,距离为1. 给一些矩阵,然后问任意两个矩阵直接的距离。 题解: 把矩阵读进来后处理一下邻接矩阵,然后Folyd一下。 1 #include<cstdio> 2 #inclu 阅读全文
posted @ 2017-02-20 17:06 bin_gege 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:hdu 2157 How many ways?? 题意: 给你一个邻接矩阵,问你从a到b点,可走重复路径,恰好经过k个节点的路径数。 题解: 其实就是一个裸的矩阵快速幂,每走一次,相当于一次乘法。 1 #include<bits/stdc++.h> 2 #define mst(a,b) m 阅读全文
posted @ 2017-02-17 14:56 bin_gege 阅读(124) 评论(0) 推荐(0)