Codeforces Round #610 (Div. 2)-C. Petya and Exam(贪心)

题目链接

题意:就是离开考场的时间,如果大于等于的某个题的ti时间,就必须做,求做题的最大数量。

贪心:先对ti排个序
然后从第一个ti-1.开始枚举
在每次枚举的时候同时记录在ti-1之前有多少个必须完成的简单题和难题
那么耗时m就为asum1+bsum2
如果ti-1还有剩余时间,就最大化的做简单题数量sum3
如果ti-1还有剩余时间,就最大化的做难题sum4
ans为sum1+sum2+sum3+sum4时间内可以完成的题数

#include
//typedef long long ll;
//#define ull       unsigned long long
#define int       long long
#define F           first
#define S           second
#define endl        "\n"
#define lowbit(x)   (x&(-x))
#define ferma(a,b)  pow(a,b-2)
#define pb          push_back
#define mp          make_pair
#define all(x)      x.begin(),x.end()
#define memset(a,b) memset(a,b,sizeof(a));
#define IOS         ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
using namespace std;
const double PI=acos(-1.0);
const int inf=0x3f3f3f3f;
const int MAXN=0x7fffffff;
const long long INF = 0x3f3f3f3f3f3f3f3fLL;
void file()
{
#ifdef ONLINE_JUDGE
#else
    freopen("cin.txt","r",stdin);
    //  freopen("cout.txt","w",stdout);
#endif
}
const int N=2e5+5;
pair<int,int>pa[N];
signed main()
{
    IOS;
    // file();
    int T;
    cin>>T;
    while(T--)
    {
        int n,t,a,b;
        vector<int>sum1(2),sum2(2);
        cin>>n>>t>>a>>b;
        for(int i=0; i<n; i++)
            cin>>pa[i].S,pa[i].S?sum1[1]++:sum1[0]++;
        for(int i=0; i<n; i++)
            cin>>pa[i].F;
        pa[n].F=t+1;
        n++;
        sort(pa,pa+n);
        int ans=0;
        for(int i=0; i<n; i++)
        {
            int temp=pa[i].F-1;
            int sum=sum2[0]*a+sum2[1]*b;
            int q=sum2[0]+sum2[1];
            temp-=sum;
            if(temp>0)
            {
                q+=min(temp/a,sum1[0]-sum2[0]);
                temp-=min(temp/a,sum1[0]-sum2[0])*a;

            }
            if(temp>0)
            {
                q+=min(temp/b,sum1[1]-sum2[1]);
                temp-=min(temp/b,sum1[1]-sum2[1])*b;

            }
            if(temp>=0)
                ans=max(ans,q);
            pa[i].S?sum2[1]++:sum2[0]++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

你可能感兴趣的:(#,贪心)