310954: CF1913C. Game with Multiset
Memory Limit:256 MB
Time Limit:1 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
C. Game with Multisettime limit per test1.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output
In this problem, you are initially given an empty multiset. You have to process two types of queries:
- ADD $x$ — add an element equal to $2^{x}$ to the multiset;
- GET $w$ — say whether it is possible to take the sum of some subset of the current multiset and get a value equal to $w$.
The first line contains one integer $m$ ($1 \le m \le 10^5$) — the number of queries.
Then $m$ lines follow, each of which contains two integers $t_i$, $v_i$, denoting the $i$-th query. If $t_i = 1$, then the $i$-th query is ADD $v_i$ ($0 \le v_i \le 29$). If $t_i = 2$, then the $i$-th query is GET $v_i$ ($0 \le v_i \le 10^9$).
OutputFor each GET query, print YES if it is possible to choose a subset with sum equal to $w$, or NO if it is impossible.
ExamplesInput5 1 0 1 0 1 0 2 3 2 4Output
YES NOInput
7 1 0 1 1 1 2 1 10 2 4 2 6 2 7Output
YES YES YES
Output
题目大意:本题中,你初始时有一个空的多集合。您必须处理两种类型的查询:
1. `ADD x` — 向多集合中添加一个等于 $2^x$ 的元素;
2. `GET w` — 判断是否可以从当前多集合的某个子集中选取元素,使得它们的和等于 $w$。
输入数据格式:第一行包含一个整数 $m$ ($1 \le m \le 10^5$) — 查询的数量。然后是 $m$ 行,每行包含两个整数 $t_i, v_i$,表示第 $i$ 个查询。如果 $t_i = 1$,则第 $i$ 个查询是 `ADD v_i` ($0 \le v_i \le 29$)。如果 $t_i = 2$,则第 $i$ 个查询是 `GET v_i` ($0 \le v_i \le 10^9$)。
输出数据格式:对于每个 `GET` 查询,如果可以选择一个子集使得和等于 $w$,则打印 `YES`;如果不可能,则打印 `NO`。题目大意:本题中,你初始时有一个空的多集合。您必须处理两种类型的查询: 1. `ADD x` — 向多集合中添加一个等于 $2^x$ 的元素; 2. `GET w` — 判断是否可以从当前多集合的某个子集中选取元素,使得它们的和等于 $w$。 输入数据格式:第一行包含一个整数 $m$ ($1 \le m \le 10^5$) — 查询的数量。然后是 $m$ 行,每行包含两个整数 $t_i, v_i$,表示第 $i$ 个查询。如果 $t_i = 1$,则第 $i$ 个查询是 `ADD v_i` ($0 \le v_i \le 29$)。如果 $t_i = 2$,则第 $i$ 个查询是 `GET v_i` ($0 \le v_i \le 10^9$)。 输出数据格式:对于每个 `GET` 查询,如果可以选择一个子集使得和等于 $w$,则打印 `YES`;如果不可能,则打印 `NO`。
1. `ADD x` — 向多集合中添加一个等于 $2^x$ 的元素;
2. `GET w` — 判断是否可以从当前多集合的某个子集中选取元素,使得它们的和等于 $w$。
输入数据格式:第一行包含一个整数 $m$ ($1 \le m \le 10^5$) — 查询的数量。然后是 $m$ 行,每行包含两个整数 $t_i, v_i$,表示第 $i$ 个查询。如果 $t_i = 1$,则第 $i$ 个查询是 `ADD v_i` ($0 \le v_i \le 29$)。如果 $t_i = 2$,则第 $i$ 个查询是 `GET v_i` ($0 \le v_i \le 10^9$)。
输出数据格式:对于每个 `GET` 查询,如果可以选择一个子集使得和等于 $w$,则打印 `YES`;如果不可能,则打印 `NO`。题目大意:本题中,你初始时有一个空的多集合。您必须处理两种类型的查询: 1. `ADD x` — 向多集合中添加一个等于 $2^x$ 的元素; 2. `GET w` — 判断是否可以从当前多集合的某个子集中选取元素,使得它们的和等于 $w$。 输入数据格式:第一行包含一个整数 $m$ ($1 \le m \le 10^5$) — 查询的数量。然后是 $m$ 行,每行包含两个整数 $t_i, v_i$,表示第 $i$ 个查询。如果 $t_i = 1$,则第 $i$ 个查询是 `ADD v_i` ($0 \le v_i \le 29$)。如果 $t_i = 2$,则第 $i$ 个查询是 `GET v_i` ($0 \le v_i \le 10^9$)。 输出数据格式:对于每个 `GET` 查询,如果可以选择一个子集使得和等于 $w$,则打印 `YES`;如果不可能,则打印 `NO`。