2026/2/5 4:40:48
网站建设
项目流程
网站建设怎么进行一级域名申请,平面设计师需要会什么软件,泉州seo用户体验,专业的丹徒网站建设题目地址#xff1a;
https://www.acwing.com/problem/content/113/
有NNN头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草#xff0c;所以可能会需要多个畜栏。给定NNN头牛和每头牛开始吃草的时间AAA以及结束吃草的时间BBB#xff0c;每头牛在[A,B][A,B][A,…题目地址https://www.acwing.com/problem/content/113/有N NN头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草所以可能会需要多个畜栏。给定N NN头牛和每头牛开始吃草的时间A AA以及结束吃草的时间B BB每头牛在[ A , B ] [A,B][A,B]这一时间段内都会一直吃草。当两头牛的吃草区间存在交集时包括端点这两头牛不能被安排在同一个畜栏吃草。求需要的最小畜栏数目和每头牛对应的畜栏方案。输入格式第1 11行输入一个整数N NN。第2.. N 1 2..N12..N1行第i 1 i1i1行输入第i ii头牛的开始吃草时间A AA以及结束吃草时间B BB数之间用空格隔开。输出格式第1 11行输出一个整数代表所需最小畜栏数。第2.. N 1 2..N12..N1行第i 1 i1i1行输出第i ii头牛被安排到的畜栏编号编号是从1 11开始的连续整数只要方案合法即可。数据范围1 ≤ N ≤ 50000 1≤N≤500001≤N≤50000,1 ≤ A , B ≤ 1000000 1≤A,B≤10000001≤A,B≤1000000本质上问题可以转换为给定若干闭区间要求将它们分组使得同一组内的区间两两不相交问最少的分组数和分组方案。思路和证明参考https://blog.csdn.net/qq_46105170/article/details/113734794。代码如下#includealgorithm#includeiostream#includequeueusingnamespacestd;constintN5e410;intn;structCow{intid,l,r;}cow[N];intres[N];intmain(){scanf(%d,n);for(inti1;in;i){cow[i].idi;scanf(%d%d,cow[i].l,cow[i].r);}sort(cow1,cow1n,[](autoc1,autoc2){returnc1.lc2.l;});autocmp[](autoc1,autoc2){returnc1.rc2.r;};priority_queueCow,vectorCow,decltype(cmp)heap(cmp);intid0;for(inti1;in;i){autoccow[i];if(heap.size()heap.top().rc.l){autoctopheap.top();heap.pop();res[c.id]res[ctop.id];}elseres[c.id]id;heap.push(c);}printf(%d\n,id);for(inti1;in;i)printf(%d\n,res[i]);}时间复杂度O ( N log N ) O(N\log N)O(NlogN)空间O ( N ) O(N)O(N)。