Problem

【HNOI2007】紧急疏散evacuate

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

Description

发生了火警,所有人员需要紧急疏散!假设每个房间是一个N×MN\times M的矩形区域。每个格子如果是’..‘,那么表示这是一块空地;如果是’XX’,那么表示这是一面墙,如果是’DD’,那么表示这是一扇门,人们可以从这儿撤出房间。已知门一定在房间的边界上,并且边界上不会有空地。最初,每块空地上都有一个人,在疏散的时候,每一秒钟每个人都可以向上下左右四个方向移动一格,当然他也可以站着不动。疏散开始后,每块空地上就没有人数限制了(也就是说每块空地可以同时站无数个人)。但是,由于门很窄,每一秒钟只能有一个人移动到门的位置,一旦移动到门的位置,就表示他已经安全撤离了。现在的问题是:如果希望所有的人安全撤离,最短需要多少时间?或者告知根本不可能。

Input

输入文件第一行是由空格隔开的一对正整数NNMM3N203\le N\le 203M203\le M\le 20,以下NNMM列描述一个N×MN\times M的矩阵。其中的元素可为字符’..', ‘XX’和’DD’,且字符间无空格。

Output

只有一个整数K,表示让所有人安全撤离的最短时间,如果不可能撤离,那么输出’impossibleimpossible’(不包括引号)。

Read more »

Problem

【SCOI2007】蜥蜴

Description

