思路 我们可以直接先排序贪心,每次选最大的,然后看它的时间是否过期。 然后就会超时,发现可以用并查集来优化时间: 每次把当前的货给选了之后,其他和他相同时间的货全部都要推到明天再去考虑,所以直接用并查集把和当天选了的货的时间相同的货并到明天的时间里去就行了。 代码 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,f[100010],ans; struct node { int d,p; }