本文共 1306 字,大约阅读时间需要 4 分钟。
有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。第1行:1个数N,表示任务的数量。(2 <= N <= 100000)第2 - N + 1行:每行2个数R[i]和O[i],分别为执行所需的空间和存储所需的空间。(1 <= O[i] < R[i] <= 10000)
输出执行所有任务所需要的最少空间。
2014 12 111 320 47 56 520 719 89 420 1018 1112 613 1214 915 216 1517 1519 1320 220 1
#include#include #define MAX 100000+5using namespace std;struct Node{ int ri,oi; bool operator<(const Node o)const { if(ri-oi == o.ri-o.oi){ return ri > o.ri; } else return ri-oi > o.ri-o.oi; }};struct Node nodes[MAX];int main() { int n; scanf("%d",&n); int sum = 0; for(int i = 0; i < n; ++i){ scanf("%d%d",&nodes[i].ri,&nodes[i].oi); sum += nodes[i].oi; } sort(nodes,nodes+n); int max_v = sum -nodes[n-1].oi+nodes[n-1].ri; //除最后的oi外的所有的oi时间加上 最后 一个ri 时间 构成总时间 printf("%d",max_v); return 0; }
#includeusing namespace std;#define LL long longint main(){ int N,i,j,r,o; cin>>N; int s=0,minn=999999999; for(i=1;i<=N;++i) { scanf("%d%d",&r,&o); s+=o; minn=min(minn,r-o); } cout< <
转载地址:http://vhimi.baihongyu.com/