Problem

【AHOI2008】Meet 紧急集合

Description

欢乐岛上有个非常好玩的游戏,叫做“紧急集合”。在岛上分散有NN个等待点,有N−1N-1条道路连接着它们,每条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一点到另一点要花费一个游戏币。参加游戏的三人一组,开始的时候,所有人员均任意分散在各个等待点上(每个点同时允许多个人等待),每个人均带有足够多的游戏币(用于支付使用道路的花费)、地图(标明等待点之间道路连接的情况)以及对讲机(用于和同组的成员联系)。当集合号吹响后,每个成员之间迅速联系,了解到自己组所有成员所在的等待点后,迅速在NN个等待点中确定一个集合点,组内所有成员将在该集合点集合,集合所用花费最少的组将是游戏的赢家。
小可可和他的朋友邀请你一起参加这个游戏,有你来选择集合点,聪明的你能够完成这个任务,帮助小可可赢得游戏吗?

Input

第一行两个正整数NN和MM(N≤5×105N\le 5\times 10^5,M≤5×105M\le 5\times 10^5),之间用一个空格隔开。分别表示等待点的个数(等待点也从11到NN进行编号)和获奖所需完成的集合次数。
随后有N−1N-1行,每行两个正整数AA和BB,之间用空格隔开,表示编号为AA和编号为BB的等待点之间有一条路。
接着还有MM行,每行用三个正整数表示某次集合前小可可、小可可的朋友以及你所在的等待点的编号。

Output

一共有MM行,每行两个数PP和CC,用一个空格隔开。其中第ii行表示第ii次集合点选择在编号为PP的等待点,集合总共的花费是CC个游戏币。

Read more »

Problem

【POI2007】大都市meg

Description

经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员BlueMaryBlue Mary也开始骑着摩托车传递邮件了。不过,她经常回忆起以前在乡间漫步的情景。昔日,乡下有依次编号为1∼n1\sim n的nn个小村庄,某些村庄之间有一些双向的土路。从每个村庄都恰好有一条路径到达村庄11(即比特堡)。并且,对于每个村庄,它到比特堡的路径恰好只经过编号比它的编号小的村庄。另外,对于所有道路而言,它们都不在除村庄以外的其他地点相遇。在这个未开化的地方,从来没有过高架桥和地下铁道。随着时间的推移,越来越多的土路被改造成了公路。至今,BlueMaryBlue Mary还清晰地记得最后一条土路被改造为公路的情景。现在,这里已经没有土路了——所有的路都成为了公路,而昔日的村庄已经变成了一个大都市。 BlueMaryBlue Mary想起了在改造期间她送信的经历。她从比特堡出发,需要去某个村庄,并且在两次送信经历的间隔期间,有某些土路被改造成了公路.现在BlueMaryBlue Mary需要你的帮助:计算出每次送信她需要走过的土路数目。(对于公路,她可以骑摩托车;而对于土路,她就只好推车了。)

Input

第一行是一个数nn (1≤n≤2500001\le n\le 250000)
以下n−1n-1行,每行两个整数a,ba,b(1≤a<b≤n1\le a < b\le n),表示原有一条路连接aa和bb
以下一行,包含一个整数mm(1≤m≤2500001\le m\le 250000),表示BlueMaryBlue Mary曾经在改造期间送过mm次信。
以下n+m−1n+m-1行,每行有两种格式的若干信息,表示按时间先后发生过的n+m−1n+m-1次事件:
若这行为 A a bA\ a\ b (1≤a<b≤n1\le a < b\le n),表示将aa到bb的土路修为公路。
若这行为 W aW\ a, 则表示BlueMaryBlue Mary曾经从比特堡送信到村庄aa。

Output

有m行,每行包含一个整数,表示对应的某次送信时经过的土路数目。

Read more »

Problem

小Z的袜子

Description

作为一个生活散漫的人,小ZZ每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小ZZ再也无法忍受这恼人的找袜子过程,于是他决定听天由命……
具体来说,小ZZ把这NN只袜子从11到NN编号,然后从编号LL到RR(尽管小ZZ并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬)。
你的任务便是告诉小ZZ,他有多大的概率抽到两只颜色相同的袜子。当然,小ZZ希望这个概率尽量高,所以他可能会询问多个(L,R)(L,R)以方便自己选择。

Input

输入文件第一行包含两个正整数NN和MM。NN为袜子的数量,MM为小ZZ所提的询问的数量。接下来一行包含NN个正整数CiC_i,其中CiC_i表示第ii只袜子的颜色,相同的颜色用相同的数字表示。再接下来MM行,每行两个正整数LL,RR表示一个询问。

