
题库-Codeforces
YxuanwKeith
这个作者很懒,什么都没留下…
展开
-
CF 316G3 Good Substring SAM上的简单计数
题目大意给你一个长度为NN的字符串SS和MM个限制。每个限制为(t,l,r)(t,l,r),表示限制字符串ss在tt中的出现次数为ll到rr。问SS中有多少不同的子串符合这MM条限制。N,Lenti≤500000N , Len_{t_i}\leq 500000 M≤10M \leq 10解题思路看到这题,一个很直接的思路就是用SAM来做,我们可以先建出SS的SAM,然后再把MM个限制串也放进去。S原创 2016-08-16 16:40:55 · 868 阅读 · 0 评论 -
CodeForces AIM Tech Round 3 (Div. 1) 题解(CF708A,CF708B,CF708C,CF708D,CF708E)
A. Letters Cyclic Shift(CF708A)题解:直接找到第一个不是a的位置i和i后面第一个为a的位置j(如果没有,j=len(s)),那么翻转的肯定就是[i,j]这一段。如果这个字符串都是a,那么就翻转最后一个字符。#include <cstring>#include <cstdio>#include <algorithm>using namespace std;char s原创 2017-02-21 08:50:32 · 1415 阅读 · 1 评论 -
JZOJ4774 【GDOI2017模拟9.10】子串 线段树合并维护SAM的fail树信息(CF 666E类似)
题目大意有NN个字符串,S1,S2...SNS_1,S_2...S_N。现有有QQ个形如(li,ri,Pi)(l_i,r_i,P_i)的询问,表示字符串PiP_i在SlS_l~SrS_r中多少个串出现过。N,Q≤5∗105N ,Q\leq 5*10^5解题思路看到这种多串匹配为问题,我们可以考虑用SAMSAM来实现。首先,我们对NN个串SiS_i建一颗TrieTrie,在TrieTrie上构SAMS原创 2016-09-10 17:26:37 · 1534 阅读 · 0 评论 -
CF 452F Permution 神奇的线段树判断
题目大意给定一个11到NN的列,问是否存在一个长度为33的子等差数列。N≤300000N \leq 300000解题思路看到这题,感觉有点无从下手,好像怎么要都要枚举两个值。 但是我们可以发现一个很神奇的性质如果对于一个位置ii,它是子等差序列中的第二项,那么如果不存在长度为33的子等差数列,那么Ai+kA_i + k和Ai−kA_i - k在位置ii前肯定是成对存在的,即如果我们把位置ii前出现原创 2016-08-18 14:50:34 · 931 阅读 · 4 评论 -
CF 671D Roads in Yusland 线段树维护代价合并的思想
题目大意给定一颗NN个节点的树,现在有MM个工人,每个工人有三个属性ui,vi,Ciu_i, v_i, C_i,表示这名工人可以维修节点uiu_i到节点viv_i的所有路径,花费为CiC_i,并且保证viv_i是uiu_i的祖先。问最少花费多少使得树上的每条边都有人维修。N,M≤300000N,M \leq 300000 Ci≤109C_i \leq 10^9解题思路这题有个特殊的性质,就是每个工原创 2016-08-19 12:47:31 · 1346 阅读 · 0 评论 -
CF 696E ...Wait for it... 链剖练手题
题目大意给定一颗NN个点的树,现在有MM个物品,每个物品一开始都在节点AiA_i上,权值为ii。现在有两种操作,先读入OrdOrd: Ord=1Ord = 1:再读入三个整数u,v,Limu,v,Lim表示从uu到vv这条路径上从小到大把最多LimLim个物品从树上取出,并且从小到大输出。 Ord=2Ord = 2:再读入两个数u,Valu, Val表示给在uu这棵子树的所有物品加上权值ValV原创 2016-08-18 20:02:20 · 853 阅读 · 0 评论 -
CF 581E Kojiro and Furrari(JZOJ 4689 新车) 动态规划维护贪心
题目大意现在有一个长度为MM的数轴,上面有一个起点和一个终点,起点一定在终点左边。现在你要开车从起点到达终点,但是你的油箱只能走长度为SS的路程。途中有NN个加油站,加油站加的汽油有3种,分别为98,95,92,并且一个加油站只能加一种有油,在每个加油站你可以加任意多的油。一开始你加满了98的汽油,现在给定你每个加油站的位置和可以加的油的种类。问能否到达终点,如果可以最少需要加多少92汽油,当加92原创 2016-08-15 10:06:45 · 990 阅读 · 0 评论 -
CF 487E Tourists(JZOJ4691 旅行) 树链剖分维护点双连通分量信息
题目大意给定一个NN个点MM条边的无向图,每个点有一个点权。现在有两种操作,第一种是修改一个点的点权,第二种是询问两点间路径上的最小点权(不能经过重复的点)。操作数为QQ。N,M,Q≤109N,M,Q \leq 10^9解题思路我们先考虑没有修改点权的情况。那么我们可以先用点双连通分量缩环,缩环后的点权为环上的最小值。而每组询问就变成了求树上两点间的最权值。这个经典问题可以用倍增后链剖来维护。但是有原创 2016-08-15 10:46:13 · 953 阅读 · 0 评论 -
CF 704D Captain America 上下界网络流
题目大意给定NN个点,每个点有一个坐标(Xi,Yi)(X_i,Y_i)。现在要给每个点染成红色或蓝色,染成红色的费用为rr,染成蓝色的费用为bb。现在有MM条约束,每条约束形如t,l,dt,l,d: t=1t = 1:对于直线x=lx=l上的点,红色的点数与蓝色的点数的差不能大于dd。 t=2t = 2:对于直线y=ly=l上的点,红色的点数与蓝色的点数的差不能大于dd。 现在问最小的花费把所原创 2016-08-17 23:07:17 · 981 阅读 · 0 评论 -
CF 616F Expensive Strings 用到fail链性质的SAM练手题
题目大意给定NN个串tit_i,每个串有一个权值cic_i。现在要求找到一个串SS,满足∑Ni=1ci⋅|S|⋅pi,s\sum^{N}_{i=1}c_i\cdot|S|\cdot p_{i,s},pi,sp_{i,s}表示SS在tit_i中出现次数。N≤105N \leq 10^5 ci ≤107c_i\ \leq 10^7 ∑ti≤5∗105\sum t_i \leq 5 * 10^5解题思原创 2016-08-16 23:12:45 · 1219 阅读 · 0 评论 -
CF 319D Have You Ever Heard About The World? 二分Hash判断可行解
题目大意给你一个字符串SS,要求你每次找到一个最短的形如XXXX(即由两个相同的字符串拼接而成)的子串,如有多个找最左边的那一个。然后把这个字符串从XXXX变成XX,问无法操作后的字符串是什么?|S|≤50000|S| \leq 50000解题思路要解决这题,有两个关键的性质是一定要发现的。 1. 每次找到的符合要求的子串的程度是不减的。 2. 在删除相同长度的子串时一定是从左到有又删除的。原创 2016-04-13 16:31:11 · 1303 阅读 · 0 评论 -
CF 251D Two Sets 异或高斯消元找最优解
CF251D Two Sets 异或高斯消元找最优解原创 2016-04-08 20:46:27 · 1305 阅读 · 0 评论 -
Codeforces Round #397 (Div. 1 + Div. 2 combined) 题解(CF765A,CF765B,CF765C,CF765D,CF765E,CF765F)
A.Neverending competitions(Codeforces 765A)题解:直接判断坐飞机的次数是奇数还是偶数就可以了。#include <cstring>#include <cstdio>#include <algorithm>using namespace std;char h[100];int n;int main() { scanf("%d", &n);原创 2017-02-21 21:00:58 · 1211 阅读 · 0 评论