这题写得头晕……明天我再评价

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 1010
#define MAX 0x06FFFFFF
#define V vector<int> using namespace std; set<string> printTitle; typedef struct Record{
string name;
int month,dd,hh,mm;
int isOn;
Record(){}
Record(const Record& o){
name=o.name;month=o.month;dd=o.dd;hh=o.hh;mm=o.mm;isOn=o.isOn;
}
}Record; Record info[LEN];
int rate[];
int one_day_bill=; void init_one_day_bill(){
int i;
FF(i,){
one_day_bill+=*rate[i];
}
} bool cmp(Record a,Record b){
/*
if(a.name<b.name) return true;
else if(a.mouth<b.mouth) return true;
else if(a.dd<b.dd) return true;
else if(a.hh<b.hh) return true;
else if(a.mm<b.mm) return true;
return false;*/
if(a.name!=b.name) return a.name<b.name;
else if(a.month!=b.month) return a.month<b.month;
else if(a.dd!=b.dd) return a.dd<b.dd;
else if(a.hh!=b.hh) return a.hh<b.hh;
else return a.mm<b.mm;
} void diff(Record a,Record b,int& minute,int& money){
// minute=b.mm-a.mm+(b.hh-a.hh)*60+(b.dd-a.dd)*24*60;
// int i;
// money=0;
// if(a.dd!=b.dd)
// money+=(b.dd-a.dd)*one_day_bill;
// if(a.hh==b.hh) money=minute*rate[a.hh];
// else{
// for(i=a.hh;i<=b.hh;i++){
// if(i==a.hh) money+=(60-a.mm)*rate[i];
// else if(i==b.hh) money+=(b.mm)*rate[i];
// else money+=(60)*rate[i];
// }
// }
Record tmp=a;
minute=;money=;
while(tmp.dd<b.dd || tmp.hh< b.hh || tmp.mm < b.mm){
minute++;
money+=rate[tmp.hh];
tmp.mm++;
if(tmp.mm>=){
tmp.mm=;
tmp.hh++;
}
if(tmp.hh>=){
tmp.hh=;
tmp.dd++;
}
}
} int main(){
freopen("d:/input/A1016.txt","r",stdin);
int n,i;
FF(i,){
scanf("%d",&rate[i]);
}
init_one_day_bill();
scanf("%d",&n);
FF(i,n){
char buffer[];
I("%s",buffer);
I("%d:%d:%d:%d",&info[i].month,&info[i].dd,&info[i].hh,&info[i].mm);
info[i].name=buffer;
I("%s",buffer);
if(string(buffer)=="on-line") info[i].isOn=;
else info[i].isOn=;
}
sort(info,info+n,cmp); int on=,off,next;
while(on<n){
int needPrint=;
next=on;
while(next<n && info[next].name==info[on].name){
if(needPrint== && info[next].isOn){
needPrint=;
}else if(needPrint== && info[next].isOn==){
needPrint=;
}
next++;
}
// printf("%d\n",needPrint);
if(needPrint<){
on=next;
continue;
}
int allMoney=;
O("%s %02d\n",info[on].name.c_str(),info[on].month);
while(on<next){
while(on<next- && !(info[on].isOn&&info[on+].isOn==)) on++;
off=on+;
if(off==next){
on=next;
break;
}
Record a=info[on],b=info[off];
int minute;
int money;
diff(a,b,minute,money);
allMoney+=money;
O("%02d:%02d:%02d %02d:%02d:%02d %d $%.2lf\n",a.dd,a.hh,a.mm,b.dd,b.hh,b.mm,minute,money/.);
on=off+;
}
O("Total amount: $%.2lf\n",allMoney/.);
}
return ;
}

