栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3699 Dakar Rally

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3699 Dakar Rally

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int T, n, ct;long long p[100005], w[100005][2], s[100005], dis[100005],minn[100005];int main(){scanf("%d",&T);for (int oi = 0; oi < T; ++oi){scanf("%d%d",&n,&ct);long long t1, t2, t3;for (int i = 1; i <= n; ++i){scanf("%lld%lld%lld",&t1,&t2,&t3);p[i] = t3;s[i] = t1*t2;}dis[0] = 0;for (int i = 1; i <= n; ++i)dis[i] = dis[i-1]+s[i];int r = 0;for (int i = n; i > 0; --i){r++;w[r][0] = i;w[r][1] = p[i];while (r>1&& (w[r][1] < w[r-1][1] || dis[w[r-1][0]-1]-dis[i-1]>ct)){w[r-1][0] = w[r][0];w[r-1][1] = w[r][1];r--;}if (r>1) minn[i] = w[r-1][0];else minn[i] = i;}bool flag = false;for (int i = 1; i <= n; ++i)if (s[i] > ct) {printf("Impossiblen");flag = true;break;}if (flag) continue;long long gas = 0,cost = 0,k = 1;while(k <= n){if (minn[k] != k){long long tp = dis[minn[k]-1]-dis[k-1]-gas;if (tp <0) tp = 0;cost += tp*p[k];if (dis[minn[k]-1]-dis[k-1]-gas <0) gas = gas+dis[k-1]-dis[minn[k]-1];else gas = 0;k = minn[k];}else {if(dis[n] - dis[k-1] > ct){cost += (ct-gas)*p[k];gas = ct - s[k];k++;}else {cost += (dis[n]-dis[k-1]-gas)*p[k];k = n+1;}}}printf("%lldn",cost);}}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号