提出 #25464575
ソースコード 拡げる
#include <algorithm>
#include <cassert>
#include <functional>
#include <iostream>
#include <limits>
#include <queue>
#include <tuple>
#include <utility>
#include <vector>
template <typename CostType>
struct Edge {
int src, dst; CostType cost;
Edge(int src, int dst, CostType cost = 0) : src(src), dst(dst), cost(cost) {}
inline bool operator<(const Edge &x) const {
return cost != x.cost ? cost < x.cost : dst != x.dst ? dst < x.dst : src < x.src;
}
inline bool operator<=(const Edge &x) const { return !(x < *this); }
inline bool operator>(const Edge &x) const { return x < *this; }
inline bool operator>=(const Edge &x) const { return !(*this < x); }
};
template <typename CostType>
struct Dijkstra {
const CostType inf;
Dijkstra(const std::vector<std::vector<Edge<CostType>>> &graph,
const CostType inf = std::numeric_limits<CostType>::max())
: graph(graph), inf(inf) {}
std::vector<CostType> build(int s) {
is_built = true;
int n = graph.size();
std::vector<CostType> dist(n, inf);
dist[s] = 0;
prev.assign(n, -1);
using Pci = std::pair<CostType, int>;
std::priority_queue<Pci, std::vector<Pci>, std::greater<Pci>> que;
que.emplace(0, s);
while (!que.empty()) {
CostType cost; int ver; std::tie(cost, ver) = que.top(); que.pop();
if (dist[ver] < cost) continue;
for (const Edge<CostType> &e : graph[ver]) {
if (dist[e.dst] > dist[ver] + e.cost) {
dist[e.dst] = dist[ver] + e.cost;
prev[e.dst] = ver;
que.emplace(dist[e.dst], e.dst);
}
}
}
return dist;
}
std::vector<int> build_path(int t) const {
assert(is_built);
std::vector<int> res;
for (; t != -1; t = prev[t]) res.emplace_back(t);
std::reverse(res.begin(), res.end());
return res;
}
private:
bool is_built = false;
std::vector<std::vector<Edge<CostType>>> graph;
std::vector<int> prev;
};
int main() {
int n, m;
std::cin >> n >> m;
std::vector<std::vector<Edge<int>>> graph(n + 1);
for (int i = 1; i <= n; ++i) {
graph[i].emplace_back(i, i - 1, 0);
graph[i - 1].emplace_back(i - 1, i, 1);
}
while (m--) {
int l, r, x;
std::cin >> l >> r >> x;
graph[l - 1].emplace_back(l - 1, r, r - l + 1 - x);
}
std::vector<int> a = Dijkstra(graph).build(0);
for (int i = 1; i <= n; ++i) {
std::cout << 1 - (a[i] - a[i - 1]) << " \n"[i == n];
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | G - 01Sequence |
| ユーザ | emthrm |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 600 |
| コード長 | 2524 Byte |
| 結果 | AC |
| 実行時間 | 286 ms |
| メモリ | 36688 KiB |
コンパイルエラー
./Main.cpp: In instantiation of ‘Dijkstra<CostType>::Dijkstra(const std::vector<std::vector<Edge<CostType> > >&, CostType) [with CostType = int]’:
./Main.cpp:81:38: required from here
./Main.cpp:64:44: warning: ‘Dijkstra<int>::graph’ will be initialized after [-Wreorder]
64 | std::vector<std::vector<Edge<CostType>>> graph;
| ^~~~~
./Main.cpp:25:18: warning: ‘const int Dijkstra<int>::inf’ [-Wreorder]
25 | const CostType inf;
| ^~~
./Main.cpp:27:3: warning: when initialized here [-Wreorder]
27 | Dijkstra(const std::vector<std::vector<Edge<CostType>>> &graph,
| ^~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 600 / 600 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0.txt, example1.txt |
| All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, 059.txt, 060.txt, 061.txt, 062.txt, example0.txt, example1.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 000.txt | AC | 8 ms | 3948 KiB |
| 001.txt | AC | 5 ms | 3940 KiB |
| 002.txt | AC | 5 ms | 3856 KiB |
| 003.txt | AC | 7 ms | 3928 KiB |
| 004.txt | AC | 7 ms | 3904 KiB |
| 005.txt | AC | 7 ms | 4028 KiB |
| 006.txt | AC | 107 ms | 9736 KiB |
| 007.txt | AC | 108 ms | 9612 KiB |
| 008.txt | AC | 106 ms | 9764 KiB |
| 009.txt | AC | 60 ms | 26568 KiB |
| 010.txt | AC | 59 ms | 26512 KiB |
| 011.txt | AC | 61 ms | 26632 KiB |
| 012.txt | AC | 64 ms | 26908 KiB |
| 013.txt | AC | 67 ms | 26708 KiB |
| 014.txt | AC | 64 ms | 26780 KiB |
| 015.txt | AC | 238 ms | 34792 KiB |
| 016.txt | AC | 258 ms | 35384 KiB |
| 017.txt | AC | 267 ms | 36216 KiB |
| 018.txt | AC | 174 ms | 33032 KiB |
| 019.txt | AC | 174 ms | 33176 KiB |
| 020.txt | AC | 172 ms | 33236 KiB |
| 021.txt | AC | 176 ms | 33032 KiB |
| 022.txt | AC | 7 ms | 3460 KiB |
| 023.txt | AC | 62 ms | 26688 KiB |
| 024.txt | AC | 60 ms | 26560 KiB |
| 025.txt | AC | 59 ms | 26556 KiB |
| 026.txt | AC | 8 ms | 3560 KiB |
| 027.txt | AC | 2 ms | 3480 KiB |
| 028.txt | AC | 74 ms | 7544 KiB |
| 029.txt | AC | 72 ms | 7624 KiB |
| 030.txt | AC | 63 ms | 26612 KiB |
| 031.txt | AC | 61 ms | 26700 KiB |
| 032.txt | AC | 58 ms | 26564 KiB |
| 033.txt | AC | 60 ms | 26572 KiB |
| 034.txt | AC | 59 ms | 26656 KiB |
| 035.txt | AC | 262 ms | 35172 KiB |
| 036.txt | AC | 266 ms | 35376 KiB |
| 037.txt | AC | 262 ms | 35244 KiB |
| 038.txt | AC | 262 ms | 35164 KiB |
| 039.txt | AC | 264 ms | 35184 KiB |
| 040.txt | AC | 62 ms | 26508 KiB |
| 041.txt | AC | 60 ms | 26560 KiB |
| 042.txt | AC | 63 ms | 26752 KiB |
| 043.txt | AC | 58 ms | 26652 KiB |
| 044.txt | AC | 61 ms | 26572 KiB |
| 045.txt | AC | 251 ms | 35220 KiB |
| 046.txt | AC | 286 ms | 36432 KiB |
| 047.txt | AC | 264 ms | 35172 KiB |
| 048.txt | AC | 239 ms | 34616 KiB |
| 049.txt | AC | 273 ms | 36436 KiB |
| 050.txt | AC | 103 ms | 28612 KiB |
| 051.txt | AC | 102 ms | 28668 KiB |
| 052.txt | AC | 100 ms | 28720 KiB |
| 053.txt | AC | 102 ms | 28672 KiB |
| 054.txt | AC | 95 ms | 28408 KiB |
| 055.txt | AC | 163 ms | 32652 KiB |
| 056.txt | AC | 164 ms | 32772 KiB |
| 057.txt | AC | 178 ms | 32972 KiB |
| 058.txt | AC | 180 ms | 32812 KiB |
| 059.txt | AC | 186 ms | 34912 KiB |
| 060.txt | AC | 197 ms | 34748 KiB |
| 061.txt | AC | 223 ms | 36532 KiB |
| 062.txt | AC | 243 ms | 36688 KiB |
| example0.txt | AC | 5 ms | 3600 KiB |
| example1.txt | AC | 2 ms | 3620 KiB |