摘要:
题目链接:hdu 3487 Play with Chain 题意: cut a b c: 将a到b区间剪切下来,放在第c位置的后面。 flip a b: 翻转a到b区间 题解: 第一个操作,选通过旋转,然后使a到b区间变成根的右儿子的左儿子,然后剪掉。 再找到c+1的位置,接上。 第二个操作,区间标 阅读全文
摘要:
题目链接:hdu 3436 Queue-jumpers 题意: TOP是将某个人移至队首 QUERY是某个人的位置 RANK就是找出第K位是多少 题解;splay来维护。 先离散化,然后记录每个区间的信息,然后用splay维护一下。 top:先删除再插到队首。 query:找到树中对应的节点,然后旋 阅读全文
摘要:
题目链接:hdu 3726 Graph and Queries 题意: 最开始给你n个点,每个点最开始有一个权值,并且都是独立的,现在给你m条边,表示对应的两个点是连接的。 现在有三种操作: Q x k,表示询问与x这个点联通的所有点中第k大的权值。 D x,表示删除第x条边。 C x y,表示改变 阅读全文
摘要:
题目链接:hdu 1890 Robotic Sort 题意: 给你n个数,每次找到第i小的数的位置,然后输出这个位置,然后将这个位置前面的数翻转一下,然后删除这个数,这样执行n次。 题解: 典型的splay区间翻转+删点。 我们把数据排序,然后记录一下每个数原来的位置,然后splay建树的时候用原来 阅读全文
摘要:
题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑逆向思维: 我们先用线性筛 筛出前50000的素数,在int范围内的区间的合数的因子都在我们之前筛出 阅读全文
摘要:
题目链接:hdu 1299 Diophantus of Alexandria 题意: 给你一个n,让你找1/x+1/y=1/n的方案数。 题解: 对于这种数学题,一般都变变形,找找规律,通过打表我们可以发现这个答案只与这个数的因子有关。 n=a1^p1*a2^p2*...*an^pn ans=((1 阅读全文
摘要:
题目链接:hdu 4342 History repeat itself 题意: 让你找第a个非完全平方数m,并且求前m个数的开方向下取整的和。 题解: 第一个问题: 假设第a个非平方数是X,X前面有n个平方数,则n*n<X<(n+1)*(n+1); n*n前面的非平方数的个数是n*n-n; 首先先根 阅读全文
摘要:
题目链接:hdu 2824 The Euler function 题意: 让你求一段区间的欧拉函数值。 题解: 直接上板子。 推导过程: 定义:对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目。 例如:φ(8)=4,因为1,3,5,7均和8互质。 性质:1.若p是质数,φ(p)= 阅读全文
摘要:
题目链接:hdu 2588 GCD 题意:给定N,M(2<=N<=1000000000, 1<=M<=N), 求1<=X<=N 且gcd(X,N)>=M的个数。 解法:先找出N的约数x,并且gcd(x,N)>= M,结果为所有N/x的欧拉函数之和。 因为x是N的约数,所以gcd(x,N)=x >= 阅读全文
摘要:
题目链接:hdu 3842 Machine Works 详细题解: HDU 3842 Machine Works cdq分治 斜率优化 细节比较多,好好体会一下。 在维护斜率的时候要考虑x1与x2是否相等,这里要处理一下。 1 #include<bits/stdc++.h> 2 #define F( 阅读全文