QOJ.ac

QOJ

Time Limit: 10.0 s Memory Limit: 1024 MB Total points: 100

#11624. 背包与查询

Statistics

首先,给定一个正整数 $MOD$。 你有一个背包,初始时是空的。 你需要执行 $Q$ 次查询。

  • 在每次查询中,你必须先执行 ADDREMOVE 操作,然后执行 FIND 操作。
  • 对于 ADD 操作,给定正整数 $w$ 和 $v$。你将一个重量为 $w$、价值为 $v$ 的饼干放入背包中。
  • 对于 REMOVE 操作,你从背包中取出重量最小的饼干并吃掉它。
  • 在每次 ADDREMOVE 操作之后,你执行 FIND 操作:给定正整数 $l$ 和 $r$,回答以下问题:能否从背包中选择一些饼干,使得 $l \le (X \pmod{MOD}) \le r$(其中 $X$ 是所选饼干的重量之和)?如果不能,输出 $-1$。否则,输出所选饼干价值之和的最大值。

输入格式

输入按以下格式给出:

$MOD$ $Q$ $t'_1 \ w'_1 \ v'_1 \ l'_1 \ r'_1$ $t'_2 \ w'_2 \ v'_2 \ l'_2 \ r'_2$ $\dots$ $t'_Q \ w'_Q \ v'_Q \ l'_Q \ r'_Q$

数据范围

$0 \le t'_i, w'_i, v'_i, l'_i, r'_i \le 2^{30} - 1$,$2 \le MOD \le 500$,$1 \le Q \le 100\,000$。

查询已加密,具体描述如下。你可以通过解密 $t'_i, w'_i, v'_i, l'_i, r'_i$ 得到 $t_i, w_i, v_i, l_i, r_i$。

你可以假设 $1 \le w_i, v_i \le 10^9$,$0 \le l_i \le r_i \le MOD - 1$。当 $t_i = 1$ 时为 ADD+FIND 查询,$t_i = 2$ 时为 REMOVE+FIND 查询(此时 $w_i = v_i = 0$)。此外,由 ADD 操作给出的饼干总是比之前所有通过 ADD 添加的饼干更重,且执行 REMOVE 时背包不为空。

我们提供了 C++11(或更高版本)、Java、D 和 C# 的解密代码。请使用 Crypto 类进行解密。Crypto 类的代码及使用示例可从 http://opentrains.mipt.ru/~ejudge/crypto.zip 下载。

输出格式

对于每次查询,打印 FIND 操作的结果。

样例

样例输入 1

10
7
281614559 249378726 433981056
466775634 683612866
727071329 787572584 591471796
328464426 757737734
279580343 240336097 538846427
808491898 224313807
222498984 42804452 371605808
667115067 791865961
68683864 1045549765 515479514
1067782238 349547144
907343711 381772625 149003422
879314974 953881571
883899098 700164610 414212891
752949213 972845634

样例输出 1

10
0
-1
21
-1
11
111

样例输入 2

7
20
281614559 249378726 433981094
466775639 683612870
59536386 999828879 241246766
434670565 174365647
172060134 848462699 857413429
182122460 807914643
808426426 600772095 829463884
974102196 354283529
370037909 1024921880 664216868
194331103 140834169
917331875 242953442 205247688
335469789 1055568137
823475244 641321246 617915164
160300810 1073617378
892669150 939175632 904628449
606339993 1059849410
829170894 436718235 288920513
228195002 55212938
772189413 373108543 94133155
610930061 513937768
986619331 175674265 812546186
865335970 605634588
880196843 1071068047 723408215
587598264 380801783
393196081 141080294 584230885
135343295 661927186
5740819 967233824 22597607 888639499
467454437
365679801 515258603 989059385
962028117 761163096
357270919 737051059 569528959
935653628 70506031
869282414 947492121 280522456
96822010 856514221
155948699 826430734 291243254
381421299 617876780
980891674 833928389 1048677341
522527723 223764850
50617939 963598173 281959650
499436870 47455938

样例输出 2

0
134
90
158
-1
22
238
269
179
189
121
53
41
41
-1
58
-1
84
-1
149

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#300EditorialOpen题解jiangly2025-12-14 06:57:22View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.