CF1498D.Bananas in a Microwave

提高+/省选-

通过率:0%

时间限制:3.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You have a malfunctioning microwave in which you want to put some bananas. You have nn time-steps before the microwave stops working completely. At each time-step, it displays a new operation.

Let kk be the number of bananas in the microwave currently. Initially, k=0k = 0. In the ii-th operation, you are given three parameters tit_i, xix_i, yiy_i in the input. Based on the value of tit_i, you must do one of the following:

Type 1: (ti=1t_i=1, xix_i, yiy_i) — pick an aia_i, such that 0≤ai≤yi0 \le a_i \le y_i, and perform the following update aia_i times: k:=⌈(k+xi)⌉k:=\lceil (k + x_i) \rceil.

Type 2: (ti=2t_i=2, xix_i, yiy_i) — pick an aia_i, such that 0≤ai≤yi0 \le a_i \le y_i, and perform the following update aia_i times: k:=⌈(k⋅xi)⌉k:=\lceil (k \cdot x_i) \rceil.

Note that xix_i can be a fractional value. See input format for more details. Also, ⌈x⌉\lceil x \rceil is the smallest integer ≥x\ge x.

At the ii-th time-step, you must apply the ii-th operation exactly once.

For each jj such that 1≤j≤m1 \le j \le m, output the earliest time-step at which you can create exactly jj bananas. If you cannot create exactly jj bananas, output −1-1.

你有一台故障的微波炉,想在里面放入一些香蕉。在微波炉彻底损坏前,你共有 nn 个时间步。在每个时间步,微波炉会显示一个新的操作。

设当前微波炉中香蕉的数量为 kk,初始时 k=0k = 0。在第 ii 个操作中,输入给出三个参数 tit_i、xix_i、yiy_i。根据 tit_i 的值,你必须执行以下操作之一:

类型 1:(ti=1t_i=1, xix_i, yiy_i)—— 选择一个整数 aia_i,满足 0≤ai≤yi0 \le a_i \le y_i,然后执行如下更新操作 aia_i 次:

k:=⌈(k+xi)⌉.k := \lceil (k + x_i) \rceil.

类型 2:(ti=2t_i=2, xix_i, yiy_i)—— 选择一个整数 aia_i,满足 0≤ai≤yi0 \le a_i \le y_i,然后执行如下更新操作 aia_i 次:

k:=⌈(k⋅xi)⌉.k := \lceil (k \cdot x_i) \rceil.

注意:xix_i 可以是小数(详见输入格式说明)。此外,⌈x⌉\lceil x \rceil 表示不小于 xx 的最小整数(即向上取整)。

在第 ii 个时间步,你必须且仅能执行第 ii 个操作一次。

对每个满足 1≤j≤m1 \le j \le m 的 jj,输出能够恰好得到 jj 根香蕉的最早时间步;若无法恰好得到 jj 根香蕉,则输出 −1-1。

输入格式

The first line contains two space-separated integers nn (1≤n≤200)(1 \le n \le 200) and mm (2≤m≤105)(2 \le m \le 10^5).

Then, nn lines follow, where the ii-th line denotes the operation for the ii-th timestep. Each such line contains three space-separated integers tit_i, xi′x'_i and yiy_i (1≤ti≤21 \le t_i \le 2, 1≤yi≤m1\le y_i\le m).

Note that you are given xi′x'_i, which is 105⋅xi10^5 \cdot x_i. Thus, to obtain xix_i, use the formula xi=xi′105x_i= \dfrac{x'_i} {10^5}.

For type 1 operations, 1≤xi′≤105⋅m1 \le x'_i \le 10^5 \cdot m, and for type 2 operations, 105<xi′≤105⋅m10^5 \lt x'_i \le 10^5 \cdot m.

第一行包含两个以空格分隔的整数 nn(1≤n≤2001 \le n \le 200)和 mm(2≤m≤1052 \le m \le 10^5)。

接下来是 nn 行,其中第 ii 行表示第 ii 个时间步的操作。每行包含三个以空格分隔的整数 tit_i、xi′x'_i 和 yiy_i(1≤ti≤21 \le t_i \le 2,1≤yi≤m1\le y_i\le m)。

