NO GAME NO LIFE(優先佇列/最小堆)
題目描述
輸了不感到悔恨的人,沒資格當遊戲玩家,不過正因為如此,才會第一次覺得快樂
在網路上成為都市傳說的天才玩家兄妹·空和白實際是家裡蹲尼特族。他們將將世界稱為“垃圾遊戲”。某天,這兩個人某一天被自稱“神”的少年召喚到了異世界。那是被神明禁止了戰爭,一切交由遊戲來決定"的世界——沒錯,就連國境線也是一樣。被其他種族逼入絕境,只剩下最後一座都市的“人類種”。空和白,兩名廢人兄妹到底能否在異世界成為“人類的救世主”?——那麼,讓我們開始遊戲吧,
空白兩人遇到了這樣一個遊戲,一款類似2048的遊戲規則如下
一開始,有 n 個方塊,每個方塊上有一個 1 到 m 的整數。空白可以進行兩種操作:
1、 選擇兩個數字相同的方塊(不一定要相鄰),將它們合併成一個數字為原來的兩倍的方塊;
2、 減小一個方塊上的數字。
操作的次數沒有限制,最終的得分為所有方塊上的最大的數字。因為空白玩遊戲沒有輸過,所以請你想辦法來解決掉這個問題!
輸入
第一行 兩個數n代表n個方塊 m代表方塊上的數字 m n<=1e5
第二行 n個數
輸出
一個數表示最大值
樣例輸入
5 10
6 10 7 5 4
樣例輸出
24
思路:每次找最小的2個進行合併,取較小值翻倍進隊。注意用longlong,int會炸
程式碼如下:
#include<set>
#include<map>
#include<list>
#include<deque>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#include<stdio.h>
#include<sstream>
#include<stdlib.h>
#include<string.h>
//#include<ext/rope>
#include<iostream>
#include<algorithm>
#define pi acos(-1.0)
#define INF 0x3f3f3f3f
#define per(i,a,b) for(int i=a;i<=b;++i)
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
#define LL long long
#define swap(a,b) {int t=a;a=b;b=t}
using namespace std;
//using namespace __gnu_cxx;
int main()
{
priority_queue <LL int,vector<LL int>,greater<LL int> > q;
LL int n,m,a,b,c;
cin>>n>>m;
per(i,1,n){
cin>>a;
q.push(a);
}
while(q.size()!=1){
a=q.top();
q.pop();
b=q.top();
q.pop();
c=min(a*2,b*2);
q.push(c);
}
c=q.top();
cout<<c;
return 0;
}
相關文章
- STL優先佇列最小堆最大堆佇列
- POJ 2051(最小堆/優先佇列)佇列
- MaxHeap 最大堆 MinHeap 最小堆 PriorityQueue 優先佇列實現佇列
- PHP優先佇列PHP佇列
- 堆--優先佇列佇列
- 優先佇列 (轉)佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- 淺談優先佇列佇列
- STL 優先佇列 用法佇列
- 堆與優先佇列佇列
- 堆和優先佇列佇列
- 優先佇列和堆排序佇列排序
- 堆排序與優先佇列排序佇列
- Java優先佇列(PriorityQueue)示例Java佇列
- 01揹包優先佇列優化佇列優化
- 棧,佇列,優先順序佇列簡單介面使用佇列
- Redis實現任務佇列、優先順序佇列Redis佇列
- 優先佇列的比較器佇列
- 封裝優先順序佇列封裝佇列
- 二叉堆優先佇列佇列
- POJ 3253 Fence Repair 優先佇列AI佇列
- 堆——神奇的優先佇列(上)佇列
- 優先佇列的效能測試佇列
- hdu5040 優先佇列+bfs佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 演算法面試(三) 優先佇列演算法面試佇列
- STL醜數(set+優先佇列)佇列
- 【圖論】拓撲排序+優先佇列圖論排序佇列
- 1007(優先佇列)佇列
- POJ 1724 ROADS(優先佇列+spfa)佇列
- POJ2431 Expedition (優先佇列)佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- 二叉堆實現優先佇列佇列
- STL(二十)priority_queue優先佇列容器佇列
- 找最小的k個數(優先佇列)佇列