제출 #1107097

#제출 시각아이디문제언어결과실행 시간메모리
1107097khanhtai전선 연결 (IOI17_wiring)C++14
7 / 100
34 ms7740 KiB
#include "wiring.h" #include<bits/stdc++.h> //#define int long long #define ll long long #define pb push_back #define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); #define MOD 1000000007 #define inf 1e18 #define fi first #define se second #define FOR(i,a,b) for(int i=a;i<=b;i++) #define FORD(i,a,b) for(int i=a;i>=b;i--) #define sz(a) ((int)(a).size()) #define endl '\n' #define pi 3.14159265359 #define TASKNAME "wiring" using namespace std; template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return true; }; return false; } template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return true; }; return false; } typedef pair<int,int> ii; typedef pair<int,ii> iii; typedef vector<int> vi; const int MAXN = 3e5 + 9; /** Ta cần phải: - Ghép nối các thằng đó sao cho mỗi thằng đỏ luôn được nối với 1 thằng xanh và chi phí nối là nhỏ nhất. - Chi phí ghép nối giữa thằng i và j là abs(p[i] - p[j]). subtask 1: n <= 200, m <= 200 Gia su n <= m. dp[i][j]: ta da ghep thang i o r va thang j o b; dp[i][j]: --> dp[i + 1][j] bằng cách ghép i và j. dp[i][j]: --> dp[i][j + 1] bằng cách bỏ qua i. dp[n][m]. **/ int n, m; vector<int> r, b; namespace subtask1{ bool check(){ return n <= 200 and m <= 200; } ll dp[201][201], lastRed = 0, lastBlue = 0; struct point{ ll x; ll color; point(ll _x = 0, ll _color = 0): x(_x), color(_color) {} bool operator < (const point &other) const { return x < other.x; } }; vector<point> p; ll solve(){ n = r.size(); m = b.size(); memset(dp, 0x3f, sizeof(dp)); dp[0][0] = 0; for(int i = 1; i<= n; i++){ for(int j = 1; j <= m; j++){ dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + abs(r[i - 1] - b[j - 1]); // cout << i << ' ' << j << ' ' << dp[i][j] << ' '<< dp[i - 1][j] <<' '<<dp[i][j - 1] << ' ' << dp[i - 1][j - 1] <<endl; } } return dp[n][m]; } } ll min_total_length(vector<int> r1, vector<int> b1){ r = r1; b = b1; n = r.size(); m = b.size(); if (subtask1::check()) return subtask1::solve(); } /** Warning: Đọc sai đề??? Cận lmao Code imple thiếu case nào không. Limit. **/

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

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:83:1: warning: control reaches end of non-void function [-Wreturn-type]
   83 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...