![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
文章平均质量分 84
吹梦到西周啊啊啊
纵有千古,横有八荒;前途似海,来日方长。
展开
-
2020ICPC昆明-I.Mr. Main and Windmills(计算几何) -- 叉乘求两直线交点
Mr. Main and Windmills题意:火车从sss向ttt运动,在轨道的一侧有nnn个风车,当火车到达某一点的时候,风车的相对方向会发生改变。例如:aaa原本在bbb的左边,火车运动到某一点时,从火车的视角,aaa出现在了bbb的右边。mmm次询问,每次询问输出一个坐标,对于hih_ihi风车而言,恰好发生了kik_iki次方向改变。题解:例如aaa和bbb风车,当它们的相对位置改变时,火车应位于直线ababab和直线ststst的交点处题目就转变为:求hih_ihi和其他风车所原创 2021-04-08 22:47:31 · 393 阅读 · 0 评论 -
CF1452D. Radio Towers(DP)
Radio Towers题意:有一个长为n的线段,每个点设置被信号塔的概率为0.5,每个信号塔可以覆盖一个以自己为中心的奇数线段,覆盖范围不可重叠,请问存在解的概率题解:每个位置都有等概率设置或不设置,共有2n2^n2n种情况,且等概率关建点是求有多少情况可以存在解考虑DP,枚举前面的合法状态去更新,因为必须是奇数段,所以就是前-1,-3,-5…的情况数之和,这个和可以用前缀和来维护,注意奇偶需要分开之后就费马小定理求逆元就行了Code:#include<bits/stdc++.h&原创 2020-12-01 22:25:43 · 227 阅读 · 0 评论 -
2018新生赛-还是简单题
还是简单题题意:给定两个数,忽略左右移的情况下,需要几次加减法可以得到他们的乘积。题解:对于a*b,可以将a或b转换为二进制并拆解,以b为例假设b等于21,转换为二进制:10101,则21=24+22+2021=2^4+2^2+2^021=24+22+20a∗b=a∗(24+22+20)=a∗24+a∗22+a∗20=(a<<4)+(a<<2)+(a<<0)a*b=a*(2^4+2^2+2^0)=a*2^4+a*2^2+a*2^0=(a<<4)+(a原创 2020-11-28 19:05:55 · 209 阅读 · 0 评论 -
2020牛客暑期多校训练营(第四场)H.Harder Gcd Problem(数学)
H-Harder Gcd Problem题意:从1到n中,选m对数(不重复),使得每一对都不互质,求最大的m并输出一种可行的搭配题解:先线性筛筛出1到n中的素数,从大到小遍历这些素数,比如当前遍历到素数pip_{i}pi,去枚举pip_{i}pi的没用过且小于等于n的倍数(包括pip_{i}pi),如果个数为偶数,就将它们一一匹配:若为奇数,就将2倍的那个数踢出,其他的一一匹配,踢出的那个数留着和后面的素数的2倍匹配,将它们标记为已用过。其实在比赛中我无法证明这种做法的正确性(虽然现在好像也给不原创 2020-07-20 18:36:22 · 174 阅读 · 1 评论 -
2020牛客暑期多校训练营(第三场)F.Fraction Construction Problem(数学)
F-Fraction Construction Problem题意:给定a和b,构造cd−ef=ab\dfrac{c}{d}-\dfrac{e}{f}=\dfrac{a}{b}dc−fe=ba 且 d,f<bd,f<bd,f<b题解:1.当ab不互质,即ab存在非1公因数时,可以构造出a+xb−xb=ab\dfrac{a+x}{b}-\dfrac{x}{b}=\dfrac{a}{b}ba+x−bx=ba ,x任取,因为要求d,f<bd,f<bd,f<b,原创 2020-07-19 13:38:31 · 347 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场)J.Just Shuffle(逆元+模拟)
J-Just Shuffle题意:给定一个排列A和一个大质数k,找出一个置换B,使得P经过k次B置换后得到A,输出第一次置换后的结果题解:在排列A上找出所有环,记环的大小为szisz_{i}szi,每一步移动的长度为tmpitmp_{i}tmpi,使得tmpi∗k≡1modszitmp_{i}*k\equiv1 mod sz_{i}tmpi∗k≡1modszi,也就是求出k在modszimodsz_{i}modszi下的逆元,k为大质数,所以一定有解,输出每个环移动tmpitmp_{i}tmp原创 2020-07-15 15:55:06 · 337 阅读 · 0 评论 -
CF1335D. Game With Array(数论+思维?)
Game With Array要使子序列和不为k和n-k,最简单的就是取k=1,判断一下s/n>=2就行,这样序列可以为n-1个2和s-2*(n-1)组成Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) memset(a, b, sizeof(a));#define lowbit(x) (原创 2020-06-03 23:00:41 · 209 阅读 · 0 评论 -
CF346A Alice and Bob(博弈+gcd)
Alice and Bob求n个数的gcd 最后的数列必然是一个以gcd为首项,公差为gcd的等差数列比如:2 4 6 显然结束1 3 5 虽然也是等差数列,但还可以继续下去所以这题的做法就是求n的数的gcd,然后就可以求出这个数列最长为多少,减掉初始的nCode:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem原创 2020-05-28 23:32:54 · 184 阅读 · 0 评论 -
CF1228C Primes and Multiplication(数论)
Primes and Multiplication题意:不好描述(逃)戳上面链接吧分析:题目看起来很复杂,但是理一下其实就是 x的每个质因数在1到n的的质因数集合中出现次数 答案就是x的每个质因数的次数幂(好像很绕,我也不知道在讲什么)举个例子,x=5,n=70,x的质因数只有5,f(5,1)∗f(5,2)…f(5,70)=g(1,5)∗g(2,5)…g(70,5)f(5,1)*f(5,2)\dots f(5,70) = g(1,5)*g(2,5)\dots g(70,5)f(5,1)∗f(5,2)原创 2020-05-28 22:04:15 · 190 阅读 · 0 评论 -
CF707C Pythagorean Triples(数论)
Pythagorean Triples题意:给定一个数,求出另外两个数,使这三个数构成勾股数分析:a2=b2−c2,a2=(b−c)∗(b+c)a^2=b^2-c^2,a^2=(b-c)*(b+c)a2=b2−c2,a2=(b−c)∗(b+c)当a^2为奇数,令(b-c)=1,(b+c) = a^2;当a^2为偶数,令(b-c)=2,(b+c) = a^2/2;求解方程即可a<=2时,不可能构成勾股数Code:#include <bits/stdc++.h>using原创 2020-05-25 19:01:41 · 108 阅读 · 0 评论 -
CF888 D. Almost Identity Permutations(数学)
题目传送题意:给定n,k,求至少有n-k个ai=i的排列数分析:为方便,用n-k代替k比如n = 5,k = 1先看有且仅有1个ai=i的情况: 有且仅有1个ai=i有C51C_5^1C51种情况,以a1=1为例 剩下的四个位置,不能出现ai=i,第二位可以填3 4 5,第三位可以2 4 5,在二三位确定后,四五位自然确定 ans=C51C_5^1C5133有且仅有2个ai=...原创 2020-03-31 11:33:54 · 147 阅读 · 0 评论 -
CF678 D. Iterated Linear Function (数学)
题目传送分析:1.对式子变形,可得 ans = (A ^ n - 1) / (A - 1) * B + A ^ n * x2.A==1时,特殊处理:ans = n * B + x3.涉及分数取模,逆元:ans = (A ^ n - 1) * (A - 1) ^ (mod - 2) % mod * B + A ^ n * x代码如下:#include <iostream>#...原创 2020-03-30 18:19:57 · 223 阅读 · 0 评论 -
CF 735D Taxes(数学)
题目传送背景知识:哥德巴赫猜想任何一个大于2的偶数都可以拆成2个质数之和,大于7的奇数可以拆成3个质数之和。证明:数学王冠上的明珠岂是我这蒟蒻能证明的。。。。反正也没有人能证伪,就这样用着吧。回到这题:就是求一个数最少能拆成几个质数之和。如果就直接按照上述猜想去写程序:1 质数毫无疑问直接输出12 1和2也是13 大于2的偶数输出24 大于7的奇数输出3但是!25...原创 2020-03-19 11:21:11 · 196 阅读 · 0 评论 -
洛谷 P2158 [SDOI2008]仪仗队 (数论)
题目传送要求看得到的人数,我们可以用总人数-看不到的。以(0,0)为原点,建立直角坐标系,横纵坐标的gcd大于1时就会被遮挡。我们可以求横纵坐标公约数为i的个数:ff[i]=(n/i)(n/i)。注意要除重,ff[i]-=ff[ik] (k=2…i*k<=n)。结果要加上(0,1)(1,0)两点。#include <iostream>using namespace ...原创 2020-02-29 17:48:07 · 116 阅读 · 0 评论 -
洛谷 P1582 倒水(进制 数论)
题目传送当有2^i个瓶子时,可以合成一个瓶子。将n转换为二进制,有几个1就可以合成几个瓶子,当大于k时,就加上最低位的1的数(1100就加4),然后继续判断。#include <iostream>using namespace std;typedef long long ll;ll n, k, ans;int setcount(ll x){ int ret = 0...原创 2020-02-29 14:35:14 · 148 阅读 · 0 评论 -
洛谷 P1338 末日的传说 (数论 贪心)
题目传送当序列长度为n时,产生最多的逆序数为n*(n-1)/2。要将1-n排序,可以按1-n的顺序来一个个的考虑,当i为1时,剩下的n-1个位置可以产生(n-1) * (n-2)/2个逆序数,如果m<=(n-1) * (n-2)/2,就将1放在最前面,如果大于,就将1放在最后面,因为这样可以产生(n-1)个逆序,对结果贡献最大。按照这个思路,逐一考虑即可。#include <i...原创 2020-02-29 14:31:08 · 116 阅读 · 0 评论 -
Educational Codeforces Round 82 (Rated for Div. 2) B. National Project (数学)
题目传送题目大意:一共有n段路要修,连续g天修好的,连续b天修坏的,如此循环,坏的路不能超过总的一半。求最短天数。分析:当g>=n || g>=b 时,结果就是n。当g<b时,只考虑修好的,q=(n+1)/2;如果q%m==0 则ans=(q/m)*m+(q/m-1)*b,否则ans=(q/m) * (m+b).#include <iostream>#...原创 2020-02-13 11:37:03 · 101 阅读 · 0 评论 -
2020牛客寒假算法基础集训营1 E-rin和快速迭代(唯一分解定理)
题目传送rin最近喜欢上了数论。然而数论实在太复杂了,她只能研究一些简单的问题。这天,她在研究正整数因子个数的时候,想到了一个“快速迭代”算法。设 为 的因子个数,将 迭代下去,rin猜想任意正整数最终都会变成 。例如: 。她希望你帮她验证一下。她会给你一个正整数 ,让你输出它在迭代过程中,第一次迭代成 的迭代次数。赛中用暴力做的,竟然也过了?赛后看题解要用”唯一分解定理“...原创 2020-02-05 15:12:58 · 336 阅读 · 0 评论 -
2020牛客寒假算法基础集训营1 A-honoka和格点三角形(数学)
题目传送honoka最近在研究三角形计数问题。她认为,满足以下三个条件的三角形是“好三角形”。1.三角形的三个顶点均为格点,即横坐标和纵坐标均为整数。2.三角形的面积为1。3.三角形至少有一条边和x轴或y轴平行。honoka想知道,在平面中选取一个大小为n*m的矩形格点阵,可以找到多少个不同的“好三角形”?由于答案可能过大,请对1000000007取模。做的时候感觉思路上应该没什么问...原创 2020-02-04 19:06:32 · 685 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2 E-做计数 (数学)
题目传送题目大意:给定一个正整数n,问你有多少对三元组(i, j, k)满足sqrt(i) + sqrt(j) = sqrt(k)且i * j <= n。分析:化简一下式子可以得到i + j + 2 * sqrt(i * j) = k。因此可知只要i * j是平方数即可。所以枚举一下不大于n的平方数,统计一下他们的因子数即可。#include <iostream>#inc...原创 2020-02-06 20:38:14 · 180 阅读 · 0 评论