Gym 100625A 间谍租车问题-简单模拟-(map的使用)

题意:输入多种车的事故赔偿价格、租车起步价、每千米单价,输入多个人的多种事件(租车、还车、发生事故),按名字字典序输出每个人的总费用,如果信息不完整或不合法输出“inconsitent"(租车、事故、还车的顺序得对,一个人同时期不能租多辆车,租车还车要完整不能只租不还或没租却还)

分析:这题就是一个简单的模拟,复杂在我不知道怎么用string做关键字,知道了map,一切都好办了。小trick:一个人可以多次租车还车。

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<map>
using namespace std;
int t,n,m;
struct node1{
    int a,b,c;
};
struct node2{
    int time;
    string a,b;
    int state,ans;
    string car;
    node2(int state=0,int ans=0):state(state),ans(ans){}
};
map<string,node1> car;
map<string,node2> man;
int main()
{
    cin>>t;
    while(t--){
        car.clear();
        man.clear();
        cin>>n>>m;
        string s;
        int a,b,c;
        while(n--){
            cin>>s>>a>>b>>c;
            car[s].a=a;
            car[s].b=b;
            car[s].c=c;
        }
        string x,y,z;
        while(m--){
            cin>>a>>x>>y>>z;
            man[x].a=y,man[x].b=z;
            if(man[x].state!=-1){
                if(y=="p"){
                    if(man[x].state==0||man[x].state==2){
                        man[x].state=1;
                        man[x].car=z;
                        man[x].ans+=car[z].b;
                    }
                    else{
                        man[x].state=-1;
                    }
                }
                else if(y=="r"){
                    if(man[x].state==1){
                        man[x].state=2;
                        int ans=0;
                        for(int i=0;i<z.size();i++){
                            ans=ans*10+(z[i]-'0');
                        }
                        man[x].ans+=ans*car[man[x].car].c;
                    }
                    else man[x].state=-1;
                }
                else if(y=="a"){
                    if(man[x].state==1){
                        int ans=0;
                        for(int i=0;i<z.size();i++){
                            ans=ans*10+(z[i]-'0');
                        }
                        man[x].ans+=(int)ceil((double)ans*car[man[x].car].a/100);
                    }
                    else man[x].state=-1;
                }
            }

        }
        map<string,node2>::iterator it;
        for(it=man.begin();it!=man.end();it++){
            if(((*it).second.state!=2)) cout<<(*it).first<<" INCONSISTENT"<<endl;
            else cout<<(*it).first<<" "<<(*it).second.ans<<endl;
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 23:55:58

Gym 100625A 间谍租车问题-简单模拟-(map的使用)的相关文章

简单的租车系统

完成了一个简单的租车系统.实现简单的租车功能,用户选择租车序号和每辆车所租的天数,计算出租车所需要的费用. /* * 使用gbk编码 */ package adad; import java.util.Scanner; import javax.print.DocFlavor.INPUT_STREAM; import org.omg.CORBA.PUBLIC_MEMBER; /* * 创建汽车类 */ abstract class car{ public void man(){ System.o

初学者:简单的租车程序(敲了一晚)(想大神看看,为啥我一个简单的程序要敲这么多,可以怎么改进?)

/** * 创建一个接口实现租凭方法 * */package com.lxl.car; public interface Rent { void rent(int day,int num);} /** * 定义一个抽象的汽车类 属性:颜色,型号 ,租车的价格 * */package com.lxl.car; public abstract class Car implements Rent{ //构造方法 public Car(){} private String size;// 型号 priv

继承、封装和多态的一个简单应用(答答租车系统)

Car.java package com.imooc; //使用面向对象的封装特性public class Car {    // 描述汽车可能有特征    private String name; // 车的名称    private double cargoCapacity;// 车的载货量    private int busLoad;// 车的载客量    private int dailyRent;// 车的日租金 public String getName() {        re

有钱就得任性 PP租车推全额赔付 创始人自代言

近期,作为最先在国内P2P租车市场尝鲜的PP租车又在玩大的了,11月初刚刚完成另同行羡慕的6000万美元B轮融资后,这两天其联合创始人王嘉明又高调的为自家PP租车代言,在微博上公开了个人的微信及电话,如此"大胆"的做法引起不少网友围观. 自PP租车2013年10月进入国内市场之后就迅速发展,并在2014年下半年成为互联网创新领域的最受关注的焦点话题之一,不少舆论媒体愿意将PP租车与神州.一嗨租车做比较,PP租车所代表的互联网经济力量所带来的市场冲击力正在动摇神州.一嗨等引领的传统租车市

想让P2P租车成为赚钱行业,刷单和拼嗓门都是死路

刷单.拉风投.玩补贴,目前P2P租车这点小玩意都算不上什么新闻,因为它的互联网前辈都是怎么玩的,只不过,这条前人的路,现在已经很难走不通了,因为它陷入了一个死循环,不赚钱的死循环. 文/张书乐 在出现零和博弈并最终决胜出个位数的生存者之前,租车行业的佼佼者们或许先被这个死结所勒死. 租车行业当下的死结 先说刷单.在5月中旬,首先是央广新闻调查发现,打车应用因为补贴的存在,而滋生了一个行当:刷单.坐在家里有的就能日赚几百. 而这种带有典型第三方行为的方式,却在打车应用的孪生兄弟P2P租车行业(车主

报名-体检-上理论课-理论考-模拟1-练车-场考-模拟2 - 练车 - 路考-理论考- 拿驾照

报名-体检-上理论课-理论考-模拟1-练车-场考-模拟2 - 练车 - 路考-理论考- 拿驾照 模拟就是玩玩的那边教室里有汽车的模型的~里面有方向盘~刹车~离合~就是上车前的铺垫~模拟有两次~第一次主要是老师讲为主~你们跟着玩!第二次是有屏幕的你要按那要求完成操作~模拟其实是很简单的没有考试~杭州有很多模拟点~你可以问驾校老师~北大桥有一个~有很多点~你模拟预约的时候可以问他们把你的地点告诉他们他们会给你一个最近的地点~~~~~~~驾驶员模拟预约就是预约一个时间~到了时间你自己去~第一次模拟好了

P2P租车想在不顾用户风险的同时把钱挣了?

打个不恰当的比喻,其实P2P租车和之前火爆过的外卖电商相似,方便快捷只是其用户体验的卖点,而且不是唯一.反而,风险控制则是在方便之上的真正用户体验和保障. 文/张书乐 P2P租车是互联网+的最新风口,这点毫无疑问. P2P租车们秉承着互联网思维,幻想着只做平台与纽带,就把钱给挣了!就只能重蹈之前外卖大战的覆辙,成为风口上掉下来的猪. P2P的风口多大的风? P2P租车方式很简单,有别于传统租车,是让私家车车主将自己有意出租的闲置车辆放上租车平台,然后租客搜索到合适的车辆,双方约定好租车时间和价格

神州租车:专车战争搅局者

专车服务本质是看线下服务,App只是购物环境平台,重要的是在里面买到性价比高的产品. 文/张书乐 刊载于<销售与市场>杂志评论版2015年04期 国内租车市场的大佬神州租车联手第三方独立公司优车科技,于2015年1月28日在国内60个主要城市正式推出"神州专车"服务,正式杀入专车市场.此刻恰逢滴滴.快的.易到用车等专车服务相继被各地交通运输管理部门亮"红灯"之际. 神州租车登台的方式也很简单直接--烧钱.其计划在专车业务方面投入25亿元,补贴5000万新

HDU-1034-Candy Sharing Game(C++ &amp;&amp; 简单模拟)

Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3703    Accepted Submission(s): 2311 Problem Description A number of students sit in a circle facing their teacher in the cent