[STL] [PQ] [NYNUOJ] 1152 No game no life

本文介绍了一种利用C++ STL中的优先队列来实现小根堆的方法,通过存储元素的负值来简化操作流程。该文详细展示了如何通过这种方式处理数据集合,以实现特定的数据结构需求。

 

用STL优先队列进行模拟

但是求小根堆

好像是

priority_queue <ll, vector<ll>, greater<> > PQ;

比较麻烦

直接默认PQ塞负数也可以解决

//#pragma GCC optimize(2)
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
typedef long long ll;
 
const int MAXN = 1e6 + 10;
 
ll ans;
 
priority_queue <ll> PQ;
 
int main()
{
    //ios::sync_with_stdio(false);
 
    //cin.tie(0);     cout.tie(0);
 
    ll n, m, tmp, ta, tb;
 
    cin>>n>>m;
 
    for(int i = 0; i < n; i++)
    {
        cin>>tmp;
 
        PQ.push(-tmp);
    }
 
    while(PQ.size() != 1)
    {
        ta = PQ.top();
 
        PQ.pop();
 
        tb = PQ.top();
 
        PQ.pop();
 
        if(ta == tb)
        {
            PQ.push(2 * ta);
        }
 
        else
        {
            PQ.push(2 * max(ta, tb));
        }
    }
 
    ans = -PQ.top();
 
    cout<<ans<<endl;
 
    return 0;
}

 

### 回答1: 这个错误通常会在使用Python中的stl库时出现。这个错误信息提示说,stl模块中没有BaseStl属性。 首先,确认你是否正确导入了stl库。如果你没有正确导入stl库,那么你的代码中就找不到BaseStl属性。你可以使用以下代码来导入stl库: ``` import stl ``` 如果你已经正确导入了stl库,但是仍然遇到此错误,则可能是因为你正在尝试访问一个不存在的属性。请检查你的代码,并确保你正在调用正确的属性。你可以在Python控制台中使用dir()函数来查看模块中存在哪些属性。例如,你可以尝试在控制台中输入以下代码: ``` import stl print(dir(stl)) ``` 这将输出stl模块中存在的所有属性列表。你可以检查这个列表,以确保你正在调用正确的属性。 ### 回答2: AttributeError: module 'stl' has no attribute 'BaseStl'是一个Python错误提示,意思是模块"stl"中没有名为"BaseStl"的属性。 出现这个错误可能有多种原因。首先,可能是因为你在代码中错误地引用了名为"BaseStl"的类或函数。你可以检查代码中是否有拼写错误或其他错误导致无法找到正确的属性。 另外,这个错误也可能是由于你使用的"stl"模块版本过低而引起的。"stl"模块是用于处理STL文件的模块,如果你的"stl"模块版本过低,可能不支持"BaseStl"属性。你可以尝试更新"stl"模块到最新版本,或者查看"stl"模块的文档以确定是否存在"BaseStl"属性的正确用法。 最后,这个错误也可能是因为你未正确安装"stl"模块。你可以尝试重新安装"stl"模块,确保你按照正确的方法安装并正确导入。 总之,要解决AttributeError: module 'stl' has no attribute 'BaseStl'错误,你可以检查代码中是否有拼写错误或其他错误导致无法找到正确的属性,尝试更新"stl"模块到最新版本,确保正确安装并导入"stl"模块。 ### 回答3: 这个错误是由于在调用stl模块时出现了一个异常。错误信息中指出,模块stl没有名为BaseStl的属性。 可能的原因是: 1. 没有正确导入stl模块。请确保使用了正确的导入语句,比如"import stl"或"from stl import *"。 2. 版本兼容性问题。某些旧版本的stl模块可能不支持BaseStl属性。请尝试更新stl模块到最新版本,或者查看官方文档以确定可用的属性和函数。 3. BaseStl属性不存在。如果您期望在stl模块中找到BaseStl属性,那么可能该属性不存在。请仔细查阅相关文档或资料,以确定stl模块提供的正确属性和函数。 如果以上方式都无法解决问题,建议您查阅相关的错误信息、文档或社区来获取更详细的帮助和解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值