- 博客(29)
- 收藏
- 关注
原创 hdu 5451 Best Solver(快速幂找循环节)
题目思路:因为(5-sqrt(24))和(5+sqrt(24))是共轭复数,所以(5-sqrt(24))^n+(5+sqrt(24))^n一定是整数,然后因为(5-sqrt(24))<1,所以这个求出来的就是(5+sqrt(24))^n的向上取整的值,向下取整只需这个求出来减一即可,我们用cn表示(5-sqrt(24))^n+(5+sqrt(24))^n,cn*((5-sqrt(24))...
2018-07-31 20:19:10 126
原创 hdu 5459 Jesus Is Here (递推)
题目思路: 我们用len表示整个字符长度,num表示c的个数,sum表示c各个位置之和,ans来记录答案,我们可以发现len和num都符合斐波那契,sum的话就等于前两个加起来之和再加上前两个的长度乘以前一个的c的个数,表示为sum[i]=sum[i-1]+sum[i-2]+len[i-2]*num[i-1];每次是由前面两个字符串组成那么ans是为前两个之和,因为要算的是每个c之间的距离,...
2018-07-31 20:02:59 124
原创 牛客练习赛23 F 托米的游戏 (爆搜+逆元)
题目思路:其实轮数的期望就是每个点被选中的期望,我们可以发现我们选这个点要在他到根的路径上的点集中第一次选中(不然他 就被砍掉了),就是直接求他的深度即可。期望就是1/dep[i]之和。代码#include<bits/stdc++.h>using namespace std;const int N=1e5+10;const int mod=998244353;vec...
2018-07-30 10:41:23 265 1
原创 hdu 3487 Play with Chain (区间翻转+区间切割)
题目题意:开始有一个1-n的序列,进行m次操作,cut a b c将区间[a,b]取出得到新序列,将区间插入到新序列第c个元素之后。filp a b 将区间a,b翻转,输出最终的序列。思路:现将a-b这个区间取出来,然后再来将c这个位置断开,然后合并左边的和区间[a,b],将最大的旋转至根,然后和右边的合并.代码:#include<bits/stdc++.h>usin...
2018-07-29 12:55:18 153
原创 hdu 1890 Robotic Sort (splay树 翻转 +删点)
题目题意:n个数排成一列,每次选择序列中的最小值(如有多个,取原始位置最小的),把它和它前面的所有数翻转,然后把这个数从序列中删去。输出每次选择的最小值的下标。 思路:用数组原下标建树,然后排序,将小的排在前面,只要按照顺序将这数的下标翻转到根节点,他的左子树加上自己就是他要的答案,然后删点。代码:#include<bits/stdc++.h>using namesp...
2018-07-28 22:22:16 123
原创 bzoj 3233 文艺平衡树 (splay 区间翻转)
题目思路:splay区间翻转的模板代码:#include<bits/stdc++.h>using namespace std;const int MAXN=1e5+10;const int inf=0x3f3f3f3f;int size[MAXN],key[MAXN],f[MAXN],ch[MAXN][2],lazy[MAXN];int a[MAXN];in...
2018-07-27 23:26:49 122
原创 2018牛客多校第三场 C Shuffle Cards (Splay)
题目题意:将从p开始的s个数放在开头,经过若干个操作后,序列是怎样的思路:Splay的模板题,我们首先要知道,可以通过三次区间翻转来达到区间交换的效果,例如1 2 3 4 5,我们要将4 5移到开头,首先1-5区间翻转变为5 4 3 2 1,然后将1-2区间翻转为4 5,3-5区间翻转1 2 3,这样就达到了区间交换的效果代码#include<bits/stdc++.h>...
2018-07-27 23:23:10 208
原创 bzoj 3224 普通平衡树 (Splay)
题目思路:Splay模板题代码:#include<bits/stdc++.h>using namespace std;#define MAXN 1000000//f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,//key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于权值),...
2018-07-27 17:49:25 128
原创 2018牛客多校第三场 E Sort String (最小循环节)
题目思路:模拟几个字符串就会发现规律,跟最小循环节有关。只要用Next数组找到最小循环节就可以了。代码:#include<stdio.h>#include<string.h>using namespace std;const int N=1e6+10;char c[N];int Next[N];void init(int n){ int i...
2018-07-27 11:05:54 186
原创 最小循环子串
定理:假设S的长度为len,则S存在最小循环节,循环节的长度L为len-next[len],子串为S[0…len-next[len]-1]。 (1)如果len可以被len - next[len]整除,则表明字符串S可以完全由循环节循环组成,循环周期T=len/L。 (2)如果不能,说明还需要再添加几个字母才能补全。需要补的个数是循环个数L-len%L=L-(len-L)%L=L-next[le...
2018-07-27 10:47:25 6582
原创 hdu 6315 Naive Operations (线段树)
Naive Operations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 502768/502768 K (Java/Others) Total Submission(s): 1205 Accepted Submission(s): 500 Problem Description In a...
2018-07-26 10:52:45 190
原创 牛客小白月赛 5 水题
题目:https://www.nowcoder.com/acm/contest/135/C思路: 把m分解质因数,并存下每个质因数有几个。再看x!里有多少个这些质因数。取最小的倍数就是了。#include<bits/stdc++.h>using namespace std;#define ll long longconst ll inf=1e18;ll f[111...
2018-07-24 23:51:07 212
原创 牛客小白月赛5 A 无关 (容斥)
题目:https://www.nowcoder.com/acm/contest/135/A思路:先找出含有这些质数因子的数的个数,然后再减去。记住:会爆因子乘积long long 代码:#include<bits/stdc++.h>using namespace std;#define ll long longll a[100];int main(){ ...
2018-07-24 23:48:32 218
原创 2018 牛客多校第二场 J farm (随机+二维前缀处理)(二进制)
题目链接:https://www.nowcoder.com/acm/contest/140/J题意:给你N*M个矩阵,每个格子里有种类为k的花。给你t次操作,每次在一个子矩阵里施肥,如果种类为k的肥料被施到不同种类的花上,花就死掉。最后问你死了多少花。思路:我们把施肥在同一个矩阵里的种类的肥料加起来,整除以花的种类,如果能整除,说明有可能不会死,但是大多数情况还是错的,如k=5的话...
2018-07-24 23:43:52 306
原创 2018牛客多校第二场 G transform(二分)
题目链接:https://www.nowcoder.com/acm/contest/140/G 这位博主的博客写的很详细 #include<bits/stdc++.h>using namespace std;#define ll long longconst int N=1e6+10;struct node{ ll x,w;}a[N];using...
2018-07-24 23:27:05 245
原创 2018 牛客多校第一场 D
题目题意:给你一个小图,一个大图。问你在大图中能找到多少个形状和小图一样的。思路:因为n为8,我们可以暴力找,全排列把所有情况找到,再把可行的状态用二进制表示,用map映射防止重复代码:#include<bits/stdc++.h>using namespace std;#define ll long longint mp1[11][11];int m...
2018-07-22 23:03:26 222
原创 2018 牛客多校第一场 J(线段树)
题目题意:给你n个数字,给你查询l,r,让你得出1-l 加上r-n里不同的数有几个。思路:直接把1-n的数字再重新连接到1-n后面,这样你只要求解[r,l+n]的区间不同个数,但是如果l比r大的话,就是求整个区间。预处理完后,再用线段树操作。代码:#include<iostream>#include<algorithm>#include<cstr...
2018-07-22 18:46:21 211
原创 2018 牛客多校第一场A(不知名定理)
题目题意:一个矩阵由012三个数字组成,这个矩阵从左到右,从上到下,都是不递减的。思路:考虑 01 和 12 的分界线是 (n, 0) 到 (0, m) 的两条不相交(可重合)路径平移其中一条变成 (n-1, -1) 到 (-1, m-1)变成起点 (n, 0) 和 (n-1, -1),终点 (0, m) 和 (-1, m-1) 的严格不相交路径 套 Lindström–Ges...
2018-07-22 18:42:20 367
原创 2018牛客多校第一场E Removal(dp)
题目链接题意:给你n个数,删除m个数之后有多少种不同的序列思路:根据官方的题解,枚举要加的数的种类。记下Next[i][k] 代表i这个位置之后最近的k这个数。而i-Next[i][k]之间的数就是要删的,最后还需要再扫一遍末尾几个数是否要删的情况。代码:#include<bits/stdc++.h>using namespace std;#define ll...
2018-07-22 18:37:06 294
原创 zoj 4041 Chasing (三分)
题目题意:给你A和B的坐标,x都小于0,A要跑到x大于0的范围,B追赶A,问是否能追上。思路:枚举A在y轴上逃离的点,看距离之比和速度之比的大小。但是实数点不好枚举,我们可以发现仅限B在A点左边的情况:B和A的距离之比是个先增后减的式子。符合三分。代码:#include <iostream>#include<stdio.h>#include<cm...
2018-07-18 16:45:56 247
原创 hdu 5700 区间交 (线段树或优先队列)
区间交Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1423 Accepted Submission(s): 543 Problem Description小A有一个含有n个非负整数的数列与m个区间。每个区间可以表示...
2018-07-18 14:10:52 164
原创 hdu 2665 Kth number(主席树)
Kth numberTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15329 Accepted Submission(s): 4600 Problem DescriptionGive you a sequence ...
2018-07-17 14:13:58 88
原创 hdu 1542 Atlantis(线段树+扫描线)
AtlantisTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17371 Accepted Submission(s): 7056 Problem DescriptionThere are several ancie...
2018-07-17 14:08:58 178
原创 hdu 3450 Counting Sequences (线段树+二分)
Counting SequencesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others)Total Submission(s): 2849 Accepted Submission(s): 996Problem DescriptionFor a set of sequences o...
2018-07-16 15:06:40 144
原创 hdu 3333 Turing Tree
Turing TreeTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6361 Accepted Submission(s): 2275Problem DescriptionAfter inventing Turing Tree, 3...
2018-07-16 13:18:45 113
原创 poj 2429 GCD & LCM Inverse(Pollard_rho整数分解+dfs枚举)
题目链接:http://poj.org/problem?id=2429题意:给你两个数a和b的最大公约数和最小公倍数,求a和b,使得a+b的和尽量小思路:因为a*b/gcd=lcm,所以a/gcd*b/gcd=lcm/gcd,令p为a/gcd,q为b/gcd,所以p,q互质,所以只要把lcm/gcd分解为两个互质的数即可,分解后再用dfs枚举,a+b>=2ab,所以a越和b接近,a+b越小。...
2018-07-14 14:50:12 165
原创 poj 1811 Prime Test(大素数判断+素因子判断)
题目链接:http://poj.org/problem?id=1811题意:判断一个数是否为素数,如果不是则找到它最小的素数因子。思路:因为n很大,不好打表处理,用miller_rabin判断n是否为素数,再用Pollard_rho算法找素数因子。代码:#include <iostream>#include <stdio.h>#include <string.h&...
2018-07-13 13:21:36 229
原创 zoj 2562 More Divisors(反素数)
More DivisorsTime Limit: 2 Seconds Memory Limit: 65536 KBEverybody knows that we use decimal notation, i.e. the base of our notation is 10. Historians say that it is so because men have ten finge...
2018-07-13 11:07:00 209
原创 poj 2191Mersenne Composite Numbers(大整数因式分解+素数判断)
Mersenne Composite NumbersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 2442 Accepted: 1139DescriptionOne of the world-wide cooperative computing tasks is the "Grand Internet Mersenne Prim...
2018-07-11 11:34:30 316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人