NOIP模拟赛-护花

【题目描述】

约翰留下他的N(N<=100000)只奶牛上山采木.他离开的时候,她们像往常一样悠闲地在草场里吃草.可是,当他回来的时候,他看到了一幕惨剧:牛们正躲在他的花园里,啃食着他心爱的美丽花朵!为了使接下来花朵的损失最小,约翰赶紧采取行动,把牛们送回牛棚. 牛们从1到N编号.第i只牛所在的位置距离牛棚Ti(1≤Ti≤2000000)分钟的路程,而在约翰开始送她回牛棚之前,她每分钟会啃食Di(1≤Di≤100)朵鲜花.无论多么努力,约翰一次只能送一只牛回棚.而运送第第i只牛事实上需要2Ti分钟,因为来回都需要时间.    写一个程序来决定约翰运送奶牛的顺序,使最终被吞食的花朵数量最小.

【输入格式】

第1行输入N,之后N行每行输入两个整数Ti和Di

【输出格式】

一个整数,表示最小数量的花朵被吞食

Windows下评测用printf不能写%lld的占位符 会WA的...

 #include<iostream>
 #include<cstdio>
 #include<vector>
 #include<algorithm>
 #define LL long long
 using namespace std;
 struct Node{
     LL t,d;
     bool operator<(const Node& rhs)const{
         return rhs.t*d>rhs.d*t;
     }
 };
 LL n,v=;
 vector<Node> s;
 int main()
 {
     freopen("flower.in","r",stdin);
     freopen("flower.out","w",stdout);
     scanf("%lld",&n);
     ;i<=n;i++){
         LL t,d;
         scanf("%lld%lld",&t,&d);
         s.push_back((Node){t,d});
         v+=d;
     }
     LL ans=;
     sort(s.begin(),s.end());
     ;i<s.size();i++){
         v-=s[i].d;
         ans+=*s[i].t*v;
     }
     printf("%I64d",ans);
     fclose(stdin);
     fclose(stdout);
     ;
 }
上一篇:Prism 4 文档 ---第4章 模块化应用程序开发


下一篇:Prism 4 文档 ---第6章 高级MVVM场景