注意到题目并没有t的范围喵,所以不开longlong查了半天都没发现问题喵,最后开longlong交了一发才过了喵
然后嘛,这道题不难看出根据题目的条件并没有说求出最大的题数,所以O(n)遍历就过去了喵
只要在每个地方判断当前的时间够不够做这道题,难度如何就好了喵,不难
但是说如果要求是按照题目顺序做的最大题数的话,把n的范围给小一点就是01背包的题了吧,大概喵
clcle的最大题数肯定是01背包喵
至于rqy我不太会喵
但是这里的地方太小,我写不下
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef __int128 i128;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int MOD = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int N = 1e6 + 10;
#define int long long
void solve()
{
int n,t;
cin>>n>>t;
int a,b;
cin>>a>>b;
vector<int> time(n + 1);
vector<int> difficulty(n + 1);
for (int i = 1 ; i <= n ; i++) cin>>time[i];
for (int i = 1 ; i <= n ; i++) cin>>difficulty[i];
int t1 = t,t2 = t,cnt1 = 0,cnt2 = 0;
for (int i = 1 ; i <= n ; i++)
{
if (t1 >= time[i] && a > difficulty[i])
{
t1 -= time[i];
cnt1++;
}
if (t2 >= time[i] && b > difficulty[i])
{
t2 -= time[i];
cnt2++;
}
else if (t2 >= 2 * time[i])
{
t2 -= 2 * time[i];
cnt2++;
}
}
cout<<cnt1<<' '<<cnt2<<'\n';
return;
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int _ = 1;
//std::cin>>_;
while (_--)
{
solve();
}
return 0;
}
/*
∧_∧
(。•́︿•̀。)
/づ正数与负数
都要开心计算哦
*/

京公网安备 11010502036488号