제출 #533677

#제출 시각아이디문제언어결과실행 시간메모리
533677rumen_mAliens (IOI16_aliens)C++17
컴파일 에러
0 ms0 KiB
// name = sol_ge_nk_cheat.cpp, type = cpp.g++11 #include "aliens.h" #include <cstdio> #include <cmath> #include <cstdlib> #include <cassert> #include <ctime> #include <cstring> #include <string> #include <set> #include <map> #include <vector> #include <list> #include <deque> #include <queue> #include <sstream> #include <iostream> #include <algorithm> using namespace std; #define pb push_back #define mp make_pair #define fs first #define sc second const double pi = acos(-1.0); const int generation = 30000; const int size = 50 * 1050; const int ssize = 210; const int iters = 1000 * 1000 * 100; const long long inf = (long long) 1e18; vector <pair <int, int> > segs; random_device rd; mt19937 rgenerator(rd()); int n_; int genRandInt(int lb, int rb) { return lb + rgenerator() % (rb - lb + 1); } long long sqr(long long x) { return x * x; } long long ans[ssize][size]; //long long cost[size][size]; long long cost(int i, int j) { if (j == n_) return sqr(segs.back().sc - segs[i].fs + 1); else return sqr(segs[j - 1].sc - segs[i].fs + 1) - sqr(max(0, segs[j - 1].sc - segs[j].fs + 1)); } long long take_photos(int n, int m, int k, vector <int> r, vector <int> c) { vector <pair <int, int> > pts; for (int i = 0; i < n; i++) pts.pb(mp(min(r[i], c[i]), -max(r[i], c[i]))); sort(pts.begin(), pts.end()); int cmx = -1; for (int i = 0; i < n; i++) { if (-pts[i].sc > cmx) { segs.pb(pts[i]); segs.back().sc *= -1; cmx = -pts[i].sc; } } n = (int) segs.size(); k = min(n, k); n_ = n; /* for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { cost[j][i] = sqr(segs[j - 1].sc - segs[i].fs + 1) - sqr(max(0, segs[j - 1].sc - segs[j].fs + 1)); } cost[n][i] = sqr(segs.back().sc - segs[i].fs + 1); } */ for (int i = 0; i <= k; i++) for (int j = 0; j <= n; j++) ans[i][j] = inf; ans[0][0] = 0; // for (int i = 1; i <= k; i++) { // for (int j = 0; j < n; j++) // for (int q = j + 1; q <= n; q++) // ans[i][q] = min(ans[i][q], ans[i - 1][j] + cost[j][q]); // } int magic = iters / (n * k); // int magic = 1; for (int i = 1; i <= k; i++) { int p = 0; for (int j = 1; j <= n; j++) { bool flag = true; while (flag) { flag = false; for (int q = p + 1; q < min(j, p + magic); q++) if (ans[i - 1][q] + cost(q, j) <= ans[i - 1][p] + cost(p, j)) { p = q; flag = true; break; } if (!flag) { int step = max(1, (j - p) / magic); for (int q = p + magic; q < j; q += step) if (ans[i - 1][q] + cost(q, j) <= ans[i - 1][p] + cost(p, j)) { for (int t = max(p + 1, q - magic); t <= q; t++) { if (ans[i - 1][t] + cost(t, j) <= ans[i - 1][p] + cost(p, j)) { p = t; flag = true; break; } } flag = true; break; } } } ans[i][j] = min(ans[i - 1][j], ans[i - 1][p] + cost(p, j)); //while (p + 1 < j && ans[i - 1][p + 1] + cost(p + 1, j) <= ans[i - 1][p] + cost(p, j)) // p++; //for (int q = p; q < min(j, p + magic); q++) // ans[i][j] = min(ans[i][j], ans[i - 1][q] + cost(q, j)); for (int q = max(p + 1, j - magic); q < j; q++) { long long h = ans[i - 1][q] + cost(q, j); if (h <= ans[i][j]) { ans[i][j] = h; p = q; } // ans[i][j] = min(ans[i][j], ans[i - 1][q] + cost(q, j)); } for (int q = max(0, j - j / i - magic / 2); q < min(0, j - j / i + magic / 2); q++) { long long h = ans[i - 1][q] + cost(q, j); if (h <= ans[i][j]) { ans[i][j] = h; p = q; } // ans[i][j] = min(ans[i][j], ans[i - 1][q] + cost(q, j)); } } } return ans[k][n]; } /* int main() { int n, m, k; scanf("%d %d %d", &n, &m, &k); std::vector<int> r(n), c(n); for (int i = 0; i < n; i++) { scanf("%d %d", &r[i], &c[i]); } long long ans = take_photos(n, m, k, r, c); // BEGIN SECRET puts("098d134608c94f7413faac591054ee35"); // END SECRET cerr << (clock() + 0.0) / CLOCKS_PER_SEC << endl; printf("%lld\n", ans); return 0; } */

컴파일 시 표준 에러 (stderr) 메시지

aliens.cpp:37:1: error: 'random_device' does not name a type; did you mean 'random_data'?
   37 | random_device rd;
      | ^~~~~~~~~~~~~
      | random_data
aliens.cpp:38:1: error: 'mt19937' does not name a type
   38 | mt19937 rgenerator(rd());
      | ^~~~~~~
aliens.cpp: In function 'int genRandInt(int, int)':
aliens.cpp:43:17: error: 'rgenerator' was not declared in this scope; did you mean 'generation'?
   43 |     return lb + rgenerator() % (rb - lb + 1);
      |                 ^~~~~~~~~~
      |                 generation
aliens.cpp: At global scope:
aliens.cpp:50:22: error: reference to 'size' is ambiguous
   50 | long long ans[ssize][size];
      |                      ^~~~
In file included from /usr/include/c++/10/vector:69,
                 from aliens.h:3,
                 from aliens.cpp:3:
/usr/include/c++/10/bits/range_access.h:254:5: note: candidates are: 'template<class _Tp, long unsigned int _Nm> constexpr std::size_t std::size(const _Tp (&)[_Nm])'
  254 |     size(const _Tp (&)[_Nm]) noexcept
      |     ^~~~
/usr/include/c++/10/bits/range_access.h:245:5: note:                 'template<class _Container> constexpr decltype (__cont.size()) std::size(const _Container&)'
  245 |     size(const _Container& __cont) noexcept(noexcept(__cont.size()))
      |     ^~~~
aliens.cpp:30:11: note:                 'const int size'
   30 | const int size = 50 * 1050;
      |           ^~~~
aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:89:13: error: 'ans' was not declared in this scope; did you mean 'abs'?
   89 |             ans[i][j] = inf;
      |             ^~~
      |             abs
aliens.cpp:90:5: error: 'ans' was not declared in this scope; did you mean 'abs'?
   90 |     ans[0][0] = 0;
      |     ^~~
      |     abs