hdu 3948 Portal (kusral+离线)】的更多相关文章

Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 931    Accepted Submission(s): 466 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This import…
Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2027    Accepted Submission(s): 998 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This impor…
The Number of Palindromes Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2465    Accepted Submission(s): 841 Problem Description Now, you are given a string S. We want to know how many distin…
题意:在一张无向图上,已知边权,做q组询问,问小于L的点对共有几组.点对间的距离取=min(两点之间每一条通路上的最大值). 分析:这里取最大值的最小值,常用到二分.而这里利用离线算法,先对边从小到大排序,逐一加入集合中.利用并查集,当两点之间不在同一个集合,那么所加入的边就是两个集合中任一点对的距离(两集合各取一点).所以有cnt2+=num[fu]*num[fv]; 注意:有些询问比m条边中的最小边还小,比最大边还大. #include<cstdio> #include<cstrin…
搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1. 这条边这两点间某条路径上的最长边:2. 这条边是这两点间所有路径上的最长边中的最短边. 简单来说,假如a到d有两条路径,一条经过b,一条经过d,其中ab = 1, bd = 3, ac = 2, cd = 2,那么abd上的最长边为3,acd上的最长边为2,则ad的距离为2. 如果a, d两点间…
Problem - 3938 题意是要求出给定权值下,满足要求的点对的数目.所谓的要求是,给出两点,之间会有很多路径,这个点对的最小距离是众多路径中,最短的一条路径的长度,路径长度是路径上最长边的长度.于是,认真观察可以发现,两个点能连在一起的前提条件是,之间的的边都小于给定值.于是,用边来构建最小生成树就可以得到这样的一些满足要求的点对了.如果是两个集合因为一条边的加入连在一起了,那么总的点对数目就增加Na*Nb.把答案存下来,然后查询的时候二分找出满足的那一个即可. 代码如下: #inclu…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3948 题意:给定一个字符串,求字符串本质不同的回文子串个数. 思路:主要参考该篇解题报告 先按照manacher的构造方法改造一遍串,然后跑一遍manacher.求出以i为中心的最长回文串长度p[i]. 然后跑一遍后缀数组,若已经求得后缀sa[i-1]对答案的贡献,然后现在计算后缀sa[i],本来是要加上以sa[i]为中心的回文串的个数p[sa[i]]. 我们可以维护一个tmp,也就是上图中蓝色的框…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4031 Problem Description Today is the 10th Annual of “September 11 attacks”, the Al Qaeda is about to attack American again. However, American is protected by a high wall this time, which can be treating…
区间交 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5700 Description 小A有一个含有n个非负整数的数列与m个区间.每个区间可以表示为li,ri. 它想选择其中k个区间, 使得这些区间的交的那些位置所对应的数的和最大. 例如样例中,选择[2,5]与[4,5]两个区间就可以啦. Input 多组测试数据 第一行三个数n,k,m(1≤n≤100000,1≤k≤m≤100000). 接下来一行n个数ai,表示lyk的数列(0≤ai≤10…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5875 Function Time Limit: 7000/3500 MS (Java/Others)Memory Limit: 262144/262144 K (Java/Others) 问题描述 The shorter, the simpler. With this problem, you should be convinced of this truth. You are given an…
The Number of Palindromes Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)http://acm.hdu.edu.cn/showproblem.php?pid=3948 Problem Description Now, you are given a string S. We want to know how many distinct substri…
http://acm.hdu.edu.cn/showproblem.php?pid=4288 開始的时候,果断TLE,做的方法是,线段树上只维护%5==3的坐标,比方1 2 3 4 5 6 7  假设删除第三个数,就将3,6的位置全+1,就是向右偏移以为,可是求和还是非常慢,所以即使10秒,还是TLE... 正确做法: 1.节点内维护sum[0...4]分别代表区间内%5==i的和 2.结点维护点的个数,cnt 3.离散化处理,然后每次插入时,经过的结点cnt+1或-1,叶子节点Sum[0]就是…
题目大意: 一个数字组成一堆素因子的乘积,如果一个数字的素因子个数(同样的素因子也要多次计数)小于等于P,那么就称这个数是P的幸运数 多次询问1<=x<=n,1<=y<=m,P , 找到多少对gcd(x,y)是P的幸运数 这里k定为k是P的幸运数 这跟之前做的http://www.cnblogs.com/CSU3901130321/p/4902748.html CSU1325的题目很像,但是这里求sum[]要复杂了很多 本来是枚举k,d求sum的,但是每次询问,P都在变,而我们需要…
Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1312    Accepted Submission(s): 656 Problem Description ZLGG found a magic theory that the bigger banana the bigger banana peel .This impo…
An easy problem Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Description One day, a useless calculator was being built by Kuros. Let's assume that number X is showed on the screen of calculator. At first…
How far away ?                                                                             Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                                                            …
所谓的数据离线处理,就是将所有的输入数据全部读入后,在进行统一的操作,这样当然有好处,比如让你算好多数的阶层,但是输入的每个数是没有顺序的,其实跟可以线性的解决,但是由于没有顺序的输入,这样处理的话复杂度就很高,若将输入的这些数据全部先存起来,再排序,然后按从小到大的顺序处理. f(n)=(∏i=1nin−i+1)%1000000007 You are expected to write a program to calculate f(n) when a certain n is given.…
J - Super Mario HDU - 4417 这个题目我开始直接暴力,然后就超时了,不知道该怎么做,直接看了题解,这个习惯其实不太好. 不过网上的思路真的很厉害,看完之后有点伤心,感觉自己应该可以写的,但是没有写出来. 因为我们要查找一个区间小于等于c的数有多少个,这种区间处理可以用线段树很好的解决, 但是怎么解决呢,我习惯性的直接建树,然后再想怎么做,其实这样不对, 线段树对于我们来说是一个解决问题的工具,不要本末倒置了. 我们想查找一个区间小于等于c的数的个数,用线段树查询很简单,但…
思路:将点按值从小到大排序,询问按h从小到大排序. 在建立线段树,按h的大小更新树并得到该次查询的结果! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #define MAX 100005 #define I(x) scanf("%d"…
题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> #include <string> #include <cmath> #include <map> using namespace std; #define N 200010 int ws1[N],wv[N],wa[N],wb[N]; int rank1[N],heigh…
集训队论文中有求不同子串个数的做法,就是扫一遍height数组,过程中根据height数组进行去重.对于本题也是雷同的,只是每一次不是根据与排名在上一位的LCP去重,而是与上一次统计对答案有贡献的后缀进行比较去重. 几组数据 abacaba 7 abbacaa 7 baabcaa 5 #include <iostream> #include <vector> #include <algorithm> #include <string> #include &l…
题意 求一个字符串中本质不同的回文子串的个数. $ 1\leq |string| \leq 100000$ 思路 好像是回文自动机的裸题,但是可以用 \(\text{Manacher}\) (马拉车)算法配合后缀数组(或配合哈希表)解决. \(\text{Manacher}\) 算法非常短小精悍,它可以在线性时空内求出以每个点为中心拓展的最远距离,筛出与 \(n\) 同阶个数个回文串,这些回文串包含原串所有本质不同的回文串. 为了判掉奇偶串的问题,我们为字符串穿插一个特殊字符,如字符串 abcc…
题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么,整个数列中,对于答案有贡献的,只有每种数字中,$R$左边最近的一个 对于数列$1,1,2,2,3,3,4,4,1,1,2,2,4,3,4,5,5,P...$和       $0,0,0,0,0,0,0,0,0,1,0,2,0,3,4,0,5,P...$ 只要右边界保持在P-1,询问结果是等价的 具体操作就是…
把数值和查询放在一起从小到大排序,纪录每个数值的位置,当遇到数值时就更新到树状数组中,遇到查询就直接查询该区间和. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; ; struct node { int id; int L, R; int val; } qq[MAXN]; int N, Q; int cntQ;…
这题跟ZOJ 3606的解题思路很相似. 题意:有3中操作:1.向集合中增加一个数x(1≤x≤1e9):2.从集合中删去一个数x(保证这个数存在):3.查询集合中所有位置满足i%5==3的数a[i]的和,集合中的数按升序排列.给你一共N个操作,输出每次查询的和. 做法:因为操作只有10^5个,所以将所有查询中的数保存下来,排序之后离散化.每个数对应一个“位置”,通过标记这个“位置”是否已用来表示该数是否在集合中. 线段树节点记录两个信息: cnt:这一段“位置”中含有多少个数,pushUp的时候…
传送门 Trees  Accepts: 156  Submissions: 533  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) Problem Description Today CodeFamer is going to cut trees.There are N trees standing in a line. They are numbered from 1 to N…
线段树,TLE,各种.唉....我真是笨死了.... 我用的线段树是记录左右区间最长连续棵数的...反正TLE #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N=50050; struct Q{ int val,index; }Que[N]; int SegT[N*4],L[N*4],R[…
Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 546    Accepted Submission(s): 299 Problem Description There are n men ,every man has an ID(1..n).their ID is unique. Whose ID is i and i-1…
一.模板 算法解析:http://www.felix021.com/blog/read.php?2040 *主要用来解决一个字符串中最长回文串的长度,在O(n)时间内,线性复杂度下,求出以每个字符串为中心的最长回文,奇数回文跟偶数回文一起考虑了 S $ # # # # # # # # # P 最后所求的值就是max(P[i]-) //输入,并处理得到字符串s,s[0]=$ void getp() { ], mx = , id = ; memset(p, , sizeof(p)); ; s[i]…
POJ 3974: Palindrome 题意: 最长回文子串的长度... 分析: Manacher板子题... 代码: #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> //by NeighThorn using namespace std; //眉眼如初,岁月如故 +; int cas,len,p[maxn]; char s[maxn],str[maxn];…