
SPOJ
v5zsq
新的一天,新的不会
展开
-
SPOJ 220 Relevant Phrases of Annihilation(后缀数组+二分)
Description 给定n个字符串,求在每个字符串中至少出现两次且不重叠的最长子串的长度 Input 第一行为一整数T(T<=10)表示用例组数,每组用例第一行为一整数n(n<=10)表示串的数量,之后n行每行为一个长度不超过10000字符串 Output 输出在每个字符串中至少出现两次且不重叠的最长子串的长度 Sample Input 1 4 abbabba dabddka原创 2016-05-03 14:17:57 · 578 阅读 · 0 评论 -
SPOJ 24772 DWARFLOG - Manipulate Dwarfs(线段树)
Description n个数,第i个数是i,m种操作,操作分两种 1 x y:交换x和y两个数 2 A B:查询A A+1 … B-1 B这些数是不是在序列中占据连续的一段 Input 第一行两个整数n和m分别表示序列长度和操作数,之后m行每行一个操作(2<=n<=2e5,2<=m<=2e5,x!=y,A<=B) Output 对于每次查询,如果A A+1 … B-1 B占据序列的连原创 2017-07-15 17:22:51 · 346 阅读 · 0 评论 -
SPOJ 23336 TRNGL - Make Triangle(dp)
Description 给出一个n个顶点的凸多边形,问三角剖分数量 Input 第一行一整数T表示用例组数,每组用例输入一个整数n表示该凸多边形的点数(1<=T<=100000,3<=n<=1000) Output 对于每组用例输出该凸多边形的三角剖分数量 Sample Input 2 3 5 Sample Output 1 5 Solution 固定一条边,枚举一个点与原创 2017-07-15 17:23:23 · 418 阅读 · 0 评论 -
SPOJ 8073 CIRU - The area of the union of circles(圆面积并)
Description 给出n个圆的圆心坐标和半径,求这n个圆的面积并 Input 第一行一整数n表示圆的个数,之后n行每行三个整数x[i],y[i],r[i]表示第i个圆的圆心坐标和半径(1<=n<=1000,|x[i]|,|y[i]|,r[i]<=1000) Output 输出这n个圆的面积并,结果保留小数点后三位 Sample Input 3 0 0 1 0 0 1 100原创 2017-07-20 10:48:41 · 723 阅读 · 0 评论 -
SPOJ 25000 BOKAM143SOU - Checking cubes(dp)
Description 给出一个正整数n,问把n拆成至多五个立方数的和的方案数 Input 一个整数n(1<=n<=125000) Output 输出把n拆成至多五个立方数的和的方案数 Sample Input 64 Sample Output 2 Solution dp[i][j]表示把i拆成j个立方数的方案数,则有转移方程dp[i+k*k*k*][j]+=dp[i][j-1原创 2017-07-17 09:11:52 · 394 阅读 · 0 评论 -
SPOJ 25334 NPC2015A - Eefun Guessing Words(水~)
Description 给出一个字符串s和n次查询,每次查询给出两个字符X和Y,问s中是否有以X开头以Y结尾的长度至少为2的子串 Input 第一行一字符串s,然后输入一整数n表示查询次数,最后n行每行两个字符X和Y(s和X,Y均为大写字母,|s|,n<=1e6) Output 对于每次查询,如果s中有以X开头以Y结尾的长度至少为2的子串则输出“YA”,否则输出“TIDAK” Sampl原创 2017-07-18 10:45:27 · 516 阅读 · 0 评论 -
SPOJ 25780 VISIBLEBOX - Decreasing Number of Visible Box(贪心)
Description 有n个盒子,一个小盒子可以放在一个大盒子里当且仅当大盒子是空的且大盒子的体积至少是小盒子的两倍,现在给出n个盒子的体积,问怎么放可以使得外面露出来的盒子数最少 Input 第一行一整数T表示用例组数,每组用例输入一整数n表示盒子数,之后输入n个整数a[i]表示第i个盒子的题解(1<=T<=50,1<=n<=1e5,1<=a[i]<=1e5) Output 输出最少的原创 2017-07-18 11:02:31 · 473 阅读 · 0 评论 -
SPOJ 25773 BITDIFF - Bit Difference(水~)
Description 给出n个整数a[i],定义两个整数的位差为两个数的二进制表示中对应位不相同的数量,求n个数中任意两个数的位差之和 Input 第一行一整数T表示用例组数,每组用例输入一整数n,之后输入n个整数a[i] (1<=T<=100,1<=n<=10000) Output 输出n个数中任意两个数的位差之和,结果模10000007 Sample Input 1 4 3原创 2017-07-18 11:16:33 · 456 阅读 · 0 评论 -
SPOJ 28286 BLMIRINA - Archery Training(计算几何)
Description 给出一个圆的圆心(x,y)和半径r,从原点向该圆上一点连一条线段(线段与圆只能有一个交点),问连向哪一个点可以使得这条线段的长度最长 Input 第一行一整数T表示用例组数,每组用例输入三个整数x,y,r分别表示圆心的横纵坐标和半径(1<=T<=1e5,1<=r<=x,y<=1000) Output 对于每组用例,输出满足条件的点的横纵坐标,如果有多种方案则输出其中原创 2017-07-18 13:32:09 · 584 阅读 · 0 评论 -
SPOJ 28270 BIPCSMR16 - Team Building(水~)
Description 一年级X人,二年级Y人,三年级Z人,一个队伍要三个人,但这三个人不能全部是同一年级,问这些人最多可以组成几个队 Input 第一行一整数T表示用例组数,每组用例输入三个整数X,Y,Z (1<=T<=1e4,1<=X,Y,Z<=2e9) Output 对于每组用例,输出最多可以组的队伍数 Sample Input 2 1 2 3 1 12 3 Sample原创 2017-07-18 13:46:55 · 453 阅读 · 0 评论 -
SPOJ 26777 ANTP - Mr. Ant & His Problem(组合数学)
Description 往三个盒子里放球,每个盒子里至少有一个球,三个盒子中球总数介于X和Y之间,求方案数 Input 第一行一整数T表示用例组数,每组用例输入两个整数X和Y表示球总数上下限(1<=T<=1e6,1<=X<=Y<=1e6) Output 输出方案数,结果模1e9+7 Sample Input 1 4 5 Sample Output 9 Solution 考虑a原创 2017-07-18 13:56:57 · 615 阅读 · 0 评论 -
SPOJ 27000 BGSHOOT - Shoot and kill(ST)
Description 给出n个猎物的出没时间,Q次查询,每次查询一个时间段[L,R]内可以捕到的猎物数量最大值 Input 第一行一整数n表示猎物数量,之后n行每行两个整数l[i],r[i]表示该猎物的出没时间,然后输入一个整数q表示查询数,每次查询输入一个区间L,R表示查询时间段[L,R]内可以捕到的猎物数最大值(1<=n,q<=1e5,1<=l[i],r[i],L,R<=1e9) Ou原创 2017-07-18 14:05:00 · 619 阅读 · 0 评论 -
SPOJ 5161 FACVSPOW - Factorial vs Power(数论+二分)
Description f(n)=n!,g(n)=a^n,求最小的n使得f(n) > g(n) Input 第一行一整数T表示用例组数,每组用例输入一整数a(1<=T<=1e4,2<=a<=1e6) Output 对于每组用例,输出最小的n使得f(n) > g(n) Sample Input 3 2 3 4 Sample Output 4 7 9 Solution 二原创 2017-07-19 09:02:08 · 518 阅读 · 0 评论 -
SPOJ 3107 ODDDIV - Odd Numbers of Divisors(数论)
Description 给出一奇数k,问[L,R]中有多少数其因子数为k Input 第一行一整数T表示用例组数,每组用例输入三个整数k,L,R(0 < T < 1e5, 1 < k <10000, 0 < L<=R < 1e10) Output 对于每组用例,输出[L,R]中因子数为k的数的个数 Sample Input 3 3 2 49...原创 2017-07-19 09:02:52 · 492 阅读 · 0 评论 -
SPOJ 287 NETADMIN - Smart Network Administrator(二分+最大流-Dinic)
Description 有n户人家,m条街道,只有第一家有网,现在有k户人家想连网就要从第一家拉网线经过若干条街道过来,每根网线都有颜色,要求一条街道上的网线颜色互不相同,问网线颜色数最少为多少 Input 第一行一整数T表示用例组数,每组用例输入三个整数n,m,k分别表示居民户数,街道数和需要用网的居民数,之后输入k个整数表示需要用网的居民编号,最后输入m行每行两个整数u和v表示u居民和v居原创 2017-07-20 09:16:15 · 602 阅读 · 0 评论 -
SPOJ 27268 VECTAR5 - Count Subsets(组合数学)
Description 给出一个集合S={1,2,…,n},问从S中选取两个子集A,B使得A不是B的子集,B也不是A的子集 Input 第一行一整数T表示用例组数,每组用例输入一整数n表示一个集合S={1,2,…,n}(1<=T<=1e5,1<=n<=1e6) Output 输出方案数,结果模1e9+7 Sample Input 2 4 8 Sample Output 110原创 2017-07-26 23:00:54 · 453 阅读 · 0 评论 -
SPOJ 21174 DIVCNT3 - Counting Divisors (cube)(min_25筛)
Description给出nnn,求S(n)=∑i=1nσ0(i3)S(n)=∑i=1nσ0(i3)S(n)=\sum\limits_{i=1}^n\sigma_0(i^3),其中σ0(x)σ0(x)\sigma_0(x)表示xxx的因子数Input第一行一整数TTT表示用例组数,每组用例输入一整数n(1≤T≤104,1≤n≤1011)n(1≤T≤104,1≤n≤1011)n(1\le...原创 2018-09-10 12:48:13 · 429 阅读 · 0 评论 -
SPOJ 34096 DIVCNTK - Counting Divisors (general)(min_25筛)
Description给出n,kn,kn,k,求S(n)=∑i=1nσ0(ik)S(n)=∑i=1nσ0(ik)S(n)=\sum\limits_{i=1}^n\sigma_0(i^k),其中σ0(x)σ0(x)\sigma_0(x)表示xxx的因子数Input第一行一整数TTT表示用例组数,每组用例输入两个整数n,k(1≤T≤104,1≤n,k≤1010)n,k(1≤T≤104,1≤...原创 2018-09-11 08:32:19 · 402 阅读 · 0 评论 -
SPOJ 24258 DRUIDEOI - Fata7y Ya Warda!(单调栈)
Description 编号为1~n的n个人站成一圈,给出每个人的身高,对于每个人,找到其左边和右边第一个身高高于其身高的人的编号,如果没有人身高比这个人高则输出-1 -1 Input 第一行一整数T表示用例组数,每组用例首先输入一整数n表示人数,之后输出每个人的身高a[i] (1<=T<=20,1<=n<=1e5,1<=a[i]<=1e9) Output 输出n行,第i行输出第i个人左边原创 2017-07-13 10:46:45 · 466 阅读 · 0 评论 -
SPOJ 19996 MOON1 - Moon Safari (medium)(dp+矩阵快速幂)
Description Input 第一行一整数T表示用例组数,每组用例输入三个整数n,a,r 1 < T 1 < r 1 < N < 10^9 1 < a < 10^9 (T < 1000 and r < 18 ) or (T < 100 and r < 72) or (T < 10 and r < 256) or (T = 1 and r < 444) Output 对于每原创 2017-04-16 13:31:34 · 792 阅读 · 0 评论 -
SPOJ 694 Distinct Substrings(后缀数组)
Description 给出一个字符串,求这个串不同的子串个数 Input 第一行为一整数T(T<=20)表示用例组数,每组用例占一行为一个长度不超过1000的字符串 Output 对于每组用例,输出这个串的不同子串个数 Sample Input 2 CCCCC ABABA Sample Output 5 9 Solution 不同子串数量=n*(n+1)-sum(hei原创 2016-05-03 14:38:57 · 431 阅读 · 0 评论 -
SPOJ 4491 PGCD - Primes in GCD Table(莫比乌斯反演)
Description 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 Input 第一行一个整数T 表述数据组数接下来T行,每行两个正整数,表示N, M (T<=10000,N,M<=10000000) Output T行,每行一个整数表示第i组数据的结果 Sample Input 2 10 10 100 100原创 2016-08-03 12:36:58 · 538 阅读 · 0 评论 -
SPOJ 7001 VLATTICE - Visible Lattice Points(莫比乌斯反演)
Description 求经过坐标(0,0,0)和另外任意一个点(x1,y1,z1)的不同的直线有多少条(0<=x1,y1,z1<=n) Input 第一行为一整数T表示用例组数,每组用例占一行为一整数n(T<=50,1<=n<=1000000) Output 对于每组用例,输出经过坐标(0,0,0)和另外任意一个点(x1,y1,z1)的不同的直线有多少条 Sample Inpu原创 2016-08-03 12:49:40 · 451 阅读 · 0 评论 -
SPOJ 25158 STARSBC - Star(欧拉函数)
Description 一个圆环上均匀分布n个点,对于一个k(1<=k<=n),从一个点出发连边到之后第k个点,定义一个星星是所有点都被跳到时连成的图,问有多少种不同的星星(旋转同构的星星视为同一种) Input 多组用例,每组用例输入一整数n(3<=n < 2^31) Output 对于每组用例,输出不同的星星数量 Sample Input 3 4 5 18 36 360原创 2017-04-10 08:49:07 · 457 阅读 · 0 评论 -
SPOJ 25179 KAOS - Kaos(逆序对-BIT)
Description 给出n个字符串s[1]~s[n],找合法的(i,j)对满足s[i]的字典序比s[j]小而s[j]的反串的字典序比s[i]的反串的字典序小 Input 第一行一整数n表示串的数量,之后n个串长不超过10的串(2<=n<-=1e5) Output 输出一整数表示合法的(i,j)对数量 Sample Input 4 lova novac aron sunce原创 2017-04-10 09:04:09 · 432 阅读 · 0 评论 -
SPOJ 20863 MINSUB - Largest Submatrix(二分+单调栈)
Description 给出一个n*m的矩形和一整数k,问这个矩阵的所有面积不小于k的子矩阵中最小值的最大值ans,和所有最小值等于ans的面积不小于k的子矩阵的最大面积S Input 第一行一整数T表示用例组数,每组用例输入三个整数n,m,k分别表示矩阵规模和要求的子矩阵面积下限,之后一个n*m矩阵a[i][j] (T<=10,n,m<=1000,k<=n*m,a[i][j]<=1e9)原创 2017-04-10 14:45:17 · 590 阅读 · 0 评论 -
SPOJ 20654 INTSUB - Interesting Subset(水~)
Description 给出集合X={1,2,…,2n},问X有多少个子集满足该子集中有一个数b可以整除该子集的最小值a(b>a) Input 第一行一整数T表示用例组数,每组用例输入一整数n(1<=T<=30,1<=n<=1000) Output 对于每组用例,输出合法子集数,结果模1e9+7 Sample Input 3 1 2 3 Sample Output Case原创 2017-04-10 15:01:56 · 379 阅读 · 0 评论 -
SPOJ 15433 UCV2013E - Greedy Walking(组合数学)
Description 在n维空间,每次只能把一维加1,起点(a[1],…,a[n]),终点(b[1],…,b[n]),问方案数 Input 多组用例,每组用例输入一整数n表示空间维数,之后输入两个n维向量分别表示起点和终点(1<=n<=50,1<=a[i]<=b[i]<=500,sum(b[i]-a[i])<=500) Output 输出从起点走到终点的方案数,结果模1e9+7 Sam原创 2017-04-10 15:30:59 · 554 阅读 · 0 评论 -
SPOJ 18249 IITWPC4F - Gopu and the Grid Problem(线段树)
Description xOy平面上每个点(x,y)都是一个开关(0<=x,y<=100000),初始状态都是关闭状态,三种操作: x l r:把横坐标介于[l,r]之间的所有开关状态取反 y l r:把纵坐标介于[l,r]之间的所有开关状态取反 q x y X Y:查询横坐标介于[x,X]之间且纵坐标介于[y,Y]之间的开关中状态时打开状态的开关数量 Input 第一行一整数Q表示操作原创 2017-04-10 15:55:15 · 367 阅读 · 0 评论 -
SPOJ 17125 TBATTLE - Thor vs Frost Giants(数论+尺取)
Description 给出一个长度为n的序列a[0],a[1],…,a[n-1],求最短子段使得该序列的乘积可以被n整除 Input 第一行一整数n,之后n个整数a[0],a[1],…,a[n-1]表示该序列(1<=n,a[i]<=1e5) Output 输出最短子段的起始位置和终止位置 Sample Input 3 1 2 9 Sample Output 2 2 Solut原创 2017-04-10 16:03:42 · 402 阅读 · 0 评论 -
SPOJ 15569 STC02 - Antisymmetry(Manacher)
Description 给出一个长度为n的01串,问其有多少子串满足反串等于该串按位取反后的串 Input 第一行一整数n表示串长,之后一个长度为n的01串(1<=n<=5e5) Output 输出满足条件的子串数 Sample Input 8 11001011 Sample Output 7 Solution 满足条件的子串必为偶数长度且从中心开始往两边是一个0一个1,用M原创 2017-04-10 16:17:52 · 438 阅读 · 0 评论 -
SPOJ 17128 PUTNIK - Putnik(dp)
Description n个城市,第i个城市到第j个城市距离为a[i][j],先要指定一个旅游计划把这n个城市每个都旅游一遍,限制是如果要去第k个城市,那么所有编号小于k的城市要么已经旅游完了,要么都还没去,问路线总距离最小值 Input 第一行一整数n表示城市数量,之后一个n*n对称矩阵表示城市之间的距离矩阵,保证对角线是0(2<=n<=1500,0<=a[i][j]<=1000) Out原创 2017-04-10 16:38:35 · 327 阅读 · 0 评论 -
SPOJ 2829 TLE - Time Limit Exceeded(状压DP)
Description 给出两整数n和m,要求构造一个长度为n的序列a[1],..,a[n],使得 1.0<=a[i] < 2^m 2.a[i]%c[i]!=0 3.a[i]&a[i+1]=0 问合法序列数量 Input 第一行两整数n和m,之后一个长度为n的序列c[i](1<=n<=50,1<=m<=15,0 < c[i]<=2^m) Output 输出合法序列数量,结果模1e9原创 2017-04-10 16:57:38 · 646 阅读 · 0 评论 -
SPOJ 19148 INS14G - Kill them All(组合数学)
Description n只怪兽,每次可以D杀或者S杀,问在保证每次杀完一只怪兽后D杀的怪兽数量都比S多的情况下杀怪的方案数 Input 第一行一整数T表示用例组数,每组用例输入一整数n表示怪兽数量(1<=T<=1e5,1<=n<=1e6) Output 对于每组用例,输出合法方案数,结果模1e9+7 Sample Input 2 1 3 Sample Output 1原创 2017-04-11 08:53:33 · 596 阅读 · 0 评论 -
SPOJ 18469 UOFTCG - Office Mates(贪心+dfs)
Description 先在要个n个人安排座位,要求是一个人两边不能有不认识的人,两个不认识的人之间必须用一个空座隔开,问最少需要多少座位好 Input 第一行一整数T表示用例组数,每组用例首先输入两整数n和m表示人数和关系数,之后m行每行两个整数u和v表示u和v认识,保证任意k个人之间最多有k-1对人认识(T<=50,n<=1e6) Output 输出一整数表示最少需要的座位数量 Sa原创 2017-04-11 09:09:52 · 559 阅读 · 0 评论 -
SPOJ 20848 IGAME - Interesting Game(博弈论+数位DP)
Description 两个人玩游戏,初始给一个整数n,两人轮流操作,每次可以选择n的一位在保证该位非负的情况下减去任意值,谁先把n减到0谁赢,问在双方足够机智的情况下[A,B]中有多少值作为初始值可以使得先手必胜,有多少值作为初始值可以使后手必胜 Input 第一行一整数T表示用例组数,每组用例输入两整数A和B表示查询区间(1<=T<=1e4,1=A<=B<=1e18) Output S原创 2017-04-11 19:06:37 · 406 阅读 · 0 评论 -
SPOJ 21083 LEXSTR - Lexicographically Smallest(并查集)
Description 给出一个字符串和若干可以随意互换的位置对,求经过适当互换能得到的字典序最小的串 Input 第一行一整数T表示用例组数,每组用例首先输入一个串长不超过1e5的字符串,之后输入一整数m表示可以互换的位置对数量,之后m行每行输入两个整数x和y表示x位置和y位置的字符可以随意换(1<=T<=10,1<=m<=1e5) Output 输出最小字典序的字符串 Sample原创 2017-04-12 16:28:36 · 691 阅读 · 0 评论 -
SPOJ 20173 DIVCNT2 - Counting Divisors (square)(数论+莫比乌斯反演)
Description给出一整数nnn,求S(n)=∑i=1nσ0(i2)S(n)=∑i=1nσ0(i2)S(n)=\sum\limits_{i=1}^n\sigma_0(i^2),其中σ0(x)σ0(x)\sigma_0(x)为xxx的因子数Input第一行一整数TTT表示用例组数,每组用例输入一整数n(1≤T≤104,1≤n≤1012)n(1≤T≤104,1≤n≤1012)n(1\...原创 2018-09-11 08:57:22 · 380 阅读 · 0 评论