
数学
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
NOIP2013T1 转圈游戏 快速幂
描述n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置, ……, 依此类推。 游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第 0 号位置,第n-m+1 号原创 2016-07-15 23:49:21 · 392 阅读 · 0 评论 -
BZOJ 2818 欧拉函数
思路: 线性递推欧拉函数 搞个前缀和sum 枚举当前的素数p Σsum[n/p]*2-1就是解了 (-1 是因为(1,1)被算了两次)注意某些地方用long long//By SiriusRen#include <cstdio>using namespace std;#define N 10000007int n,vis[N],phi[N],prime[N],tot;lon原创 2017-01-10 15:08:16 · 471 阅读 · 0 评论 -
BZOJ 2190 欧拉函数
思路: 递推出来欧拉函数 搞个前缀和 sum[n-1]*2+3就是答案 假设仪仗队是从零开始的 视线能看见的地方就是gcd(x,y)=1的地方 倒过来一样 刨掉(1,1) 就是ans*2+1 再加一下第零行第零列的两个 就是结果了//By SiriusRen#include <cstdio>using namespace std;#define N 40005int n,pr原创 2017-01-10 15:27:09 · 418 阅读 · 0 评论 -
BZOJ 2005 容斥原理
思路:题目让求的是 Σgcd(i,j) (i<=n,j<=m) n,m不同 没法线性筛 怎么办? 容斥原理!! f[x]表示gcd(i,j)=x的个数g[x]为 存在公约数=x 的数对(i,j)的个数 g(x)=(n/x)*(m/x)那么f[x]就是 g(x)-f(2*x)-f(3*x)-…… -f(i*x) (i*x<=min(n,m))从后往前算 (这个显然吧 要不怎么减)原创 2017-01-10 15:56:43 · 855 阅读 · 0 评论 -
BZOJ 2045 容斥原理
思路: 同BZOJ 2005 http://blog.youkuaiyun.com/qq_31785871/article/details/54314774//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;#define int long longint a,b,d,mn,f[1000050];signe原创 2017-01-10 23:09:06 · 448 阅读 · 0 评论 -
BZOJ 1101 莫比乌斯函数+分块
思路: 题目中的gcd(x,y)=d (x<=a,y<=b)可以转化成 求:gcd(x,y)=1 (1<=x<=a/d 1<=y<=b/d)设 G(x,y)表示x<=a y<=b x,y互质 的数有多少组F(a,b,k)表示有多少组x<=a y<=b gcd(x,y)>=k(注意是大于等于K) 这个很好求啊 就是(a/k)*(b/k)G(x,y)=P1*F(a,b,1)+P2*F(a,原创 2017-01-11 08:12:58 · 845 阅读 · 0 评论 -
BZOJ 2301 莫比乌斯函数+分块
思路: 同BZOJ1101 就是加个容斥 … http://blog.youkuaiyun.com/qq_31785871/article/details/54340241//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;#define N 50001int prime[N],mu[N],vis[N],su原创 2017-01-11 08:38:30 · 365 阅读 · 0 评论 -
BZOJ 4522 Pollard-rho+exgcd
思路: N=P*Q 求出来P和Q 模拟就好…//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll shai[10]={2,3,5,7,11,13,17,19,21,23};ll mul(ll x,ll y,ll mod){ x%=mod;l原创 2017-02-27 22:57:08 · 857 阅读 · 0 评论 -
BZOJ 3667 Pollard-rho &Miller-Rabin
论O(1)快速乘和O(logn)快速乘的差距….//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;ll shai[10]={2,3,5,7,11,13,17,19,23,29};ll mul(ll a,ll b,ll p){ ll d=((long原创 2017-02-27 22:59:42 · 659 阅读 · 0 评论 -
Burnside&Polya总结
这里就算是一个小总结吧… 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/hankers/archive/2012/08/03/2622231.html 首先 Burnside引理: Burnside引理:即互异状态个数等于各种转换下的等价类个数的和除以转换个数。原创 2017-02-20 23:46:14 · 535 阅读 · 0 评论 -
BZOJ 3729 splay维护DFS序+博弈论
思路: 这像是 阶梯Nim之类的东西 我们 直接把sg函数 设成mod(L+1)的 一棵子树 向下的奇数层上的石子xor起来 就是答案 有加点和改值的操作 就splay维护一下//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=1原创 2017-02-26 16:10:56 · 700 阅读 · 0 评论 -
POJ 3175 枚举
思路: 枚举小数点前 的数是啥 判一判 复杂度是根号的…..注意精度!!!! //By SiriusRen#include <cmath>#include <cstdio>using namespace std;#define LL long longint n,l;int main(){ scanf("%d%d",&n,&l); double base=原创 2016-10-30 16:57:57 · 338 阅读 · 0 评论 -
POJ 3168 排序+扫描
题意: 思路: 我们可以把每个矩形拆成四条线 与x轴平行的放在一起 与y轴平行的放在一起 排个序 判一判有没有交 有交 则说明不可扩张 统计一下 就可以了处理的姿势很重要 姿势不对毁一生//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;#define N 5555原创 2016-10-30 14:47:32 · 289 阅读 · 0 评论 -
POJ 3174 暴力枚举
思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1、y1、x2、y2为他们两两的差//By SiriusRen#include <cstdio>using namespace std;int n,cnt; struct Point{int x,y;}point[888];struct ans{int x,y,z;}ans[888];int main(){原创 2016-10-28 14:31:18 · 648 阅读 · 0 评论 -
NOIP2012D2T1 同余方程
[NOIP2012T4]同余方程 noip2012-tg 描述 求关于 x的同余方程 ax ≡ 1(mod b) 的最小正整数解。 输入格式 输入文件 mod.in 输入只有一行,包含两个正整数a,b,用一个空格隔开。 输出格式 输出文件 为 modmod .out 。 输出只有一行,包含一个正整数,包含一个正整数 ,包含一个正整数 x0,即最小正整数解。原创 2016-07-15 23:58:20 · 1288 阅读 · 0 评论 -
NOIP2011 day2 第一题 计算系数
计算系数 NOIP2011 day2 第一题 描述 给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数。 输入格式 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。 输出格式 输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。 测试样原创 2016-07-16 00:06:31 · 379 阅读 · 0 评论 -
POJ 3641 快速幂
题意:给你两个数:p和a,如果p是素数输出no,如果p不是素数,判断a^p%p==a是否成立,如果成立输出yes,否则输出no。注意: 1.因为a和p不互质,不能用费马小定理。。。 2. 用long long // By SiriusRen #include <cmath>#include <cstdio>#include <algorithm>using namespace std;原创 2016-07-30 16:16:05 · 655 阅读 · 0 评论 -
POJ 3252 组合数学?
大神们的题解我一个都没看懂。。。。。。。。。。。十分的尴尬 题意:算出闭区间内二进制中0的个数大于等于1的个数的数字有多少个 思路: 组合数学(n小于500的时候都可以出解,只不过高精比较麻烦)。 这道题还算比较仁慈。。。Discuss里面有一段说得挺好的 看完各家算法,尝试独立分析一下: 以sample为例子 [2,12]区间的RoundNumbers(简称RN)个数:Rn原创 2016-07-31 13:55:08 · 664 阅读 · 0 评论 -
POJ 3048 线性筛法求素数
一些坑: 题目有多组数据!!! 有组数据如下: 1 1坑很深……//By SiriusRen#include <cstdio>#define N 200000using namespace std;int n,mindiv[200050],prime[100000],top=0,xx,rec;int main(){ for(int i=2;i<=N;i++) {原创 2016-08-28 16:40:51 · 885 阅读 · 0 评论 -
POJ 2478 线性递推欧拉函数
题意: 求sigma phi(n) 思路: 线性递推欧拉函数 (维护前缀和)//By SiriusRen#include <cstdio>using namespace std;#define maxn 1000005#define int long longint n,p[maxn+100],s[maxn+100],phi[maxn+100],tot;void Phi(){原创 2016-09-14 23:45:29 · 790 阅读 · 0 评论 -
NOIP2014 解方程
70分的普通Hash。。。。。。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define mod 100000007char jy[66666];int n,m,a[666],s[66666],top;long long temp[66原创 2016-09-05 21:26:09 · 866 阅读 · 0 评论 -
POJ 3276 枚举+差分?
题意: 思路: 先枚举一下k 贪心:如果当前是B那么就翻 差分一下序列 mod2 就OK了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,s[5555],reck,reans=0x3fffffff,vis[5555];char j原创 2016-10-10 23:10:25 · 406 阅读 · 0 评论 -
POJ 1671 第二类斯特林数
思路: 递推出来斯特林数 求个和 if(i==j)f[i][j]=1; else f[i][j]=f[i-1][j-1]+f[i-1][j]*j;//By SiriusRen#include <cstdio>using namespace std;double f[108][108],ans[108];int n;int main(){原创 2016-11-03 10:07:32 · 889 阅读 · 0 评论 -
BZOJ 3629 约数和定理+搜索
呃呃 看到了这道题 没有任何思路…… 百度了一发题解 说要用约数和定理 就查了一发 http://baike.so.com/doc/7207502-7432191.html (不会的可以先学习一下)然后呢 我们考虑枚举约数 先线性筛一遍10^5以下的 10^5以上的数可以用已经筛过的素因数枚举最后就搜一下就好了 (记得判断=1的情况)还有 此题PE很坑爹不能有行末空格原创 2016-10-14 09:27:34 · 679 阅读 · 0 评论 -
BZOJ 2729 高精度+组合数学
思路: 考虑 把男生排成一排 女生和老师往里插 分成两种情况. 1. 女生中间夹着老师 2. 女生中间没有夹着老师求一下组合* 阶乘就好了 先放Python代码 简洁易懂def fact(n): temp=1 for i in range(1,n+1): temp*=i return tempdef C(n,m): if(n<m): re原创 2017-03-08 21:20:15 · 444 阅读 · 0 评论