P9207 灭罪「正直者之死」
P9207 灭罪「正直者之死」
贪心。
因为要取的和尽可能多,那么就是要求每一步取得和尽可能小。
考虑对正数和负数分组,排序。每次先取正数,取到不能再取为止,然后再取负数,这样就可以降小这个值,一直到极限为止。不断重复这一过程,直到不能取为止。
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
int a[N],b[N];
bool cmp(int x,int y){
return x>y;
}
int main()
{
int n,k,p=0,q=0,now=0,last1=1,last2=1;
cin>>n>>k;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x<0) p++,a[p]=x;
else q++,b[q]=x;
}
sort(a+1,a+p+1,cmp),sort(b+1,b+q+1);
while(1){
bool f=false;
for(int i=last1;i<=p;i++)
if(now+a[i]>=-pow(2,k-1)) f=true,now+=a[i],last1=i+1;
for(int i=last2;i<=q;i++)
if(now+b[i]<pow(2,k-1)) f=true,now+=b[i],last2=i+1;
if(f==false) break;
}
cout<<last1+last2-2<<endl;
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现