题意:

给你k件衣服处理,告诉你洗衣机烘干机折叠机的数量,和它们处理一件衣服的时间,要求一件衣服在洗完之后必须立刻烘干,烘干之后必须立刻折叠,问所需的最小时间。

思路:

1.按照时间模拟

2.若洗完的衣服或者烘干的衣服较多来不及进行下一个步骤,则从一开始就顺延洗衣服的时间,贪心的思想也是体现在这里。

3.关键在于烘干衣服的顺延如何处理,因为需要调整洗衣服的起始时间,其实我们只要对烘干衣服的时间进行顺延处理就可以了,因为即使没有调整洗衣服的起始时间,那么下次到了烘干衣服的时间的时候因为烘干衣服的数量仍然被占用,所以可以顺次延时洗衣服的起始时间。

4.一开始担心复杂度的问题,但是交了之后发现时间并不多...这个问题还在思考中...

#include<bits/stdc++.h>
using namespace std;
struct st{
long long time,num;
int id;
st(long long a,long long b,int c){
time=a;id=c;num=b;
}
};
bool operator < (const st &a,const st &b){
if(a.time!=b.time)
return a.time<b.time;
return a.id>b.id;
}
multiset<st>a;
int main()
{
int k,n1,n2,n3,t1,t2,t3;
scanf("%d%d%d%d%d%d%d",&k,&n1,&n2,&n3,&t1,&t2,&t3);
long long a1,a2;
a1=a2=0;
a.insert(st(t1,n1,1));
while(k>0){
st tmp=*a.begin();
a.erase(a.begin());
//printf("%d %lld %lld\n",tmp.id,tmp.time,tmp.num);
if(tmp.id==1){
if(n2){
a.insert(st(tmp.time+t2,min((long long)n2,tmp.num),2));
a.insert(st(tmp.time+t1,min((long long)n2,tmp.num),1));
}
if(tmp.num>n2){
a.insert(st(tmp.time+1,tmp.num-n2,1));
}
n2-=min((long long)n2,tmp.num);
}
else if(tmp.id==2){
if(n3){
a.insert(st(tmp.time+t3,min((long long)n3,tmp.num),3));
}
if(tmp.num>n3){
a.insert(st(tmp.time+1,tmp.num-n3,2));
}
n2+=min((long long)n3,tmp.num);
n3-=min((long long)n3,tmp.num);
}
else{
k-=tmp.num;
n3+=tmp.num;
if(k<=0){printf("%I64d\n",tmp.time);return 0;}
}
}
}

Codeforces 452D [模拟][贪心]的更多相关文章

  1. CodeForces - 158B.Taxi (贪心)

    CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...

  2. Codeforces Round #375 (Div. 2) A B C 水 模拟 贪心

    A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...

  3. Codeforces Round #370 (Div. 2) A B C 水 模拟 贪心

    A. Memory and Crow time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维

    题意:博弈题面  给出一个数字序列 (>=11)  有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手  数字序列一定是奇 ...

  5. Codeforces Round #288 (Div. 2) C. Anya and Ghosts 模拟 贪心

    C. Anya and Ghosts time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. Codeforces Round #482 (Div. 2) B、Treasure Hunt(模拟+贪心)979B

    题目 大致题意 n表示要进行n次操作,接着给出三个字符串,表示三个人初始拥有的串.每次操作要替换字符串中的字母,询问最后在游戏中曾出现过的相同的子串谁最多. 思路 (1)  讨论最多的子串,肯定是全部 ...

  7. Codeforces 980 并查集/模拟贪心最小字典序 找规律/数去除完全平方因子 逆思维倍增预处理祖先标记点

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  8. Codeforces 950C Zebras ( 贪心 && 模拟 )

    题意 : 给出一个 01 串,要求你将其分隔出若干个子序列 ( 每个数字只能属于某一个子序列 ) ,子序列必须满足由 0 开头和结尾,且中间需 01 交替构成.若无法做到,则输出 -1. 分析 :  ...

  9. CodeForces 6C(贪心 + 模拟)

    题目链接 思路如下 贪心的思想,⚠️女士优先的策略,当它们吃掉之前的物品所用的时间相同的时候,此时女士先开始 继续吃 题解如下 #include<iostream> using names ...

随机推荐

  1. C# 爬虫批量下载文件

    public static void DownFile(string url, string path, string fileName) { HttpWebRequest request = (Ht ...

  2. CSS 使用小结

    1.文字过长显示省略号(....)  white-space: nowrap;overflow: hidden;text-overflow: ellipsis; 2.获取当前的ID : <asp ...

  3. 解决Centos6.5虚拟机上网问题

    起初是为了能通过上网的方式简化g++的安装,故有此篇博文,希望能帮助到有需要的人. 虚拟机环境: 1.Linux系统:Centos6.5 64位 2.ifconfig查看虚拟机ip:竟然没有ip! 3 ...

  4. 06文件与IO

    这节主要学习系统调用stat.lstat.fstat. 格式如下: int fstat(int filedes, struct stat *buf); int stat(const char *pat ...

  5. android学习笔记43——图形图像处理3——Path

    Path类 Path类可以预先在View上将N个点连成一条“路径”,然后调用Canavas的drawPath(path,paint)即可沿着路径绘制图形. android还为路径绘制提供了PathEf ...

  6. 我的IT相关网址收藏

    it语言学习免费视频: 尚学堂:http://www.sxt.cn/ 慕课网:http://www.imooc.com/course/list 大学生自学网:http://v.dxsbb.com/ 尚 ...

  7. MVC entity

    1>MVC entity 1)Employee public string Id{get;private set;} public string Name{get;private set;} p ...

  8. windows server 2012将计算机、回收站、文档等图标添加到桌面

    rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

  9. 22个值得收藏的Android开源代码-UI篇

    本文介绍了android开发者中比较热门的开源代码,这些代码绝大多数可以直接应用到项目中. FileBrowserView 一个强大的文件选择控件.界面比较漂亮,使用也很简单.特点:可以自定义UI:支 ...

  10. DBA_Oracle Erp版本升级12.1.1到R12.1.3(案例)

    20150506 Created By BaoXinjian