NOIP2015普及组 —— 推销员(salesman)
来源:互联网 发布:a卡 mac dsdt hdmi 编辑:程序博客网 时间:2024/04/26 16:53
#include <fstream>#include <algorithm>using namespace std;ifstream fin("salesman.in");ofstream fout("salesman.out");const int MAX_N = 100000, INT_MIN = 1<<31;struct Tnode{ int a, id;} a[MAX_N];int S[MAX_N], A[MAX_N], rmax[MAX_N];int Head_a = 0;bool cmp(const Tnode &, const Tnode &);void Build_a(int);void Build_rmax(int);int LMax();int RMax();void Update_a(int);void Update_rmax(int);int main(){ int N; fin>>N; for (int i=0; i<N; i++) fin>>S[i]; for (int i=0; i<N; i++) fin>>A[i]; Build_a(N); Build_rmax(N); int Last_Max = rmax[0]; int Ans = S[Last_Max]<<1+A[Last_Max]; fout<<Ans<<endl; A[rmax[0]] = INT_MIN; a[0].a = INT_MIN; Update_rmax(rmax[0]); int Left_Max_id, Right_Max_id, Left_Max, Right_Max; for (int i=1; i<N; i++) { while (visit[a[Left_Max_id].id] && Left_Max_id<N) Left_Max_id++; Left_Max_id = LMax(); Right_Max_id = RMax(); Left_Max = A[Left_Max_id]; Right_Max = (S[Right_Max_id]-S[Last_Max_id])<<1 + A[Right_Max_id]; if (Left_Max > Right_Max) { Ans += Left_Max; Last_Max = Left_Max_id; Update_a(Left_Max_id); } else { Ans += Right_Max; Last_Max = Right_Max_id; // Update_rmax(Right_Max_id); } fout<<Ans<<endl; } return 0;}bool cmp(const Tnode &A, const Tnode &B){ return A.a < B.a ? true : false;}void Build_a(int n){ for (int i=0; i<n; i++) a[i].a = A[i]; sort(a, a+n, cmp);}void Build_rmax(int n){ rmax[n-1] = n-1; int Right_Max = S[n-1]<<1 + A[n-1]; int Now_Max; for (int i=n-2; i>=0; i--) { Now_Max = S[i]<<1 + A[i]; if (Now_Max > Right_Max) { rmax[i] = i; Right_Max = Now_Max; } else rmax[i] = rmax[i-1]; }}int LMax(){ return Head_a;}void Update_a(){ Head_a++;}
0 0
- NOIP2015普及组 —— 推销员(salesman)
- Noip2015 普及组 推销员 题解
- 【codevs 5126】[NOIP2015 普及组T4]推销员(贪心)
- 【NOIP2015普及组】 推销员(纪中数据-标准)
- 【NOIP2015普及组T4】推销员-优先队列
- luogu2672推销员-贪心-(noip2015普及t4)
- Noip2015普及组第四题 Salesman的解题报告
- [NOIP2015][Vijos1977]推销员(heap)
- [NOIP2015]推销员
- 【NOIP2015】推销员
- NOIP2015 推销员
- NOIP2015普及组第3题——sum
- NOIP2015普及组总结
- Noip2015普及组
- NOIP2015普及组 金币
- NOIP2015普及组 金币
- [NOIP2015普及组]求和
- NOIP2015 PJ 4 salesman
- Markdown基本语法
- C++11的新特性 Lambda 函数
- Ubuntu14.04 server增加swap分区
- 软引用~弱引用
- java面试题100道(1-20)
- NOIP2015普及组 —— 推销员(salesman)
- vs2013中能编译通过,但是会有红色波浪线错误
- js回车监听按钮事件(火狐IE 兼容)
- Stagefright系列漏洞资料
- CPLD与FPGA的区别
- Jekkion 项目部署工具
- NSTimeZone和NSDate
- 修改liunx 下 默认编译
- Redis入门之Redis 安装超详细文档