USACO 2017 January Contest, Gold Problem 1. Balanced Photo
2017-05-02 13:41
906 查看
利用树状数组,由于1e9太大,所以先进行排序,按数字大小进行排名。
#include<iostream> #include<algorithm> #include<cstring> #define MA 100005 using namespace std; class node { public: int id; int w; int rank; int LN, RN; }; int pre[MA];//树状数组 int lowbit(int v) { return v&-v; } void join(int index, int val) { while (index < MA) { pre[index] += val; index += lowbit(index); } } int GetSum(int index) { int sum = 0; while (index) { sum += pre[index]; index -= lowbit(index); } return sum; } node all[MA]; int main() { freopen("bphoto.in", "r", stdin); freopen("bphoto.out", "w", stdout); int N; scanf("%d", &N); for (int t = 0; t < N; ++t) { all[t].id = t; scanf("%d", &all[t].w); } sort(all, all + N, [](const node a, const node b) {return a.w > b.w; }); all[0].rank = 1; for (int t = 1; t < N; ++t)//按数字大小进行编号 if (all[t].w == all[t - 1].w) all[t].rank = all[t - 1].rank; else all[t].rank = t+1; sort(all,all+N, [](const node a, const node b) {return a.id < b.id; }); for (int t = N - 1; t >= 0; --t)//先计算出右边比此位置数字大的元素个数 { all[t].RN = GetSum(all[t].rank-1); join(all[t].rank, 1); } memset(pre, 0, sizeof(pre)); int cnt = 0; for (int t = 0; t < N; ++t)//先计算出左边比此位置数字大的元素个数,并进行讨论 { all[t].LN = GetSum(all[t].rank - 1); join(all[t].rank, 1); if (min(all[t].RN, all[t].LN) * 2 < max(all[t].RN, all[t].LN))++cnt; } printf("%d\n", cnt); }
相关文章推荐
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- POJ - 3265/USACO - Jan07 Gold Problem Solving 动态规划(DP) | 对USACO官方题解0ms程序的解释
- 【BZOJ】1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- USACO 2017 January Contest, Gold Problem 2. Hoof, Paper, Scissors
- USACO 2017 February Gold
- USACO 2016 US Open Contest, Gold Problem 3. 248
- USACO 2017 US Open Contest, Platinum Problem 3. COWBASIC
- BZOJ 1702: [Usaco2007 Mar]Gold Balanced Lineup
- 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列——map+hash+转换
- POJ - 3622/USACO - Dec07 Gold Gourmet Grazers 挑剔的美食家 重庆一中高2018级竞赛班第五次测试 2016.7.26 Problem 4
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列【hash】
- USACO 2012 January Contest, Gold Division Solution
- BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- BZOJ 1702 [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 stl--map
- Bsoj: 3696 -- 【USACO 2012 February Gold】附近的奶牛
- 【BZOJ1589】【USACO 2008 Dec Gold】 1.Trick or Treat on the Farm 基环树裸DP、
- Problem C. Not So Random Google APAC 2017 University Test Practice Round
- 【动态规划】【滚动数组】【bitset】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem J. Terminal