注意:题目给出的是 xi′x'_i,其值为 105⋅xi10^5 \cdot x_i。因此,需通过公式 xi=xi′105x_i= \dfrac{x'_i} {10^5} 计算出 xix_i。

对于类型 1 的操作,满足 1≤xi′≤105⋅m1 \le x'_i \le 10^5 \cdot m;对于类型 2 的操作,满足 105<xi′≤105⋅m10^5 \lt x'_i \le 10^5 \cdot m。

输出格式

Print mm integers, where the ii-th integer is the earliest time-step when you can obtain exactly ii bananas (or −1-1 if it is impossible).

输出 mm 个整数,其中第 ii 个整数表示能够恰好获得 ii 根香蕉的最早时间步(若无法实现,则为 −1-1)。

输入输出样例

  • 输入#1

    3 20
    1 300000 2
    2 400000 2
    1 1000000 3

    输出#1

    -1 -1 1 -1 -1 1 -1 -1 -1 3 -1 2 3 -1 -1 3 -1 -1 -1 3
  • 输入#2

    3 20
    1 399999 2
    2 412345 2
    1 1000001 3

    输出#2

    -1 -1 -1 1 -1 -1 -1 1 -1 -1 3 -1 -1 -1 3 -1 2 -1 3 -1

说明/提示

In the first sample input, let us see how to create 1616 number of bananas in three timesteps. Initially, k=0k=0.

  • In timestep 1, we choose a1=2a_1=2, so we apply the type 1 update — k:=⌈(k+3)⌉k := \lceil(k+3)\rceil — two times. Hence, kk is now 6.
  • In timestep 2, we choose a2=0a_2=0, hence value of kk remains unchanged.
  • In timestep 3, we choose a3=1a_3=1, so we are applying the type 1 update k:=⌈(k+10)⌉k:= \lceil(k+10)\rceil once. Hence, kk is now 16.

It can be shown that k=16k=16 cannot be reached in fewer than three timesteps with the given operations.

In the second sample input, let us see how to create 1717 number of bananas in two timesteps. Initially, k=0k=0.

  • In timestep 1, we choose a1=1a_1=1, so we apply the type 1 update — k:=⌈(k+3.99999)⌉k := \lceil(k+3.99999)\rceil — once. Hence, kk is now 4.
  • In timestep 2, we choose a2=1a_2=1, so we apply the type 2 update — k:=⌈(k⋅4.12345)⌉k := \lceil(k\cdot 4.12345)\rceil — once. Hence, kk is now 17.

It can be shown that k=17k=17 cannot be reached in fewer than two timesteps with the given operations.

在第一个样例输入中,我们来演示如何在三个时间步内生成 1616 个香蕉。初始时,k=0k=0。

  • 在第 1 个时间步,我们选择 a1=2a_1=2,因此执行两次类型 1 更新 —— k:=⌈(k+3)⌉k := \lceil(k+3)\rceil。于是,kk 变为 6。
  • 在第 2 个时间步,我们选择 a2=0a_2=0,因此 kk 的值保持不变。
  • 在第 3 个时间步,我们选择 a3=1a_3=1,因此执行一次类型 1 更新 —— k:=⌈(k+10)⌉k := \lceil(k+10)\rceil。于是,kk 变为 16。

可以证明:在给定操作下,无法用少于三个时间步达到 k=16k=16。

在第二个样例输入中,我们来演示如何在两个时间步内生成 1717 个香蕉。初始时,k=0k=0。

  • 在第 1 个时间步,我们选择 a1=1a_1=1,因此执行一次类型 1 更新 —— k:=⌈(k+3.99999)⌉k := \lceil(k+3.99999)\rceil。于是,kk 变为 4。
  • 在第 2 个时间步,我们选择 a2=1a_2=1,因此执行一次类型 2 更新 —— k:=⌈(k⋅4.12345)⌉k := \lceil(k\cdot 4.12345)\rceil。于是,kk 变为 17。

可以证明:在给定操作下,无法用少于两个时间步达到 k=17k=17。

输入解题思路,AI测评打分。不知道怎么写?

首页