UVa 12563_Jin Ge Jin Qu hao
2024-09-08 05:44:53
【题意】在KTV唱歌,假设每首歌最长180s,时间结束时如果还有歌正在唱,则将此歌唱完。为使唱歌时间最长,规定最后唱长达678s的《劲歌金曲》【介是个嘛?】
假设你正在唱KTV,在剩余的t秒时间里,在给定时长的n首歌里(不包括劲歌金曲),要尽可能的多唱。即 在唱的总曲目尽量多的前提下,尽量晚的离开KTV。求唱的总曲目及唱的时间总长度。
【分析】01背包先求最大的曲目数,再在此前提下求从最后遍历数组获取此前提下的最长时间,最后输出加上678
【代码】
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
using namespace std;
int v[100000];
int t[60];
int n,total;
const int mod=int(1e9)+7,INF=-1000000000,maxn=1e5+40;
void ZeroOnePack(int Case)
{
fill(v,v+100000,INF);
v[0]=0;
int temp=0;
for(int i=0;i<n;i++)
{
for(int j=total-1;j>=t[i];j--)
{
v[j]=max(v[j],v[j-t[i]]+1);
if(v[j]>temp) temp=v[j];
}
}
for(int i=total-1;i>=0;i--)
{
if(v[i]==temp)
{
cout<<"Case "<<Case+1<<": "<<temp+1<<" "<<i+678<<endl;
return;
}
}
}
int main (void)
{
int Case;
int Max=0;
cin>>Case;
for(int i=0;i<Case;i++)
{
cin>>n>>total;
memset(t,0,sizeof(t));
for(int j=0;j<n;j++) cin>>t[j];
ZeroOnePack(i);
}
}
最新文章
- ASP.NET Web API系列教程目录
- python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
- Spring MVC前台使用html页面作为视图,配置静态资源后Controller控制器不起作用的解决办法
- Python Paramiko模块安装和使用
- linux笔记:文件编辑器vim
- Android 之 用WebView显示网页
- PropertyGrid排序
- 什么是REST架构(转)
- Messenger实现Android IPC
- Beyond Compare 使用介绍
- 查看ssh服务开启状态
- careercup-递归和动态规划 9.1
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
- Biztalk AS2开发经验总结
- Visual Studio Code 配置C++环境
- .Net MVC5异步请求Entity Framework 无限循环解决方法
- [Swift]LeetCode904. 水果成篮 | Fruit Into Baskets
- DataTable行列转换
- 英语发音规则---I字母常见发音组合有哪些
- 第01章 准备工作.md