肝任务(中二羊)
肝任务(task.cpp)
题面
【题目描述】
众所周知,敢玩手机游戏的人不是氯金大佬(能充钱)就是绝世肝帝(大量时间在线)。ZEY最近迷上了一款手机游戏,当然,ZEY非常穷,只能投入大量时间来肝任务,尽管ZEY浑身是肝,但是面对阴险的游戏策划,他终于肝!不!动!了!
现在这款游戏又在周末搞活动了,要达成活动成就需要不低于
已知完成第
【输入说明】
输入文件名为task.in
。输入为多行
第一行输入4个整数,分别是
接下来k行,每—行输入两个整数,分别是
【输出说明】
输出文件名为task.out
。输出—行,分两种情况:
- 如果能达成活动成就,输出大写字母
以及最大的不恶心程度,用空格隔开 - 如果不能达成活动成就,输出大写字母
以及最多的活跃值,用空格隔开
输入样例1:
1 5 5 5 5
1 1
输出样例1:
Y 0
输入样例2:
2 12 8 3
3 1
4 3
输入样例2:
N 11
【样例说明】
对于样例1,完成
对于样例2,容易证明无法达成,当完成1次人物1或2次任务2时,活跃值最大为
【数据范围】
题解
题目考点:动态规划,动规,dp。背包。
背包特点:二维背包。
方程:
翻译方程: 对于第
- 做:
- 不做:
选择方案是选最大值,所以
所以代码:
for(int i=1;i<=k;++i)
for(int j=1;j<=t;++j)
for(int p=kkk[i][1];p<=m;++p)
dp[j][p]=max(dp[j][p],dp[j-1][p-kkk[i][1]]+kkk[i][0]);
但是题目要求求最不恶心程度,所以设置一个bool类型的变量来设置,如下:
bool fff=false;
/*循环代码跳过,方程跳过。*/
if(dp[j][p]>=n)fff=true,ans=max(ans,m-p);
这里求的是最不恶心程度的最大值,也可以求最恶心程度的最小值。即
ans=0x7f7f7f7f7f;
/*省略一些代码*/ans=min(ans,p);
输出:
然后就贴代码:
#include<iostream>
#include<cstdio>
using namespace std;
class QIO{
public:
inline int read(){
x=0,f=1,ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-f;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return x*f;
}
inline void write(int a){
if(a<0)a=-a,putchar('-');
output((unsigned int)a);
}
private:
void output(unsigned int a){
if(a>9)output(a/10);
putchar((a%10)^48);
}
int x;
short f;
char ch;
};
QIO qrw;//快速输入输出
int kkk[200][2],dp[1001][1001];
signed main(){
freopen("task.in","r",stdin);
freopen("task.out","w",stdout);
int k,n,m,t,ans=0;
k=qrw.read();
n=qrw.read();
m=qrw.read();
t=qrw.read();
bool fff=false;
for(int i=1;i<=k;++i){
kkk[i][0]=qrw.read();
kkk[i][1]=qrw.read();
}
for(int i=1;i<=k;++i)
for(int j=1;j<=t;++j)
for(int p=kkk[i][1];p<=m;++p){
dp[j][p]=max(dp[j][p],dp[j-1][p-kkk[i][1]]+kkk[i][0]);
if(dp[j][p]>=n)fff=true,ans=max(ans,m-p);
}
if(fff){
putchar('Y');
putchar(' ');
qrw.write(ans);
}else{
putchar('N');
putchar(' ');
qrw.write(dp[t][m]);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!