250pt:

题意:有一排一共44,777,777个人,每个人需要咖啡或者茶,队伍的头部有一台饮料机,有一个空姐负责给所有人送饮料,她一开始在也头部。空姐拿一个水壶,一开始是空的,可以在饮料机的地方加最多7个单位的咖啡或者茶,加一次要47秒。空姐在相邻位置移动需要1秒,空姐给一个人倒茶或者咖啡需要4秒。现在告诉你哪些乘客需要茶(最多50个),问最优策略下,空姐需要多少时间可以给所有乘客倒好饮料并且回到队列头。

思路:直接枚举

500pt:

题意:有n<=477个城市,然后一些城市之间会有航班,每个航班有起飞和到达站、飞行时间,有一个航班开始时间,还有一个周期,从开始时间开始,每隔一个周期有一班飞机起飞。现在有一个人要从1飞到n,保证1到n之间没有直接的航班,于是必须至少要换一次航班。每次换航班都有一个等待时间,所有等待时间中的最小值就是一个保险系数。现在要在t<=1,000,000,000的时间内从1到达n,问可以达到的最大保险系数是多少。
思路:直接二分答案,那么接下来就是一个spfa判定了。

code:

 #line 7 "TheAirTripDivOne.cpp"
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std; #define PB push_back
#define MP make_pair #define REP(i,n) for(i=0;i<(n);++i)
#define FOR(i,l,h) for(i=(l);i<=(h);++i)
#define FORD(i,h,l) for(i=(h);i>=(l);--i) typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<double> VD;
typedef long long LL;
typedef pair<int,int> PII;
int A[], B[], F[], P[], T[];
vector<int> g[];
bool vis[];
long long d[];
class TheAirTripDivOne
{
public:
string S;
int n, m, limit;
void make_flight(){
m = ;
// cout << S << endl;
int cnt = , tmp = ;
for (int i = ; i < S.size(); ++i){
if (S[i] == ','){
if (cnt == ) A[m] = tmp;
if (cnt == ) B[m] = tmp;
if (cnt == ) F[m] = tmp;
if (cnt == ) T[m] = tmp;
cnt++;
tmp = ;
}
else if (S[i] == ' '){
P[m++] = tmp;
tmp = cnt = ;
} else tmp = tmp * + S[i] - ;
}
if (tmp > ) P[m++] = tmp;
for (int i = ; i <= n; ++i)
g[i].clear();
for (int i = ; i < m; ++i)
g[A[i]].PB(i);
}
bool SPFA(int waitTime){
for (int i = ; i <= n; ++i)
d[i] = (1LL << );
queue<int> q;
d[] = -waitTime;
vis[] = true;
q.push();
long long time, r;
while (!q.empty()){
int u = q.front(), v;
for (int i = ; i < g[u].size(); ++i){
v = B[g[u][i]];
time = d[u] + waitTime;
if (time <= F[g[u][i]]) time = F[g[u][i]];
else {
r = (time - F[g[u][i]] - ) / P[g[u][i]] + ;
time = F[g[u][i]] + P[g[u][i]] * r;
}
if (time + T[g[u][i]] < d[v]){
d[v] = time + T[g[u][i]];
if (!vis[v]) q.push(v), vis[v] = true; }
}
q.pop();
vis[u] = false;
}
return d[n] <= limit;
}
int solve(){
int l = , r = , mid;
int ret = -;
while (l <= r){
mid = (l + r) >> ;
if (SPFA(mid)){
l = mid + ;
ret = mid;
} else r = mid - ;
}
return ret;
} int find(int N, vector <string> flights, int time)
{
S = accumulate(flights.begin(), flights.end(), string(""));
n = N;
limit = time;
make_flight();
return solve();
}
};

SRM479的更多相关文章

  1. SRM475 - SRM479(1-250pt,500pt)

    SRM 475 DIV1 300pt 题意:玩游戏.给一个棋盘,它有1×n(1行n列,每列标号分别为0,1,2..n-1)的格子,每个格子里面可以放一个棋子,并且给定一个只含三个字母WBR,长度为n的 ...

随机推荐

  1. javascript 高级程序设计 七

    引言:好几天没有写随笔了,项目有点紧,恰好今天项目遇到了比较大阻塞,就只好来写一篇随笔来压压惊. 1.Date类型 创建一个新的Date:(除了new Date()外) var someDate = ...

  2. spring 的 ApplicationContext.getBean(type) 无法获取bean,报错

    具体问题请看   https://q.cnblogs.com/q/108101/ 研究了两天: 经过上文中的排除法: 造成问题的原因是要获取的bean 中 有被切入的方法.. 就是可能该类会使用反射生 ...

  3. Java SE学习【一】

    学java也学了有1个多月了,算算时间,花在上面的时间应该是超过了100个小时了,现在的进度是变量.循环.分支.数组学完了,面向对象部分正在学.记录一下我在学习期间遇到的一些困惑与感想吧! 1.一开始 ...

  4. tomcat+servlet例子

    在C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\app\WEB-INF文件夹下建立文件夹classes. 在C:\Pro ...

  5. Python终端彩色字体的输出

    实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033 ...

  6. O365 Manager Plus详解

  7. python学习 day14 (3月19日)----

    04 json # 1. 用于多种语言 交互 编程语言通用数据 # 内置的 不需要安装直接导入使用 import json # 导入 # # dumps loads dump load # dic = ...

  8. go基础知识之变量,类型,常量,函数

    3 变量 变量是什么 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值.在 Go 中,有多种语法用于声明变量. 声明单个变量 var name type 是声 ...

  9. 利用Delphi-cross-socket 库提升kbmmw 跨平台开发

    以前我写过了,通过httpsys 提升windows 下,delphi 多层应用.随着delphi 10.2 对linux 的支持,很多人也想在linux 下 发布kbmmw 服务器,但是官方仅通过i ...

  10. NIO原理解析

    NIO中主要包括几大组件,selector.channel.buffer.selector后面介绍,channel则类似于BIO中的流,但是流的读取是单向的,例如只能读,或只能写,但是channel则 ...