CF1804G.Flow Control
NOI/NOI+/CTSC
通过率:0%
时间限制:6.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Raj has a single physical network line that connects his office to the Internet. This line bandwidth is b bytes per millisecond.
There are n users who would like to use this network line to transmit some data. The i-th of them will use the line from millisecond si to millisecond fi inclusive. His initial data rate will be set to di. That means he will use data rate equal to di for millisecond si, and then it will change according to the procedure described below.
The flow control will happen as follows. Suppose there are m users trying to transmit some data via the given network line during millisecond x. Denote as ti the data rate that the i-th of these m users has at the beginning of this millisecond. All ti are non-negative integer values.
- If m=0, i. e. there are no users trying to transmit data during this millisecond, nothing happens.
- If the sum of all ti is less than or equal to b, each active user successfully completes his transmission (the i-th active user transmits ti bytes). After that, the data rate of each active user grows by 1, i. e. each ti is increased by 1.
- If the sum of all ti is greater than b, the congestion occurs and no data transmissions succeed this millisecond at all. If that happens, each ti decreases twice, i. e. each ti is replaced with ⌊2ti⌋.
Raj knows all the values n, b, si, fi, and di, he wants to calculate the total number of bytes transmitted by all the users in the aggregate.
拉吉拥有一条连接其办公室与互联网的物理网络线路。该线路的带宽为 b 字节/毫秒。
共有 n 个用户希望使用该网络线路传输数据。其中第 i 个用户将在毫秒 si 至毫秒 fi(含端点)期间使用该线路。其初始数据速率为 di,即:在毫秒 si 时,其数据速率被设为 di;此后,该速率将按如下所述规则变化。
流量控制过程如下:假设在毫秒 x 期间,有 m 个用户试图通过该网络线路传输数据。记这 m 个用户在该毫秒开始时的数据速率分别为 ti(i=1,2,…,m)。所有 ti 均为非负整数。
- 若 m=0,即该毫秒内无用户尝试传输数据,则不发生任何操作。
- 若所有 ti 的总和小于或等于 b,则每个活跃用户均成功完成本次传输(第 i 个活跃用户传输 ti 字节)。此后,每个活跃用户的数据速率增加 1,即每个 ti 均加 1。
- 若所有 ti 的总和大于 b,则发生拥塞,该毫秒内所有数据传输均失败。此时,每个 ti 减半(向下取整),即每个 ti 被替换为 ⌊2ti⌋。
拉吉已知所有参数 n、b、si、fi 和 di,他希望计算所有用户传输的字节总数。
输入格式
The first line of the input contains two integers n and b (1≤n≤2⋅105, 1≤b≤109), the number of users who will use the line and the line bandwidth, respectively.
Each of the following n lines contains three integers si, fi and di (1≤si≤fi≤109, 1≤di≤109), denoting that the i-th user will try to transmit data during each millisecond between si and fi inclusive, and the initial data rate of the i-th user.
输入的第一行包含两个整数 n 和 b(1≤n≤2⋅105,1≤b≤109),分别表示将使用该线路的用户数量和线路带宽。
接下来的 n 行中,每行包含三个整数 si、fi 和 di(1≤si≤fi≤109,1≤di≤109),表示第 i 个用户将在每个介于 si 与 fi(含端点)之间的毫秒时刻尝试传输数据,且第 i 个用户的初始数据传输速率为 di。
输出格式
Print one integer — the total number of bytes all users will successfully transmit.
输出一个整数——所有用户成功传输的字节数总和。
输入输出样例
输入#1
1 3 1 5 2
输出#1
10
输入#2
1 10 7 11 1000
输出#2
0
输入#3
2 6 1 12 1 8 20 3
输出#3
64
输入#4
3 10 1 100 1 30 60 20 40 80 6
输出#4
534
说明/提示
Consider the first example.
- Millisecond 1: User 1 transmits 2 bytes.
- Millisecond 2: User 1 transmits 3 bytes.
- Millisecond 3: Congestion occurs, and no user transmits data.
- Millisecond 4: User 1 transmits 2 bytes.
- Millisecond 5: User 1 transmits 3 bytes.
In the second example, at each millisecond from the 7-th to the 11-th inclusive, congestion occurs, and the only user decreases their rate twice. However, they don't decrease the speed enough before disconnecting.
Consider the third example.
- Millisecond 1: User 1 transmits 1 bytes.
- Millisecond 2: User 1 transmits 2 bytes.
- Millisecond 3: User 1 transmits 3 bytes.
- Millisecond 4: User 1 transmits 4 bytes.
- Millisecond 5: User 1 transmits 5 bytes.
- Millisecond 6: User 1 transmits 6 bytes.
- Millisecond 7: Congestion occurs, and no user transmits data.
- Millisecond 8: User 1 transmits 3 bytes. User 2 transmits 3 bytes.
- Millisecond 9: Congestion occurs, and no user transmits data.
- Millisecond 10: User 1 transmits 2 bytes. User 2 transmits 2 bytes.
- Millisecond 11: User 1 transmits 3 bytes. User 2 transmits 3 bytes.
- Millisecond 12: Congestion occurs, and no user transmits data.
- Millisecond 13: User 2 transmits 2 bytes.
- Millisecond 14: User 2 transmits 3 bytes.
- Millisecond 15: User 2 transmits 4 bytes.
- Millisecond 16: User 2 transmits 5 bytes.
- Millisecond 17: User 2 transmits 6 bytes.
- Millisecond 18: Congestion occurs, and no user transmits data.
- Millisecond 19: User 2 transmits 3 bytes.
- Millisecond 20: User 2 transmits 4 bytes.
考虑第一个例子。
- 第 1 毫秒:用户 1 传输 2 字节。
- 第 2 毫秒:用户 1 传输 3 字节。
- 第 3 毫秒:发生拥塞,无用户传输数据。
- 第 4 毫秒:用户 1 传输 2 字节。
- 第 5 毫秒:用户 1 传输 3 字节。
在第二个例子中,从第 7 毫秒到第 11 毫秒(含)的每一毫秒均发生拥塞,且唯一用户将其传输速率降低了两次。然而,在断开连接前,其降速幅度仍不足。
考虑第三个例子。
- 第 1 毫秒:用户 1 传输 1 字节。
- 第 2 毫秒:用户 1 传输 2 字节。
- 第 3 毫秒:用户 1 传输 3 字节。
- 第 4 毫秒:用户 1 传输 4 字节。
- 第 5 毫秒:用户 1 传输 5 字节。
- 第 6 毫秒:用户 1 传输 6 字节。
- 第 7 毫秒:发生拥塞,无用户传输数据。
- 第 8 毫秒:用户 1 传输 3 字节,用户 2 传输 3 字节。
- 第 9 毫秒:发生拥塞,无用户传输数据。
- 第 10 毫秒:用户 1 传输 2 字节,用户 2 传输 2 字节。
- 第 11 毫秒:用户 1 传输 3 字节,用户 2 传输 3 字节。
- 第 12 毫秒:发生拥塞,无用户传输数据。
- 第 13 毫秒:用户 2 传输 2 字节。
- 第 14 毫秒:用户 2 传输 3 字节。
- 第 15 毫秒:用户 2 传输 4 字节。
- 第 16 毫秒:用户 2 传输 5 字节。
- 第 17 毫秒:用户 2 传输 6 字节。
- 第 18 毫秒:发生拥塞,无用户传输数据。
- 第 19 毫秒:用户 2 传输 3 字节。
- 第 20 毫秒:用户 2 传输 4 字节。
输入解题思路,AI测评打分。不知道怎么写?