House Lawn Kattis - houselawn
Problem
You have just bought a new house, and it has a huge, beautiful lawn. A lawn that needs cutting. Several times. Every week. The whole summer.
After pushing the lawnmower around the lawn during the hottest Saturday afternoon in history, you decided that there must be a better way. And then you saw the ads for the new robotic lawnmovers. But which one should you buy? They all have different cutting speeds, cutting times and recharge times, not to mention different prices!
According to the advertisement, a robotic lawnmover will spend all its time either cutting the lawn or recharging its battery. Starting from a full battery, it will cut the lawn at a given rate of c
square meters per minute for a cutting time of t minutes, after which it has run out of battery. Once out of battery, it will immediately start recharging. After recharging for r minutes the battery is full again and it immediately starts cutting.
You decide that in order for your lawn to look sufficiently prim and proper, the lawnmower that you buy must be powerful enough to cut your whole lawn at least once a week on average. Formally, if we start the mower fully charged at the beginning of the week and run it for exactly T weeks, it needs to cut the whole lawn at least T times, for all positive integers T. But apart from this, you have no specific requirements, so among the ones that satisfy this requirement, you will simply go for the cheapest option. For the purposes of cutting your lawn, you may make the simplifying assumption that a week is always exactly 10080 minutes long.
Input
The first line of input contains two integers ℓ and m (1≤ℓ≤106, 1≤m≤100), the size of your lawn in square meters, and the number of lawnmowers to consider, respectively. Then follow m lines, each containing a string n and 4 integers p, c, t, and r, separated by commas, describing a lawnmower as follows: n is the name of the lawnmower, a string of at most 60 printable characters (ASCII 32 to 126) excluding ‘,’, neither starting nor ending with a space,1≤p≤100000 is the price of the lawnmover,
1≤c≤100 is the cutting rate in square meters per minute,1≤t≤10080 is the cutting time in minutes, and 1≤r≤10080 is the recharge time in minutes.
Output
Output the name of the cheapest lawnmower capable of cutting your whole yard at least once a week on average. If several lawnmovers share the same lowest price, output all of their names, in the same order they were given in the input. If there is no such mower, output “no such mower”.
| Sample Input 1 | Sample Output 1 |
|---|---|
7000 4 |
Eco-cut X2 |
| Sample Input 2 | Sample Output 2 |
|---|---|
100000 4 |
no such mower |
题意:在符合条件T的情况下,选取最小价格,按输入顺序输出。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
char ss[10005];
struct node
{
char name[105];
ll m;
ll p, c, t, g;
double need;
}a[100005];
ll are, n;
bool cmp(struct node a, struct node b)
{
return a.p < b.p;
}
ll ojbk(ll x)
{
ll we = a[x].c * a[x].t;
double ti = are / we * a[x].g + are / we * a[x].t + ((are % we) * 1.0)/ a[x].c;
if(are % we != 0)
{
ti += (are % we) * 1.0 / we * a[x].g;
}
a[x].need = ti;
if(ti <= 10080)return 1;
else return 0;
}
int main()
{
scanf("%lld %lld", &are, &n);
getchar();
ll i, j, k;
ll minn = 0x3f3f3f3f;
for(i = 0; i < n; i++)
{
ll len = 0;
for(len = 0; (ss[len] = getchar()) != '\n'; len++);
a[i].m = 0;
a[i].p = a[i].t = a[i].c = a[i].g = 0;
for(j = 0; j< len; j++)
{
if(ss[j] == ',')
{
a[i].name[a[i].m] = '\0';
break;
}
else
{
a[i].name[a[i].m++] = ss[j];
}
}
for(j++; j < len; j++)
{
if(ss[j] == ',')break;
else
{
a[i].p *= 10;
a[i].p += ss[j] - '0';
}
}
for(j++; j < len; j++)
{
if(ss[j] == ',')break;
else
{
a[i].c *= 10;
a[i].c += ss[j] - '0';
}
}
for(j++; j < len; j++)
{
if(ss[j] == ',')break;
else
{
a[i].t *= 10;
a[i].t += ss[j] - '0';
}
}
for(j++; j < len; j++)
{
if(ss[j] == ',')break;
else
{
a[i].g *= 10;
a[i].g += ss[j] - '0';
}
}
if(ojbk(i) == 1)
{
minn = min(minn,a[i].p);
}
}
if(minn == 0x3f3f3f3f)
{
printf("no such mower\n");
}
else
{
for(i = 0; i < n; i++)
{
if(a[i].p == minn)
{
if(a[i].need <= 10080)
{
printf("%s\n", a[i].name);
}
}
}
}
return 0;
}
House Lawn Kattis - houselawn的更多相关文章
- It's a Mod, Mod, Mod, Mod World Kattis - itsamodmodmodmodworld (等差数列求和取模)
题目链接: D - It's a Mod, Mod, Mod, Mod World Kattis - itsamodmodmodmodworld 具体的每个参数的代表什么直接看题面就好了. AC代码: ...
- A - Piece of Cake Kattis - pieceofcake (数学)
题目链接: A - Piece of Cake Kattis - pieceofcake 题目大意:给你一个多边形,然后给你这个多边形的每个点的坐标,让你从这个n个点中选出k个点,问这个k个点形成的面 ...
- Subsequences in Substrings Kattis - subsequencesinsubstrings (暴力)
题目链接: Subsequences in Substrings Kattis - subsequencesinsubstrings 题目大意:给你字符串s和t.然后让你在s的所有连续子串中,找出这些 ...
- G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)
题目链接: G - Intersecting Rectangles Kattis - intersectingrectangles 题目大意:给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角 ...
- E - Emptying the Baltic Kattis - emptyingbaltic (dijkstra堆优化)
题目链接: E - Emptying the Baltic Kattis - emptyingbaltic 题目大意:n*m的地图, 每个格子有一个海拔高度, 当海拔<0的时候有水. 现在在(x ...
- G - Galactic Collegiate Programming Contest Kattis - gcpc (set使用)
题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st ...
- Kattis - virus【字符串】
Kattis - virus[字符串] 题意 有一个正常的DNA序列,然后被病毒破坏.病毒可以植入一段DNA序列,这段插入DNA序列是可以删除正常DNA序列中的一个连续片段的. 简单来说就是,给你一段 ...
- Kattis - bank 【简单DP】
Kattis - bank [简单DP] Description Oliver is a manager of a bank near KTH and wants to close soon. The ...
- City Destruction Kattis - city dp
/** 题目:City Destruction Kattis - city 链接:https://vjudge.net/problem/Kattis-city 题意:有n个怪兽,排成一行.每个怪兽有一 ...
随机推荐
- Jfinal初次尝试及Jetty使用相关问题
Jetty介绍 Jetty官网:http://www.eclipse.org/jetty/ 参考:Jetty使用教程(一)--开始使用Jetty 1. 使用 参考上面文档,但是有些更新: echo $ ...
- 微信小程序wx:key以及wx:key=" *this"详解:
今天写微信小程序无意中看到控制台给出了这样一行提示: 求解百度才知道,给大家分享一下: 1.wx:for定义 官方文档:在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲 ...
- mybatis查询foreach使用
1.mybatis传入map参数,map中包含list: List<FukaModel> fukaModels = price.getSchemaPrice().getFukaList() ...
- python打印表格式数据-星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
- 微信小程序tabBar与redirectTo 或navigateTo冲突
微信小程序tabBar与redirectTo 或navigateTo冲突 tabBar设置的pagePath无法再次被redirectTo或navigateTo引用 导致跳转失败,更改为swithTa ...
- springboot 上传图片,地址,在页面展示图片
package com.cxwlw.zhcs.controller.api;import org.springframework.stereotype.Controller;import org.sp ...
- 从零开始配置一个简单的webpack打包
一.基础配置 1.创建一个名为demo-webpack的文件夹(名称随意) 2.初始化一个package.json文件 //在cmd窗口中使用以下命令快速创建 npm init -y 3.安装webp ...
- 关闭mysql严格模式
配置文件my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 s ...
- pymysql 1064, 'You have an error in your SQL syntax; check the manual that corresponds to
在python 连接mysql时,最近一直出现了 1064, 'You have an error in your SQL syntax; check the manual that correspo ...
- linux 服务器常规巡检并生成报表(一)
背景 最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事. 首先,第一个要解决的问题是批量服务器执行命 ...