国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

codeforces 767 b The Queue(模擬)

2019-11-08 02:18:37
字體:
供稿:網(wǎng)友

題意:

n個人排隊去辦理通行證,給出辦公室開始辦理的時間s和停止辦理的時間d,以及辦理一個人的通行證需要花費的時間t,小明也想去辦理通行證,在知道n個人都是什么時間(a[i])來的情況下,小明想知道自己什么時候去自己能夠辦理到通行證且等待的時間最少,另外小明如果和別人同時到,他會排在這個人后面

思路:

模擬.

我們模擬經(jīng)過第i個人后,辦公室要在什么時間才能辦理,用變量記錄,一開始就是s,之后只要tim=max(tim, a[i])+t這樣去更新就行,我們枚舉小明在a[i]-1,這個時間點到,看需要花費多少時間,所花費的時間即為tim-a[i]+1(如果是負數(shù),沒關(guān)系,題目只要求輸出什么時候到達就行,所以負數(shù)和0的效果是一樣的),每次去更新下就行.最后check一下是不是tim+t<=d,也就是說是不是所有人辦理完后還足夠辦理一次.另外我們在枚舉的時候要把a[i]>=d的變量跳過.

所以這里最重要的是明白我們只需要枚舉a[i]-1就可以,然后明白怎么更新辦公室閑置的時間,以及花費的時間怎么求.

代碼:

#include <bits/stdc++.h>using namespace std;const int maxn=1e5+5;long long a[maxn];struct p{     long long tim;     long long cost;}b[maxn];bool cmp(p a, p b){	return a.cost<b.cost;}int main(){    long long s, d, t;    int n;    cin>>s>>d>>t>>n;     int i, j;    for(i=0; i<n; i++)    {	scanf("%lld", &a[i]);    }    long long tim=s;    int top=0;    for(i=0; i<n; i++)    {	if(a[i]>=d)continue;	b[top].cost=tim-a[i]+1;	b[top++].tim=a[i]-1;      tim=max(tim, a[i])+t;      if(d-tim+1<t)break;    }    if(d-tim>=t)return 0*PRintf("%lld/n", tim);    sort(b, b+top, cmp);    printf("%lld/n", b[0].tim);}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新宁县| 新蔡县| 灌云县| 始兴县| 泸定县| 万宁市| 肥东县| 康马县| 静乐县| 无棣县| 阿瓦提县| 昭觉县| 崇州市| 海南省| 洪洞县| 塔城市| 汶川县| 九寨沟县| 旬邑县| 衡南县| 集安市| 汝城县| 乌鲁木齐市| 铜鼓县| 乌苏市| 定西市| 深泽县| 望奎县| 昌乐县| 阜阳市| 泗洪县| 嘉定区| 河津市| 桃园市| 西林县| 醴陵市| 河池市| 兴山县| 衡阳县| 新化县| 宁陵县|