acwing 1715 桶列表

Posted 霜序0.2℃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了acwing 1715 桶列表相关的知识,希望对你有一定的参考价值。

题目

Farmer John 正在考虑改变他给奶牛挤奶的时候分配牛奶桶的方式。

他认为这最终能使得他使用数量更少的桶,然而他不清楚具体是多少,请帮助他!

Farmer John 有 NN 头奶牛,方便起见编号为 1…N1…N。

第 ii 头奶牛需要从时刻 sisi 到时刻 titi 之间挤奶,并且挤奶过程中需要用到 bibi 个桶。

多头奶牛可能在同一时刻都在挤奶;每个桶在每个时刻只能供一头奶牛使用。

也就是说,第 ii 头奶牛在时刻 sisi 到时刻 titi 之间挤奶时,如果用到了某个桶,则该桶在这段时间不能被其他奶牛使用。

当然,这个桶在这段时间之外可以被其他奶牛所使用。

为了简化他的工作,FJ 保证在任一时刻,至多只有一头奶牛开始或是结束挤奶(也就是说,所有的 sisi 和 titi 各不相同)。

FJ 有一个储藏室,里面有依次编号为 1、2、3、……1、2、3、…… 的桶。

在他的挤奶策略中,当某一头奶牛(比如说,奶牛 ii)开始挤奶(在时刻 sisi),FJ 就跑到储藏室取出编号最小的 bibi 个桶分配给第 ii 头奶牛用来挤奶。

请求出 FJ 需要在储藏室中存放多少个桶才能使得他能够顺利地给所有奶牛挤奶。

输入格式

输入的第一行包含 NN。

以下 NN 行,每行描述了一头奶牛,包含三个空格分隔的数 si,ti,bisi,ti,bi。

其中 sisi 和 titi 均为 1…10001…1000 之间的整数,bibi 为 1…101…10 之间的整数。

输出格式

输出一个整数,为 FJ 需要的桶的数量。

数据范围

1≤N≤1001≤N≤100

输入样例:

3
4 10 1
8 13 3
2 6 2

输出样例:

4

样例解释

在这个例子中,FJ 需要 44 个桶:他用桶 11 和桶 22 来给奶牛 33 挤奶(从时刻 22 开始)。

他用桶 33 给奶牛 11 挤奶(从时刻 44 开始)。

当奶牛 22 在时刻 88 开始挤奶时,桶 11 和桶 22 可以再次利用,然而桶 33 不可以,所以他会使用桶 11、桶 22 和桶 44。

解释和代码

根据题意,由于数据较少,可以新建一个桶,把 s i s_i si t i t_i ti的数量 b i b_i bi依次加上,然后遍历找max即可

#include <bits/stdc++.h>
#define pb          push_back
#define ppb         pop_back
#define lbnd        lower_bound
#define ubnd        upper_bound
#define endl        '\\n'
#define all(a)      (a).begin(),(a).end()
#define what_is(x)  cerr << #x << " is " << x << endl;
#define ini(a)      memset(a,0,sizeof(a))
#define case        ll T;read(T);for(ll Q=1;Q<=T;Q++)
#define lowbit(x)   x&(-x)
#define pr          printf
#define sc          scanf
#define TIE \\
    cin.tie(0);cout.tie(0);\\
    ios::sync_with_stdio(false);

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI    = acos(-1.0);
const int    INF   = 0x3f3f3f3f;
const ll     LLINF = 0x3f3f3f3f3f3f3f3f;
const int    maxn  = 9990;
const ll     N     = 5;

int flag[maxn] = 0;

void solve()
	int n, ans = 0;
	int s, t, b;
	cin>>n;
	for (int i=1; i<=n; i++) 
		cin>>s>>t>>b;
		for (int j=s; j<=t; j++) 
			flag[j] += b;
		
	
	for (int i=0; i<=1000; i++) 
		ans = max(ans, flag[i]);
	
	cout<<ans<<endl;


int main()

//	TIE;

	solve();
//    casesolve();
//    casecout<<"Case "<<Q<<":"<<endl;solve();

以上是关于acwing 1715 桶列表的主要内容,如果未能解决你的问题,请参考以下文章

Acwing第 7 场周赛未完结

bzoj1715 虫洞

Bzoj1715虫洞

acwing里的yxc是谁?

acwing是闫学灿自己写的吗

AcWing 274. 移动服务