Loading

随笔分类 -  ACM题解

摘要:这天,lyk又和gcd杠上了。它拥有一个n个数的数列,它想实现两种操作。1.将ai 改为 bi2:给定一个数i,求所有 gcd(i,j)=1gcd(i,j)=1 时的 aj 的总和。 第一行两个数n,Q(1<=n,Q<=100000)。 接下来一行n个数表示ai(1<=ai<=10^4)。 接下来Q 阅读全文
posted @ 2020-07-26 22:33 MQFLLY 阅读(133) 评论(0) 推荐(0)
摘要:在圆上一点S,扔出一个球,这个球经过N次反弹还有可能回到S点。N = 4时,有4种扔法,如图: 恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。 给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。 输入一个数N(1 <= N <= 阅读全文
posted @ 2020-07-26 00:13 MQFLLY 阅读(133) 评论(0) 推荐(0)
摘要:一个整数序列S的LCM(最小公倍数)是指最小的正整数X使得它是序列S中所有元素的倍数,那么LCM(S)=X。 例如,LCM(2)=2,LCM(4,6)=12,LCM(1,2,3,4,5)=60。 现在给定一个整数N(1<=N<=1000000),需要找到一个整数M,满足M>N,同时LCM(1,2,3 阅读全文
posted @ 2020-07-26 00:05 MQFLLY 阅读(160) 评论(0) 推荐(0)
摘要:1040: 给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 n <= 1e9 ll get_ephi(ll n) { ll m = int(sqrt(n + 0.5)); ll ans = 阅读全文
posted @ 2020-07-26 00:01 MQFLLY 阅读(125) 评论(0) 推荐(0)
摘要:求 n % 1 + n %2 + n % 3 .....n % n 。结果取余1e9 + 7 n <= 1e12 显然是用到了整除分块。 这里的for循环可以当作模板 for (ll l = 1, r; l <= n; l = r + 1) { if (n / l != 0) r = min(n / 阅读全文
posted @ 2020-07-24 10:06 MQFLLY 阅读(128) 评论(0) 推荐(0)
摘要:此题主要学到了处理循环节的问题。 对于每个生物而言,有可能有无数能到a1,有可能仅1次到a1,也可能一次也到不了a1 对于一次也到不了,直接输出-1 对于仅1次跑到a1,for m次,如果没有就没有了 对于无数次,联立同余方程,可以用EXGCD或者EXCRT求解。 #pragma warning(d 阅读全文
posted @ 2020-07-24 09:28 MQFLLY 阅读(178) 评论(0) 推荐(0)
摘要:使用JAVA内置函数 /* import java.math.BigInteger; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io 阅读全文
posted @ 2020-07-23 10:36 MQFLLY 阅读(153) 评论(0) 推荐(0)
摘要:给出一个n,求1-n这n个数,同n的最小公倍数的和。例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。 由于结果很大,输出Mod 1000000007的结果 ai <= 1e9 公式推导如上。 最后只需要预处理出质因子,用积性函数的性质在 阅读全文
posted @ 2020-07-23 10:18 MQFLLY 阅读(198) 评论(0) 推荐(0)
摘要:给出N个正整数,要求选出一些数组成等差数列。 问最长的等差数列的长度是多少。 3 <= N <= 10000 2<= Ai <= 1e9 容易想到用DP的方法。 dp[i][j]表示以j为中间的项拓展的最大的等差数列长度。 因此可以用双指针拓展,复杂度N*N。这里用short存储可以避免MLE #p 阅读全文
posted @ 2020-07-23 10:14 MQFLLY 阅读(133) 评论(0) 推荐(0)
摘要:序列自动机是用于处理子序列问题的一种工具。其实现类似KMP,大致操作是建立一个Next数组,用于各自操作。 1. 51Nod 2504 给定一个字符串和若干个word,问有多少个word是该字符串的子序列。 注意建立Next时从1开始。 #pragma warning(disable:4996) # 阅读全文
posted @ 2020-07-22 14:19 MQFLLY 阅读(194) 评论(0) 推荐(0)
摘要:DFS套路。 cur , x , f , g 分别表示 进行到第cur位,前缀数字是x,f表示是否满数字,g代表是否含前导0 #include<iostream> #include<algorithm> #include<bitset> #include<tuple> #include<unorde 阅读全文
posted @ 2020-07-21 14:59 MQFLLY 阅读(197) 评论(0) 推荐(0)
摘要:有n只猫,每只猫初始石刻没糖果。 进行m次重复的k次操作。 g i 给第i只猫一个糖果 s i j 交换第i只猫和第j只猫的糖果 c i 吃掉第i只猫的所有糖果 m <=1e9 明显是用矩阵快速幂处理。 难点在于建立转移矩阵。 注意到只需对单位矩阵操作。对于n只猫建立 n+1 * 1 的矩阵,多的一 阅读全文
posted @ 2020-07-21 14:04 MQFLLY 阅读(146) 评论(0) 推荐(0)
摘要:B签到成功 打表出c的存在没什么作用。 容易找出规律 答案就是c的某个次数,这个次数就是n的质因子的幂次和。 因此只需线性筛出幂次和,再快速幂就好了 #pragma warning(disable:4996) #include<iostream> #include<algorithm> #inclu 阅读全文
posted @ 2020-07-20 19:25 MQFLLY 阅读(186) 评论(0) 推荐(0)
摘要:论文题 1e11内找素数个数。 Meissel-Lehmer 黑科技板子 #pragma warning(disable:4996) #include<iostream> #include<algorithm> #include<bitset> #include<tuple> #include<un 阅读全文
posted @ 2020-07-20 17:56 MQFLLY 阅读(136) 评论(0) 推荐(0)
摘要:Konig 定理 二分图最小点覆盖包含的点数等于二分图最大匹配包含的边数 POJ 1325 有两台机器A,B,及N个任务,每台机器有M种不同的模式。 对于每个任务 i ,给定两正整数ai 和bi 表示若在A上执行,需切换到模式ai,否则bi。 任务可以随意顺序执行,每台机器转换模式就要重启一次。求怎 阅读全文
posted @ 2020-07-20 10:17 MQFLLY 阅读(124) 评论(0) 推荐(0)
摘要:给定一张图,图中给出一些有向边,一些无向边。 要求给所有无向边赋予方向后能够使整张图无环。 已知给定的图中无自环,无重边 解题思路: 若给定的有向边已经成环,那么必然输出NO,否则都可以构造出解。 考虑原图的拓扑排序,根据两点的进队时间,对于某一无向边,只要使边上两点进队时间也满足拓扑序,就可以使得 阅读全文
posted @ 2020-07-18 10:19 MQFLLY 阅读(395) 评论(0) 推荐(0)
摘要:给定一个n表示a的质因数个数。 接下来n行给出质数及其指数。 按要求输出其因数,满足如下要求: 当前数是前一个数通过乘一个质数或者除以一个质数得到。 反正就是构造嘛。对于每一个i,必然要遍历前面的所有情况。其实就是升升降降。 vector<ll> ans; vector<ll> p(16); vec 阅读全文
posted @ 2020-07-18 10:04 MQFLLY 阅读(192) 评论(0) 推荐(0)
摘要:判断所给的图是否是二分图,如果是,输出各自的点。 用染色法 DFS一遍即可 O(N + M) vector<int> col[2]; vector<int> e[maxn]; int vis[maxn]; bool dfs(int v, int color) { vis[v] = color; co 阅读全文
posted @ 2020-07-17 11:33 MQFLLY 阅读(155) 评论(0) 推荐(0)
摘要:给定20个桶的状态,可以翻转桶把相邻的状态变换。问最少的变换次数。 此类问题通常有以下解决方案 1.暴力枚举 2.高斯消元 + 暴力枚举 3.找规律性质 这题和上一题POJ1830 很相似,可以用高斯消元异或方程组枚举自由元做。 但是比较麻烦; 注意到每个桶至多翻转一次。 从右往左的第一个1必然要通 阅读全文
posted @ 2020-07-17 10:46 MQFLLY 阅读(177) 评论(0) 推荐(0)
摘要:设xixi表示第ii个开关的操作情况,那么xi=1xi=1为按了这个开关,否则xi=0xi=0表示这个开关并没有按下去,那么我们接着统计ai,jai,j表示第i个开关和第j个开关的联系情况,ai,j=1ai,j=1表示按下j会影响i的状态,否则就是不会影响,即ai,j=0ai,j=0,特殊地一个点就 阅读全文
posted @ 2020-07-17 09:07 MQFLLY 阅读(123) 评论(0) 推荐(0)