A1016 | 磨人的大模拟的更多相关文章

  1. Bzoj1972: [Sdoi2010]猪国杀 题解(大模拟+耐心+细心)

    猪国杀 - 可读版本 https://mubu.com/doc/2707815814591da4 题目可真长,读题都要一个小时. 这道题很多人都说不可做,耗时间,代码量大,于是,本着不做死就不会死的精 ...

  2. HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛

    题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...

  3. AC日记——神奇的幻方 洛谷 P2615(大模拟)

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  4. ACdream 1188 Read Phone Number (字符串大模拟)

    Read Phone Number Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Sub ...

  5. 磨人的Fragment的转换

    磨人的Fragment的转换 本次任务是 程序运行之后将第一个Fragment加载出来 然后点击"SHOW NEXT PAGE"切换到第二个Fragment 当再次点击按钮时下方出 ...

  6. 2016ACM-ICPC网络赛北京赛区 1001 (trie树牌大模拟)

    [题目传送门] 1383 : The Book List 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The history of Peking University ...

  7. (大模拟紫题) Luogu P1953 易语言

    原题链接:P1953 易语言 (我最近怎么总在做大模拟大搜索题) 分别处理两种情况. 如果只有一个1或0 直接设一个cnt为这个值,每次输入一个新名字之后把数字替换成cnt,最后cnt++即可. 注意 ...

  8. NOIP2017 时间复杂度 大模拟

    再写一道大模拟题. 由于是限时写的,相当于考场代码,乱的一批. 题目链接:P3952 时间复杂度 先记几个教训: 字符串形式的数字比较大小老老实实写函数,字典序都搞错几次了 栈空的时候不但pop()会 ...

  9. [CSP-S模拟测试]:引子(大模拟)

    题目描述 网上冲浪时,$Slavko$被冲到了水箱里,水箱由上而下竖直平面.示意图如下: 数字$i$所在的矩形代表一个编号为$i$的水箱.1号水箱为水箱中枢,有水管连出.除了$1$号水箱外,其他水箱上 ...

随机推荐

  1. Kubernetes学习续之一键部署kubeadm

    1.Kubernetes的架构和组件,在部署时,它的每一个组件都是一个需要被执行的.单独的二进制文件,所以不难想象,SaltStack这样的运维工具或由社区维护的脚本的功能,就是要把这些二进制文件传输 ...

  2. fail fast和fail safe策略

    优先考虑出现异常的场景,当程序出现异常的时候,直接抛出异常,随后程序终止 import java.util.ArrayList; import java.util.Collections; impor ...

  3. C#读取Excel文件,准换为list

    经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径{try{ ...

  4. Smack Extensions用户手册

    Smack Extensions用户手册 XMPP协议包括基本协议和许多可选扩展,通常记录为“XEP”.Smack为核心XMPP协议提供了org.jivesoftware.smack包,为许多协议扩展 ...

  5. nc 从服务器上传下载文件

    1.安装 nc # yum install nc -y 2.下载文件 // 在 45.77.17.128 这台主机监听 9988 端口(注意符号是 "<" ) # nc -l ...

  6. Django:RestFramework之-------路由

    11.路由 路由设置: url(r'^(?P<version>[v1|v2]+)/vview\.(?P<format>\w+)$', views.VView.as_view({ ...

  7. 【MySQL】查看建表语句

    命令如下: SHOW CREATE TABLE tbl_name 例子: mysql> show create table m_zhbess_vehicle_report\G ********* ...

  8. ML- 核函数(Kernel) 的 SVM

    Why 核函数 目的是为了解决线性不可分问题. 核心思想是升维. 当样本点在低维空间不能很好地分开的时候, 可以考虑将样本通过某种映射(就是左乘一个矩阵) 到高维空间中, 然后在高维空间就容易求解一个 ...

  9. prometheus学习系列十一: Prometheus 报警规则配置

    prometheus监控系统的的报警规则是在prometheus这个组件完成配置的. prometheus支持2种类型的规则,记录规则和报警规则, 记录规则主要是为了简写报警规则和提高规则复用的, 报 ...

  10. centos 7 新机器安装部署配置

    首先卸载openjdk,安装jdk 1.查看java版本 [lambert@localhost ~]$ java -version openjdk version "1.8.0_102&qu ...