https://www.luogu.com.cn/problem/P1167
模拟,贪心,排序
黄色题
思路:
1.计算出时间差
2.最后特别简单的贪心
读入:

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,time,ans;
int a[5010];
int m1[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int m2[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int start[10],endd[10];
bool check(int x)
{
if((x%4==0 && x%400!=0) || x%400==0)
return 1;
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
scanf("%d-%d-%d-%d:%d",&start[1],&start[2],&start[3],&start[4],&start[5]);
scanf("%d-%d-%d-%d:%d",&endd[1],&endd[2],&endd[3],&endd[4],&endd[5]);
for(int i=start[1];i<endd[1];i++)
{
if(check(i))
time+=366;
else
time+=365;
}
if(check(start[1]))
for(int i=1;i<start[2];i++)
time-=m2[i];
else
for(int i=1;i<start[2];i++)
time-=m1[i];
if(check(endd[1]))
for(int i=1;i<endd[2];i++)
time+=m2[i];
else
for(int i=1;i<endd[2];i++)
time+=m1[i];
for(int i=1;i<start[3];i++)
time--;
for(int i=1;i<endd[3];i++)
time++;
time=time*24*60;
time-=60*start[4]+start[5];
time+=60*endd[4]+endd[5];
for(int i=1;i<=n;i++)
{
if(time>=a[i])
{
time-=a[i];
ans++;
}
else
break;
}
printf("%d",ans);
return 0;
}

__EOF__
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战