| |
| |
| |
| |
| |
| |
| |
| #include <bits/stdc++.h> |
| |
| using namespace std; |
| |
| template<class T> |
| void debugVector(const T &a) { |
| cout << "[ "; |
| for (size_t i = 0; i < a.size(); ++i) { |
| cout << a[i] << (i == a.size() - 1 ? " " : ", "); |
| } |
| cout << "]" << endl; |
| } |
| |
| template<class T1, class T2> |
| void debugVectorPair(const vector<pair<T1, T2>> &a) { |
| cout << "{"; |
| for (size_t i = 0; i < a.size(); ++i) { |
| cout << "[ " << a[i].first << ": " << a[i].second << (i == a.size() - 1 ? " ]" : " ], "); |
| } |
| cout << "}" << endl; |
| } |
| |
| |
| template<class T> |
| void debugMatrix2(const T &a) { |
| for (size_t i = 0; i < a.size(); ++i) { |
| debugVector(a[i]); |
| } |
| } |
| |
| template<class T> |
| using matrix2 = vector<vector<T>>; |
| |
| template<class T> |
| vector<vector<T>> getMatrix2(size_t n, size_t m, T init = T()) { |
| return vector<vector<T>>(n, vector<T>(m, init)); |
| } |
| |
| template<class T> |
| using matrix3 = vector<vector<vector<T>>>; |
| |
| template<class T> |
| vector<vector<vector<T>>> getMatrix3(size_t x, size_t y, size_t z, T init = T()) { |
| return vector<vector<vector<T>>>(x, vector<vector<T>>(y, vector<T>(z, init))); |
| } |
| |
| vector<int> genBigInteger(const string &a) { |
| vector<int> res; |
| if (a.empty()) return res; |
| for (int i = a.size() - 1; i >= 0; --i) { |
| res.push_back(a[i] - '0'); |
| } |
| return res; |
| } |
| |
| ostream &printBigInteger(const vector<int> &a) { |
| if (a.empty()) return cout; |
| for (int i = a.size() - 1; i >= 0; --i) { |
| cout << a[i]; |
| } |
| return cout; |
| } |
| |
| vector<int> maxBigInteger(const vector<int> &a, const vector<int> &b) { |
| if (a.size() > b.size()) { |
| return a; |
| } else if (a.size() < b.size()) { |
| return b; |
| } |
| for (int i = a.size() - 1; i >= 0; --i) { |
| if (a[i] > b[i]) { |
| return a; |
| } else if (a[i] < b[i]) { |
| return b; |
| } |
| } |
| return a; |
| } |
| |
| vector<int> addBigInteger(const vector<int> &a, const vector<int> &b) { |
| vector<int> res; |
| int pre = 0; |
| for (size_t i = 0; i < a.size() || i < b.size() || pre; ++i) { |
| if (i < a.size()) pre += a[i]; |
| if (i < b.size()) pre += b[i]; |
| res.push_back(pre % 10); |
| pre /= 10; |
| } |
| while (res.size() > 1 && res.back() == 0) { |
| res.pop_back(); |
| } |
| return res; |
| } |
| |
| vector<int> mulBigInteger(const vector<int> &a, int b) { |
| vector<int> res; |
| int pre = 0; |
| for (size_t i = 0; i < a.size() || pre; ++i) { |
| if (i < a.size()) pre += a[i] * b; |
| res.push_back(pre % 10); |
| pre /= 10; |
| } |
| while (res.size() > 1 && res.back() == 0) { |
| res.pop_back(); |
| } |
| return res; |
| } |
| |
| vector<int> divBigInteger(const vector<int> &a, int b, int &r) { |
| vector<int> res; |
| for (int i = a.size() - 1; i >= 0; --i) { |
| r = 10 * r + a[i]; |
| res.push_back(r / b); |
| r %= b; |
| } |
| reverse(res.begin(), res.end()); |
| while (res.size() > 1 && res.back() == 0) { |
| res.pop_back(); |
| } |
| return res; |
| } |
| |
| int main() { |
| ios::sync_with_stdio(false); |
| cin.tie(0); |
| |
| int n; |
| cin >> n; |
| vector<int> info(n + 1); |
| for(int i = 1; i <= n; ++i) { |
| cin >> info[i]; |
| } |
| matrix2<int> path = getMatrix2(n + 1, n + 1, 0); |
| for (int i = 1; i <= n; ++i) { |
| for (int j = i + 1; j <= n; ++j) { |
| cin >> path[i][j]; |
| } |
| } |
| |
| |
| vector<int> res = info; |
| for (int i = n; i > 0; --i) { |
| for (int j = 1; j <= n; ++j) { |
| if (path[i][j]) { |
| res[i] = max(res[i], info[i] + res[j]); |
| } |
| } |
| } |
| |
| int maxv = 0; |
| int maxi = 0; |
| for (int i = 1; i <= n; ++i) { |
| if (res[i] > maxv) { |
| maxv = res[i]; |
| maxi = i; |
| } |
| } |
| |
| cout << maxi << " "; |
| while (true) { |
| if (res[maxi] == info[maxi]) { |
| cout << endl; |
| cout << maxv << endl; |
| return 0; |
| } |
| for (int i = maxi + 1; i <= n; ++i) { |
| if (res[i] == res[maxi] - info[maxi]) { |
| maxi = i; |
| break; |
| } |
| } |
| cout << maxi << " "; |
| |
| } |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY