QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#143022#149. Perupenguinman#Compile Error//C++171.8kb2023-08-20 11:30:402024-07-04 01:49:45

Judging History

你现在查看的是测评时间为 2024-07-04 01:49:45 的历史记录

  • [2024-09-10 16:42:13]
  • 管理员手动重测本题所有提交记录
  • 测评结果:0
  • 用时:58ms
  • 内存:10000kb
  • [2024-07-04 01:49:45]
  • 评测
  • [2023-08-20 11:30:40]
  • 提交

answer

#include "peru.h"
#include <bits/stdc++.h>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
using ll = long long;
using vi = vector<ll>;
using vii = vector<vi>;
using pii = std::pair<ll,ll>;

#define ln "\n"
#define pb emplace_back
#define mp std::make_pair
#define mtp std::make_tuple
#define rep(i,j,k) for(ll i=ll(j); i<ll(k); i++)
#define REP(i,j,k) for(ll i=ll(j); i<=ll(k); i++)
#define per(i,j,k) for(ll i=ll(j); i>=ll(k); i--)
#define all(a) a.begin(),a.end()

constexpr ll inf = (1ll<<60);
constexpr ll mod = 1e9+7;
constexpr ll mul = 23;

void dec(std::map<ll,ll> &mem, ll el){
    mem[el]--;
    if(mem[el] == 0) mem.erase(el);
}

int solve(int n, int k, int* v){
    vi dp(n+1, inf);
    dp[0] = 0;
    std::deque<ll> idx;
    std::map<ll,ll> mem;
    mem[inf] = 1;
    rep(i,0,n){
        while(!idx.empty() && v[idx.back()] <= v[i]){
            ll val = v[idx.back()];
            idx.pop_back();
            if(!idx.empty()){
                val += dp[idx.back()+2];
                dec(mem, val);
            }
        }
        while(!idx.empty() && idx[0] <= i-k){
            ll val = dp[idx[0]+2];
            idx.pop_front();
            if(!idx.empty()){
                val += v[idx[0]];
                dec(mem, val);
            }
        }
        if(!idx.empty() && idx.back() != i-1){
            ll val = dp[idx.back()+2];
            val += v[i];
            mem[val]++;
        }
        idx.pb(i);
        dp[i+1] = std::min(dp[std::max(0ll, i-k+1)]+v[idx[0]], (*mem.begin()).first);
        if(idx.size() >= 2 && idx[idx.size()-2] == i-1){
            ll val = dp[i+1]+v[i];
            mem[val]++;
        }
    }
    ll ret = 0;
    rep(i,0,n){
        ret = ret*mul+dp[i+1];
        ret %= mod;
    }
    return ret;
}

詳細信息

implementer.cpp: In function ‘int main()’:
implementer.cpp:34:13: error: ‘fout’ was not declared in this scope; did you mean ‘out’?
   34 |     fprintf(fout, "%d\n", sol);
      |             ^~~~
      |             out
implementer.cpp: In function ‘char nextch()’:
implementer.cpp:15:31: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   15 |     if (pos == BUF_SIZE) fread(buf, BUF_SIZE, 1, fin), pos = 0;
      |                          ~~~~~^~~~~~~~~~~~~~~~~~~~~~~