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優先佇列最小堆最大堆佇列
- MaxHeap 最大堆 MinHeap 最小堆 PriorityQueue 優先佇列實現佇列
- PHP優先佇列PHP佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- STL 優先佇列 用法佇列
- 淺談優先佇列佇列
- 堆與優先佇列佇列
- 優先佇列和堆排序佇列排序
- 01揹包優先佇列優化佇列優化
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 優先佇列的比較器佇列
- 封裝優先順序佇列封裝佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- leetcode621——優先佇列的思路LeetCode佇列
- 演算法面試(三) 優先佇列演算法面試佇列
- 二叉堆實現優先佇列佇列
- 手擼優先佇列——二叉堆佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 用優先佇列構造Huffman Tree及判斷是否為最優編碼的應用佇列
- 堆、堆排序和優先佇列的那些事排序佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- 【Dijkstra演算法】未優化版+優先佇列優化版演算法優化佇列
- codeforces round 974(div.3)E(優先佇列實現dijstra演算法,devc++的優先佇列用greater報錯)佇列JS演算法devC++
- CodeForces - 960B:Minimize the error(優先佇列+貪心)Error佇列
- Sunscreen POJ - 3614(防曬油) 貪心-優先佇列佇列
- [USACO 2009 Feb Gold] Fair Shuttle (貪心+優先佇列)GoAI佇列
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- CSP之公共鑰匙盒(模擬、排序、優先佇列)排序佇列
- Python3 執行緒優先順序佇列( Queue)Python執行緒佇列
- Python 列表推導及優先順序佇列的實現Python佇列
- 個推基於 Apache Pulsar 的優先順序佇列方案Apache佇列
- RMQ——支援合併和優先順序的訊息佇列MQ佇列
- 資料結構之PHP(最大堆)實現優先佇列資料結構PHP佇列