P11289求调求解!!
  • 板块学术版
  • 楼主The_First_LKing
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/24 15:09
  • 上次更新2024/11/24 17:03:04
查看原帖
P11289求调求解!!
781485
The_First_LKing楼主2024/11/24 15:09

题目传送门

问题一:

结构体里的vector如何排序(就是将此打印机需要打印的文件目录按从小到大排序)

struct dy{
	int wt;
	vector <int> xd;
}b[maxn];

问题二:

它对样列一的解释为: 故三台打印机分别打印了编号为

[ 1 , 2 ] , [ 3 ] , [ ] [1,2],[3],[] 的文件

那为啥输出为

2 1 2

1 3

0

不应该为

1 1 2

2 3

0 吗???


蒟蒻代码奉上,求大神调解!!!

#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
int n=0,m=0;
struct wj{
	int v;//存文件目录名
	int t;//需要打印时间
	int x;//下发时间
}a[maxn];
struct dy{
	int wt;//存储下次能打印的时间
	vector <int> xd;//存打印文件的目录名
}b[maxn];
int cmp(wj a,wj b){
	return a.x<b.x;
}

void read(){
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		cin>>a[i].t>>a[i].x;
		a[i].v=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			if(a[i].x>=b[j].wt){//到达该打印机能打印的时间就打印
				b[j].wt=a[i].x+a[i].t;
				b[j].xd.push_back(a[i].v);
				break;
			}
		}
	}
	for(int i=1;i<=m;++i){
		if(!b[i].xd.empty()){
			cout<<i<<" ";
			for(int j=0;j<b[i].xd.size();++j){
				cout<<b[i].xd[j];
				cout<<" ";
			}
			cout<<endl;
		}
		else {
			cout<<"0"<<endl;
		}
	}
}

int main(){
	read();
	return 0;
}
2024/11/24 15:09
加载中...