投递拼多多集团-PDD等公司9个岗位 >
0 点赞 评论 收藏
分享
投递拼多多集团-PDD等公司9个岗位 >
0 点赞 评论 收藏
分享
Blue5437:第三题: int main() { int T; cin >> T; while (T--) { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector<int> dp(n, 0); dp[n - 1] = -1; for (int i = n - 2; i >= 0; i--) { for (int j = min(n - 1, i + k); j > i; j--) { if (a[j] <= a[i] && dp[j] == -1) { dp[i] = -1; break; } } } if (dp[0] == -1) { cout << "YES" << endl; continue; } for (int i = 0; i < n; i++) cout << dp[i] << ' '; cout << endl; bool res = false; dp[0] = 1; for (int i = 1; i < n; i++) { for (int j = max(0, i - k); j < i; j++) { if (dp[j] == 1) { if (dp[i] == -1) { res = true; break; } else if (a[j] >= a[i]) dp[i] = 1; } } if (res == true) break; } if (res) cout << "YES" << endl; else cout << "NO" << endl; } system("pause"); return 0; }
投递网易等公司9个岗位 >
0 点赞 评论 收藏
分享
投递网易互娱等公司9个岗位 >
0 点赞 评论 收藏
分享
投递爱奇艺等公司9个岗位 >
0 点赞 评论 收藏
分享
p0p0p:#当时没有考虑n==1的情况,以及判断没有路径的情况, 只有63%
#不知道现在加上能不能ac
def dfs(res,num,fg,i,cnt):
if sum(fg) == 2 and fg[0] == 1 and num[i][0] != -1: #只剩两个城市 ,起点还未到达, 且可以返回起点
res.append(cnt+num[i][0])
return
if fg[0] == 0: #无法回到起点,起点被遍历两遍
return
for kk in range(n):
if num[i][kk] != -1 and fg[kk] > 0: #有路且去向城市未访问过
fg[i] -= 1
dfs(res,num,fg,kk,cnt+num[i][kk]) #
fg[i] += 1
return
n = int(input())
if n ==1: #考虑n==1的情况
print(0)
else:
m = int(input())
num =[[ -1 for i in range(n)] for j in range(n)]
for k in range(m): #构造邻接矩阵
i,j,d = [int(tmp) for tmp in input().split(' ')]
num[i][j] = d
num[j][i] = d
fg = [1]*n #改点是否访问标志
fg[0] = 2 #起点需访问两遍
res = []
dfs(res,num,fg,0,0)
if len(res) == 0: #考虑没有路径的情况
print(-1)
else:
print(min(res))
投递携程等公司9个岗位 >
0 点赞 评论 收藏
分享
一只胖喵:同样是暴力dp为什么我27%就超时了😭
投递顺丰集团等公司9个岗位 >
0 点赞 评论 收藏
分享
Blue5437:顺便求大佬给我讲下第二题卡特兰数怎么找出来的
投递字节跳动等公司9个岗位 >
0 点赞 评论 收藏
分享
Blue5437:第三题 typedef struct node { int x, y; friend bool operator <(node a, node b) { if (a.x == b.x) return a.y > b.y; else return a.x > b.x; } node(int a, int b) { x = a; y = b; } }; int main() { priority_queue<node> q; int n, m; cin >> n >> m; vector<int> need_time(n + 1); for (int i = 1; i <= n; i++) cin >> need_time[i]; vector<vector<int>> depen(n + 1); vector<int> de_nums(n + 1, 0); for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; de_nums[b]++; depen[a].push_back(b); } for (int i = 1; i <= n; i++) if (de_nums[i] == 0) q.push(node(need_time[i], i)); vector<int> res; while (!q.empty()) { int y = q.top().y; res.push_back(y); q.pop(); for (int i = 0; i < depen[y].size(); i++) { de_nums[depen[y][i]]--; if (de_nums[depen[y][i]] == 0) q.push(node(need_time[depen[y][i]], depen[y][i])); } } for (int i = 0; i < res.size(); i++) cout << res[i] << ' '; cout << endl; system("pause"); return 0; }
投递拼多多集团-PDD等公司9个岗位 >
0 点赞 评论 收藏
分享
投递美团等公司9个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了: