- 博客(25)
- 收藏
- 关注
原创 【JSOI 2009】 Count
【题目链接】 点击打开链接【算法】 二维树状数组【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 300#define MAXC 100int N,M,Q,i,j,opt,x,y,xa,ya,xb,yb,c;int a[MAXN+10][MA...
2018-03-31 18:35:18 161
原创 【BZOJ 2818】 GCD
【题目链接】 点击打开链接【算法】 线性筛出不大于N的所有素数,枚举gcd(x,y)(设为p),问题转化为求(x,y)=p的个数 设x=x'p, y=y'p,那么有(x,y)=1且1≤x,y≤N/p 转化为求(x,y)=1且1≤x,y≤n的个数 求(x,y)=1且1≤x,y≤N的个数: 若x...
2018-03-30 19:07:36 201
原创 【NOIP2017Day1T1】 小凯的疑惑
【题目链接】 点击打开链接【算法】 px + qy不能表示的最大整数为 pq - p - q 证明见这篇博客,过程很详细,推荐阅读 : https://blog.csdn.net/qwerty1125/article/details/78661916【代码】 var a,b : int64;begi...
2018-03-28 21:43:50 702
原创 【BZOJ 3884】 上帝与集合的正确用法
【题目链接】 点击打开链接【算法】 通过欧拉拓展定理,列出递推公式 【代码】 #include<bits/stdc++.h>using namespace std;typedef long long ll;ll T,N;map<ll,ll> M;template <typename T>...
2018-03-28 18:39:29 254
原创 【AMPPZ 2014】 The Captain
【题目链接】 点击打开链接【算法】 按x轴排序,将相邻点连边 按y轴排序,将相邻点连边 然后对这个图跑最短路就可以了,笔者用的是dijkstra算法【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 200000st...
2018-03-24 22:24:32 239
原创 【USACO06NOV】路障
【题目链接】 点击打开链接【算法】 最短路【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 5000#define MAXM 100000int i,N,M,shortest,ans;int dista[MAXN+10],distb[MAXN+10]...
2018-03-24 09:57:57 277
原创 【ZJOI 2002】 昂贵的聘礼
【题目链接】 点击打开链接【算法】 最短路,注意不能用dijkstra,要用SPFA【代码】 #include <algorithm>#include <bitset>#include <cctype>#include <cerrno>#include <clocale>...
2018-03-24 09:54:48 170
原创 【Sdoi2008】沙拉公主的困惑
【题目链接】 点击打开链接【算法】 gcd(a,b)=gcd(a mod b, b),又m!|n! 则有ans=(n!/m!)·ϕ(m!) 由ϕ(n)=n(1-1/p1)(1-1/p2)...(1-1/pk) ans=n!(1-1/p1)(1-1/p2)...(1-1/pk) 这里p1......
2018-03-23 22:33:37 210
原创 【SDOI2012】 Longgue的问题
【题目链接】 点击打开链接【算法】 gcd(i,n)是n的约数 不妨设gcd(i,n) = d 考虑枚举d和gcd(i,n) = d有多少个 gcd(i,n) = d gcd(i/d,n/d) = 1 因为i<=n,所以i/d<=n/d ...
2018-03-20 21:30:25 227
原创 【BZOJ 2721】 樱花
【题目链接】 点击打开链接【算法】 令n!=z,因为1 / x + 1 / y = 1 / z,所以x,y>z,不妨令y = z + d 则1 / x + 1 / (z + d) = 1 / z 1 / x = 1 / z - 1 / (z + d) 1 / x = d / (z + d)...
2018-03-19 20:31:05 210
原创 【SDOI2009】SuperGCD
【题目链接】 点击打开链接【算法】 1.关于求最大公约数的算法 若使用辗转相除法,那么显然会超时 不妨这样思考 : 要求gcd(a,b), 若a为偶数,b为偶数,则gcd(a,b) = 2 * gcd(a/2,b/2) 若a为偶数,b为奇数,则gcd(a,b) = gcd...
2018-03-18 20:46:51 369
原创 【NOIP2017 DAY1T2】 时间复杂度
【题目链接】 点击打开链接【算法】 其实这就是一道模拟题啦! 在判error和计算时间复杂度时,我们需要用栈这种数据结构【代码】 这题的代码还是有些难写的,写的时候一定要有条理! #include<bits/stdc++.h>using namespace std;#define MAXL 100...
2018-03-16 19:13:55 372
原创 【Codeforces 947B】 Producting Snow
【题目链接】 点击打开链接【算法】 前缀和 + 堆 【代码】 #include<bits/stdc++.h>using namespace std;typedef long long ll;const ll MAXN = 1e5;ll N,i,ans,sum,tmp;ll v[MAXN+10],t[MAXN+10];...
2018-03-15 21:43:07 279
原创 【Codeforces 947A】 Primal Sport
【题目链接】 点击打开链接【算法】 不难看出,x1的范围是[x2-P(x2)+1,x2],x0的范围是[x1-P(x1)+1,x1] 我们可以先做一遍线性筛,然后暴力就可以了【代码】 #include<bits/stdc++.h>using namespace std;const int MAXN = 1e6;...
2018-03-14 22:17:11 195
原创 【Codeforces 582A】 GCD Table
【题目链接】 点击打开链接【算法】 G中最大的数一定也是a中最大的数。 G中次大的数一定也是a中次大的数。 第三、第四可能是由最大和次大的gcd产生的 那么就不难想到下面的算法: 1. 令p为G中最大的数。在G中删除p,a中加入p。 2 . 对于a中的所有其他数(设为q),在G中...
2018-03-13 20:23:58 411
原创 【Codeforces 632D】 Longest Subsequence
【题目链接】 点击打开链接【算法】 设取的所有数都是k的约数,则这些数的lcm必然不大于k。 对于[1, m]中的每个数,统计a中有多少个数是它的约数即可。【代码】 #include<bits/stdc++.h>using namespace std;typedef long long ll;const ll MAXN = ...
2018-03-11 20:57:08 135
原创 【Codeforces 757B】 Bash's big day
【题目链接】 点击打开链接【算法】 若gcd(s1,s2,s3....sk) > 1, 则说明 : 一定存在一个整数d满足d|s1,d|s2,d|s3....,d|sk 因为我们要使|s|尽可能大,所以d是一个质数 对每个数进行质因数分解即可【代码】 #include<bits/std...
2018-03-11 19:52:03 208
原创 【Codeforces 664A】 Complicated GCD
【题目链接】 点击打开链接【算法】 gcd(a,a+1) = 1 所以当a = b时,答案为a,否则为1【代码】 #include<bits/stdc++.h>using namespace std;string a,b;int main() { cin >> a >> ...
2018-03-11 19:24:19 232
原创 【Codeforces 776B】Sherlock and his girlfriend
【题目链接】 点击打开链接【算法】 将所有质数染成1,合数染成2即可【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 100000int i,N,x;bool b1,b2;int b[MAXN+10];template <typename T&...
2018-03-11 19:13:12 246
原创 【Codeforces 762A】 k-th divisor
【题目链接】 点击打开链接【算法】 我们知道,一个数的因子是成对出现的,一半小于等于sqrt(N),一半大于sqrt(N),因此,我们可以从 2..sqrt(N)枚举因子【代码】 #include<bits/stdc++.h>using namespace std;#define MAX 3000000typ...
2018-03-11 18:32:06 254
原创 【NOI 2005】 维修数列
【题目链接】 点击打开链接【算法】 本题所运用的也是Splay的区间操作,但是实现较为困难 INSERT操作 将pos splay至根节点,pos+1 splay至根节点的右节点,然后对根节点的右节点的左节点建树即可 DELETE操作 将l-1 splay至根节点, r+...
2018-03-09 22:14:22 256
原创 【POJ 3580】 SuperMemo
【题目链接】 点击打开链接【算法】 本题也是Splay区间操作的模板题,不过要比BZOJ 3223要稍微复杂一些,做完此题后,我终于对Splay有了更深入的理解,有“拨开云雾见青天”的感觉 本题还是有许多细节的,笔者花了5h才通过了此题【代码】 #include <algorithm>#include &l...
2018-03-04 20:35:50 446 1
原创 【JSOI 2014】序列维护
【题目链接】 点击打开链接【算法】 线段树 注意标记下传【代码】 #include<bits/stdc++.h>using namespace std;#define MAXN 500000typedef long long LL;struct SegTreeNode { LL l,r,sum,l...
2018-03-03 18:47:29 184
原创 【JSOI 2007】建筑抢修
【题目链接】 点击打开链接【算法】 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可以用一个大根堆来维护T1的最大值 这题用的其实就是贪心的思想 : 从局部最优到全局最优【代码】 #incl...
2018-03-03 14:20:14 202
原创 【BZOJ 3223】 文艺平衡树
【题目链接】 点击打开链接【算法】 本题是splay区间操作的模板题 我们每个点的权值设为”当前在序列中的排名“,根据二叉排序树的性质,这棵树的中序遍历就是当前序列 如果我们要获得一段区间[l,r],那么我们将l-1splay到根节点,将r+1splay到根节点的右子树的根,我们发现,根节点 的右节点的左子树就是区间...
2018-03-03 10:49:38 221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人