Output

包含MM行,对于每个询问在一行中输出分数A/BA/B表示从该询问的区间[L,R][L,R]中随机抽出两只袜子颜色相同的概率。若该概率为00则输出0/10/1,否则输出的A/BA/B必须为最简分数。

Read more »

Problem

最长回文

Time Limit: 4000/2000MS(Java/Others)4000/2000 MS (Java/Others)
Memory Limit: 32768/32768K(Java/Others)32768/32768 K (Java/Others)

Problem Description

给出一个只由小写英文字符a,b,c⋯y,za,b,c\cdots y,z组成的字符串SS, 求SS中最长回文串的长度.
回文就是正反读都是一样的字符串, 如abaaba, abbaabba等

Input

输入有多组casecase,不超过120120组,每组输入为一行小写英文字符a,b,c⋯y,za,b,c\cdots y,z组成的字符串SS
两组casecase之间由空行隔开(该空行不用处理)
字符串长度len≤110000len\le 110000

Output

每一行一个整数xx,对应一组casecase,表示该组casecase的字符串中所包含的最长回文长度.

Read more »

Problem

Dynamic len(set(a[L:R]))

Description

In python, we can use len(start(a[L:R])) to calculate the number of distinct values of elements a[L],a[L+1],⋯ ,a[R−1]a[L],a[L + 1], \cdots,a[R-1].
Tere are some interactive examples that may help you understand how it is done. Remember that the indices of python lists start from 00.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>>
a=[1,2,1,3,2,1,4]
>>> print a[1:6]
[2, 1, 3, 2, 1]
>>> print set(a[1:6])
set([1, 2, 3])
>>> print
len(set(a[1:6]))
3
>>> a[3]=2
>>> print
len(set(a[1:6]))
2
>>> print len(set(a[3:5]))
1

Your task is to simulate this process.

Input

There will be only one test case. The first line contains two integers nn and mm (1≤n,m≤50,000)(1\le n,m\le 50,000).
The next line contains the original list.
All the integers are between 11 and 1,000,0001,000,000 (inclusive). The next m lines contain the statements
that you need to execute.
A line formatted as ‘MM xx yy’ (1≤y≤1,000,000)(1\le y\le 1,000,000) means a[x]=ya[x] = y, and a line formatted as ‘QQ xx
yy’ means print len(set(a[x:y]))print\ len(set(a[x : y])).
It is guaranteed that the statements will not cause indexindex outout ofof rangerange error.

Output

Print the simulated result, one line for each query.

Read more »

Problem

【SDOI2008】校门外的区间

Time  Limit:  10  Sec\mathrm{Time\;Limit:\;10\;Sec}
Memory  Limit:  128  MB\mathrm{Memory\;Limit:\;128\;MB}

Description

受校门外的树这道经典问题的启发,AA君根据基本的离散数学的知识,抽象出55种运算维护集合SS(SS初始为空)并最终输出SS。现在,请你完成这道校门外的树之难度增强版——校门外的区间。
55种运算如下:

编号 表示格式 数学表示
11 U    TU\;\;T S∪TS\cup T
22 I    TI\;\;T S∩TS\cap T
33 D    TD\;\;T S−TS-T
44 C    TC\;\;T S+TS+T
55 S    TS\;\;T S⊗TS\otimes T

基本集合运算如下:

运算 结果
A∪BA\cup B {x∣x∈A∣∣x∈B}\lbrace x\mid x\in A\mid\mid x\in B\rbrace
A∩BA\cap B {x∣x∈A    &&    x∈B}\lbrace x\mid x\in A\;\;\&\&\;\;x\in B\rbrace
A−BA-B {x∣x∈A    &&    x∉B}\lbrace x\mid x\in A\;\;\&\&\;\;x\notin B\rbrace
A⊗BA\otimes B (A−B)∪(B−A)(A-B)\cup(B-A)

Input

输入共MM行。
每行的格式为XX TT,用一个空格隔开,XX表示运算的种类,TT为一个区间(区间用(a,b),(a,b],[a,b),[a,b](a,b), (a,b], [a,b), [a,b]表示)。

Output

共一行,即集合SS,每个区间后面带一个空格。若SS为空则输出emptyempty setset。

Read more »

Problem

善意的投票

题目描述

幼儿园里有nn个小朋友打算通过投票来决定睡不睡午觉。对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神。
虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。
我们的问题就是,每位小朋友应该怎样投票,才能使冲突数最小?

输入输出格式