在一个rrcc列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为11,蜥蜴的跳跃距离是dd,即蜥蜴可以跳到平面距离不超过dd的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减11(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为11,则蜥蜴离开后消失。以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同一个石柱上。

Input

输入第一行为三个整数rrccdd,即地图的规模与最大跳跃距离。以下rr行为石竹的初始状态,00表示没有石柱,131\sim 3表示石柱的初始高度。以下rr行为蜥蜴位置,“LL”表示蜥蜴,“..”表示没有蜥蜴。

Output

输出仅一行,包含一个整数,即无法逃离的蜥蜴总数的最小值。

Read more »

Problem

【HDU4348】To The Moon

Time  Limit:  4000/2000  MS  (Java/Others)\mathrm{Time\;Limit:\;4000/2000\;MS\;(Java/Others)}
Memory  Limit:  65536/65536  KB  (Java/Others)\mathrm{Memory\;Limit:\;65536/65536\;KB\;(Java/Others)}

Description

To The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker.
The premise of To The Moon is based around a technology that allows us to permanently reconstruct the memory on dying man. In this problem, we’ll give you a chance, to implement the logic behind the scene.
You‘ve been given NN integers A[1],A[2],...,A[N]A[1], A[2],..., A[N]. On these integers, you need to implement the following operations:

  1. CC ll rr dd: Adding a constant d for every {Ailir}\{A_i | l \le i \le r\}, and increase the time stamp by 11, this is the only operation that will cause the time stamp increase.
  2. QQ ll rr: Querying the current sum of {Ailir}\{A_i | l \le i \le r\}.
  3. HH ll rr tt: Querying a history sum of {Ailir}\{A_i | l \le i \le r\} in time tt.
  4. BB tt: Back to time tt. And once you decide return to a past, you can never be access to a forward edition anymore.

N,M105N, M \le 10^5, A[i]109|A[i]|\le 10^9, 1lrN1\le l\le r\le N, d104|d|\le 10^4. The system start from time 00, and the first modification is in time 11, t0t\ge 0, and won’t introduce you to a future state.

Input

1
2
3
n m
A1 A2 ... An
... (here following the m operations. )

Output

1
... (for each query, simply print the result. )
Read more »

PRoblem

最优贸易

题目描述

CC 国有 nn 个大城市和 mm 条道路,每条道路连接这 nn 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 11 条。CC 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。
商人阿龙来到 CC 国旅游。当他得知同一种商品在不同城市的价格可能会不同这一信息之后,便决定在旅游的同时,利用商品在不同城市中的差价赚回一点旅费。设 CCnn 个城市的标号从 1n1\sim n,阿龙决定从 11 号城市出发,并最终在 nn 号城市结束自己的旅行。在旅游的过程中,任何城市可以重复经过多次,但不要求经过所有 nn 个城市。阿龙通过这样的贸易方式赚取旅费:他会选择一个经过的城市买入他最喜欢的商品――水晶球,并在之后经过的另一个城市卖出这个水晶球,用赚取的差价当做旅费。由于阿龙主要是来 CC 国旅游,他决定这个贸易只进行最多一次,当然,在赚不到差价的情况下他就无需进行贸易。
现在给出 nn 个城市的水晶球价格,mm 条道路的信息(每条道路所连接的两个城市的编号以及该条道路的通行情况)。请你告诉阿龙,他最多能赚取多少旅费。

输入输出格式

输入格式:
第一行包含 22 个正整数 nnmm,中间用一个空格隔开,分别表示城市的数目和道路的数目。
第二行 nn 个正整数,每两个整数之间用一个空格隔开,按标号顺序分别表示这 nn 个城市的商品价格。
接下来 mm 行,每行有 33 个正整数,xxyyzz,每两个整数之间用一个空格隔开。如果 z=1z=1,表示这条道路是城市 xx 到城市 yy 之间的单向道路;如果 z=2z=2,表示这条道路为城市 xx 和城市 yy 之间的双向道路。
输出格式:
输出文件 trade.outtrade.out11 行,包含 11 个整数,表示最多能赚取的旅费。如果没有进行贸易,则输出 00

Read more »

Problem

K大数查询

Description

NN个位置,MM个操作。操作有两种,每次操作如果是1 a b c1\ a\ b\ c的形式表示在第aa个位置到第bb个位置,每个位置加入一个数cc;如果是2 a b c2\ a\ b\ c形式,表示询问从第aa个位置到第bb个位置,第cc大的数是多少。

Input

第一行NNMM
接下来MM行,每行形如1 a b c1\ a\ b\ c2 a b c2\ a\ b\ c

Output

输出每个询问的结果

Read more »

Problem

食物链

Description

动物王国中有三类动物A,B,CA,B,C,这三类动物的食物链构成了有趣的环形。AABBBBCCCCAA
NN个动物,以1N1\sim N编号。每个动物都是A,B,CA,B,C中的一种,但是我们并不知道它到底是哪一种。
人用两种说法对这NN个动物所构成的食物链关系进行描述:
一种说法是1  X  Y1\;X\;Y,表示XXYY是同类。
二种说法是2  X  Y2\;X\;Y,表示XXYY
人对NN个动物,用上述两种说法,一句接一句地说出KK句话,这KK句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。

  • 当前的话与前面的某些真的话冲突,就是假话;
  • 当前的话中XXYYNN大,就是假话;
  • 当前的话表示XXXX,就是假话。

你的任务是根据给定的N1N50000N(1 \le N \le 50000)KK句话0K100000(0 \le K \le 100000),输出假话的总数。

Input

第一行是两个整数NNKK,以一个空格分隔。
以下KK行每行是三个正整数 DDXXYY,两数之间用一个空格隔开,其中DD表示说法的种类。
D=1D=1,则表示XXYY是同类。
D=2D=2,则表示XXYY

Output

只有一个整数,表示假话的数目。

Read more »

Problem

Shopping Offers

Description

In a shop each kind of product has a price. For example, the price of a flower is 22 ICU (Informatics Currency Units) and the price of a vase is 55 ICU. In order to attract more customers, the shop introduces some special offers.
A special offer consists of one or more product items for a reduced price. Examples: three flowers for 55 ICU instead of 66, or two vases together with one flower for 1010 ICU instead of 1212.
Write a program that calculates the price a customer has to pay for certain items, making optimal use of the special offers. That is, the price should be as low as possible. You are not allowed to add items, even if that would lower the price.
For the prices and offers given above, the (lowest) price for three flowers and two vases is 1414 ICU: two vases and one flower for the reduced price of 1010 ICU and two flowers for the regular price of 44 ICU.

Input

Your program is to read from standard input. The first line contains the number bb of different kinds of products in the basket (0b5)(0 \le b \le 5). Each of the next b lines contains three values cc, kk, and pp. The value cc is the (unique) product code (1c999)(1 \le c \le 999). The value kk indicates how many items of this product are in the basket (1k5)(1 \le k \le 5). The value p is the regular price per item (1p999)(1 \le p \le 999). Notice that all together at most 5×5=255\times 5=25 items can be in the basket. The b+2ndb+2^{nd} line contains the number ss of special offers (0s99)(0 \le s \le 99). Each of the next ss lines describes one offer by giving its structure and its reduced price. The first number n on such a line is the number of different kinds of products that are part of the offer (1n5)(1 \le n \le 5). The next n pairs of numbers (c,k)(c,k) indicate that kk items (1k5)(1 \le k \le 5) with product code cc (1c999)(1 \le c \le 999) are involved in the offer. The last number pp on the line stands for the reduced price (1p9999)(1 \le p \le 9999). The reduced price of an offer is less than the sum of the regular prices.

Output

Your program is to write to standard output. Output one line with the lowest possible price to be paid.

Read more »

Problem

最大数

题目描述

现在请求你维护一个数列,要求提供以下两种操作:

  1. 查询操作。
    语法:Q  LQ\ \ L
    功能:查询当前数列中末尾LL个数中的最大的数,并输出这个数的值。
    限制:LL不超过当前数列的长度。
  2. 插入操作。
    语法:A  nA\ \ n
    功能:将nn加上tt,其中tt是最近一次查询操作的答案(如果还未执行过查询操作,则t=0t=0),并将所得结果对一个固定的常数DD取模,将所得答案插入到数列的末尾。
    限制:nn是整数(可能为负数)并且在长整范围内。

注意:初始时数列是空的,没有一个数。

输入输出格式

输入格式
第一行两个整数,MMDD,其中MM表示操作的个数(M2×105)(M\le 2\times 10^5)DD如上文中所述,满足(0<D<2×109)(0<D<2\times 10^9)
接下来的MM行,每行一个字符串,描述一个具体的操作。语法如上文所述。
输出格式
对于每一个查询操作,你应该按照顺序依次输出结果,每个结果占一行。

Read more »

Problem

【APIO2009】ATM

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

Description

Siruseri\mathrm{Siruseri}城中的道路都是单向的。不同的道路由路口连接。按照法律规定,在每个路口都设立了一个Siruseri\mathrm{Siruseri}银行的ATM\mathrm{ATM}取款机。令人奇怪的是,Siruseri\mathrm{Siruseri}的酒吧都设在路口,虽然并不是每个路口都设有酒吧。
Banditiji\mathrm{Banditiji}计划实施Siruseri\mathrm{Siruseri}有史以来最惊天动地的ATM\mathrm{ATM}抢劫。他将从市中心出发,沿着单向道路行驶,抢劫所有他途径的ATM\mathrm{ATM}机,最终他将在一个酒吧庆祝他的胜利。
使用高超的黑客技术,他获知了每个ATM\mathrm{ATM}机中可以掠取的现金数额。他希望你帮助他计算从市中心出发最后到达某酒吧时最多能抢劫的现金数额。他希望你帮助他计算从市中心出发最后到达某个酒吧时最多能抢劫的现金总数。他可以经过同一路口或道路任意多次。但只要他抢劫某个ATM\mathrm{ATM}机后,该ATM\mathrm{ATM}机就不会再有钱了。

Input

第一行包含两个整数NNMMNN表示路口的个数,MM表示道路条数。接下来MM行,每行两个整数,这两个整数都在11NN之间,第i+1i+1行的两个整数表示第i条道路的起点和终点的路口编号。接下来NN行,每行一个整数,按顺序表示每个路口处的ATM\mathrm{ATM}机中的钱数。接下来一行包含两个整数SSPPSS表示市中心的编号,也就是出发的路口。PP表示酒吧数目。接下来的一行中有PP个整数,表示PP个有酒吧的路口的编号。

Output

输出一个整数,表示Banditji\mathrm{Banditji}从市中心开始到某个酒吧结束所能抢劫的最多的现金总数。

Read more »

Problem

维护序列

题目描述

老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为NN的数列,不妨设为a1,a2,,aNa_1,a_2,\cdots ,a_N。有如下三种操作形式: (1)(1)把数列中的一段数全部乘一个值; (2)(2)把数列中的一段数全部加一个值; (3)(3)询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模PP的值。

输入输出格式

输入格式
第一行两个整数NNPP(1P1091\le P\le 10^9)。第二行含有N个非负整数,从左到右依次为a1,a2,,aNa_1,a_2,\cdots ,a_N, (0ai109,1iN0\le a_i\le 10^9,1\le i\le N)。第三行有一个整数MM,表示操作总数。从第四行开始每行描述一个操作,输入的操作有以下三种形式: 操作11:“11 tt gg cc”(不含双引号)。表示把所有满足tigt\le i\le gaia_i改为ai×ca_i\times c$ (1\le t\le g\le N,0\le c\le 10^9)$。 操作22:“22 tt gg cc”(不含双引号)。表示把所有满足tigt\le i\le gaia_i改为ai+ca_i+c$ (1\le t\le g\le N,0\le c\le 10^9)$。 操作33:“33 tt gg”(不含双引号)。询问所有满足tigt\le i\le gaia_i的和模PP的值 (1tgN)(1\le t\le g\le N)。 同一行相邻两数之间用一个空格隔开,每行开头和末尾没有多余空格。
输出格式
对每个操作33,按照它在输入中出现的顺序,依次输出一行一个整数表示询问结果。

Read more »