cf1282C 贪心 思维题
程序员文章站
2022-09-14 15:03:46
1282C 1800的题题意:现有n个题,你要在时间t内做这些题,其中这些题有容易的题表示为0,做完一题的时间为a,难的题表示为1,做完一题的时间为b,且a
1282C 1800的题
题意:现有n个题,你要在时间t内做这些题,其中这些题有容易的题表示为0,做完一题的时间为a,难的题表示为1,做完一题的时间为b,且a<b,现在添加一些限制条件,假设你离开的时间为s,那么对于ti<=s的题目将成为你必须要解决的题目,不然你的得分将变为0,现在求你能得到的最大分数是多少
思路:首先对于ti<=s的题目要先做完,然后假设如果你离开的时间为ti-1的话,那么在你完成ti-1之前的问题后,还能最多做出几道题,先做容易题,再做难题,贪心一下。所以这题的思路就出来了,枚举ti-1,即你离开的时间,然后按照上面的来就可以了
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#include <stack>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
#define rep(i, a, n) for(int i = a; i < n; i++)
#define per(i, a, n) for(int i = n-1; i >= a; i--)
#define IOS std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define INF 1ll<<60
#define fopen freopen("file.in","r",stdin);freopen("file.out","w",stdout);
#define fclose fclose(stdin);fclose(stdout);
const int maxn = 2e5+10;
inline int read(){
int x=0,f=1;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
struct node
{
int t, degree;
bool operator < (const node &x)&{
if(x.t==t){
return x.degree>degree;
}else return x.t>t;
}
};
node c[maxn];
int main(){
int m;
m = read();
while(m--){
int n=read(), t=read(), a=read(), b=read();
ll suma=0, sumb=0;
rep(i,0,n) {
c[i].degree=read();
if(c[i].degree==0) suma++;
else sumb++;
}
rep(i,0,n) c[i].t=read();
sort(c, c+n);
c[n].t=t+1;
ll cnta=0, cntb=0, ans=0;
rep(i,0,n+1){
ll tmp = cnta*a+cntb*b;
tmp = c[i].t-tmp-1;
if(tmp>=0){
ll ia=min(tmp/a, suma-cnta);
tmp -= ia*a;
ll ib=min(tmp/b, sumb-cntb);
ans = max(ans, cnta+cntb+ia+ib);
}
if(c[i].degree==0) cnta++;
else cntb++;
}
printf("%lld\n", ans);
}
return 0;
}
本文地址:https://blog.csdn.net/acm123456789ctf/article/details/107200437
上一篇: Mac Android Studio 常用快捷键大全
下一篇: Java 分布式事务理解
推荐阅读
-
一道有意思的思维题 --- 排序、枚举
-
hdu-1338 game predictions(贪心题)
-
poj3045 Cow Acrobats (思维,贪心)
-
poj-3253 fence repair(贪心题)
-
poj-1700 crossing river(贪心题)
-
loj#2509. 「AHOI / HNOI2018」排列(思维题 set)
-
洛谷P4424 [HNOI/AHOI2018]寻宝游戏(思维题)
-
AtCoder Beginner Contest 173(E 思维模拟 F 容斥 思维题 )
-
牛客多校第三场 A-Clam and Fish【贪心】+ B-Classical String Problem【思维】
-
思维暴力的贪心