输入格式
文件的第一行只有两个整数nn,mm,保证有2≤n≤3002\le n\le 300,1≤m≤n×(n−1)/21\le m\le n\times (n-1)/2。
其中nn代表总人数,mm代表好朋友的对数。文件第二行有nn个整数,第ii个整数代表第ii个小朋友的意愿,当它为11时表示同意睡觉,当它为00时表示反对睡觉。接下来文件还有mm行,每行有两个整数ii,jj。表示ii,jj是一对好朋友,我们保证任何两对ii,jj不会重复。
输出格式
只需要输出一个整数,即可能的最小冲突数。

Read more »

Problem

【JSOI2008】星球大战

题目描述

很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中
几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地
摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连
通情况以及帝国打击的星球顺序,以尽量快的速度求出每一次打击之后反抗军占据的星球的连通快的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,
则这两个星球在同一个连通块中)。

输入输出格式

输入格式
输入文件第一行包含两个整数,N(1≤N≤2×M)N (1\le N\le 2\times M) 和M(1≤M≤2×105)M (1\le M\le 2\times 10^5),分别表示星球的数目和以太隧道的数目。星球用0∼N−10\sim N-1的整数编号。
接下来的MM行,每行包括两个整数X,YX, Y,其中(0≤X,Y<N0\le X,Y<N且X≠YX\ne Y),表示星球XX和星球YY之间有以太隧道。注意所有的以太隧道都是双向的。
接下来一行是一个整数KK,表示帝国计划打击的星球个数。
接下来的KK行每行一个整数XX,满足0≤X<N0\le X<N,表示帝国计划打击的星球编号。帝国总是按输入的顺序依次摧毁星球的。
输出格式
输出文件的第一行是开始时星球的连通块个数。
接下来的KK行,每行一个整数,表示经过该次打击后现存星球的连通块个数。

Read more »

Problem

切糕

Description

经历千辛万苦小AA得到了一块切糕,切糕的形状是长方体,小AA打算拦腰将切糕切成两半分给小BB。出于美观考虑,小AA希望切面能尽量光滑且和谐。于是她找到你,希望你能帮她找出最好的切割方案。
出于简便考虑,我们将切糕视作一个长PP,宽QQ,高RR的长方体点阵。我们将位于第zz层中第xx行,第yy列上的点称为(x,y,z)(x,y,z),它有一个非负的不和谐值v(x,y,z)v(x,y,z)。一个合法的切面满足以下两个条件:

  1. 与每个纵轴有且仅有一个交点。即切面是一个函数f(x,y)f(x,y),对于所有1≤x≤P1≤x≤P,1≤y≤Q1≤y≤Q,我们需指定一个切割点f(x,y)f(x,y),且 1≤f(x,y)≤R1≤f(x,y)≤R。
  2. 切面需要一定的光滑性要求,即相邻纵轴上的切割点不能相距太远。对于所有 1≤x,x′≤P1\le x,x'\le P 和 1≤y,y′≤Q1\le y,y'\le Q,若 ∣x−x′∣+∣y−y′∣=1|x-x'|+|y-y'|=1,则 ∣f(x,y)−f(x′,y′)∣≤D|f(x,y)-f(x',y')|\le D, 其中DD是给定的一个非负整数。

能有许多切面满足上面的条件,小AA希望找出总的切割点上的不和谐值最小的那个,即∑x=1P∑y=1Qv(x,y,f(x,y))\sum_{x=1}^{P}\sum_{y=1}^{Q} v(x,y,f(x,y))最小。

Input

第一行是三个正整数P,Q,RP,Q,R,表示切糕的长PP、 宽QQ、高RR。第二行有一个非负整数DD,表示光滑性要求。接下来是RR个PP行QQ列的矩阵,第zz个矩阵的第xx行第yy列是v(x,y,z)(1≤x≤P,1≤y≤Q,1≤z≤R)v(x,y,z) (1\le x\le P, 1\le y\le Q, 1\le z\le R)。
100%100\%的数据满足P,Q,R≤40P,Q,R\le 40,0≤D≤R0\le D\le R,且给出的所有的不和谐值不超过10001000。

Output

仅包含一个整数,表示在合法基础上最小的总不和谐值。

Read more »

Problem

【HNOI2008】越狱

Time  Limit:  1  Sec\mathrm{Time\;Limit:\;1\;Sec}
Memory  Limit:  162  MB\mathrm{Memory\;Limit:\;162\;MB}

Description

监狱有连续编号为1∼N1\sim N的NN个房间,每个房间关押一个犯人,有MM种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。

Input

输入两个整数MM,NN 。

Output

能越狱的状态数,答案模100003100003 。

Read more »