01:07(160)

This commit is contained in:
Your Name committed 2026-11-01 01:07:23 +08:00
1 parent e4991898d0
commit 9362c48811
2 files changed
+19 -7

No files matched your search

+11
View File
@@ -1,12 +1,23 @@
#include<bits/stdc++.h> #include<bits/stdc++.h>
using namespace std; using namespace std;
int c, t; int c, t;
int n, d;
int x[2000005];
int main() { int main() {
freopen("migrate.in", "r", stdin); freopen("migrate.in", "r", stdin);
freopen("migrate.out", "w", stdout); freopen("migrate.out", "w", stdout);
scanf("%d%d", &c, &t); scanf("%d%d", &c, &t);
while(t--) {
scanf("%d%d", &n, &d);
for(int i = 1; i <= n; ++i) {
scanf("%d", &x[i]);
}
}
return 0; return 0;
} }
/* /*
g++ migrate/migrate.cpp -o migrate/migrate -std=c++14 -O2 -static -Wall && cp migrate/migrate ~ && chmod +x ~/migrate && ~/migrate g++ migrate/migrate.cpp -o migrate/migrate -std=c++14 -O2 -static -Wall && cp migrate/migrate ~ && chmod +x ~/migrate && ~/migrate
每次飞行长度不超过 d
体力消耗为飞行次数
*/ */
+8 -7
View File
@@ -2,7 +2,7 @@
using namespace std; using namespace std;
int c, n, m, d, q; // 25 500 5e5 20 1e5 int c, n, m, d, q; // 25 500 5e5 20 1e5
int w[500005]; int w[500005];
vector<pair<int, int>> fri[500505]; vector<pair<long long, int>> fri[500505];
long long de[500505]; long long de[500505];
long long dline[505][505]; long long dline[505][505];
priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq; priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;
@@ -13,7 +13,7 @@ void dig(int s) {
while(!pq.empty()) { while(!pq.empty()) {
pair<long long, int> u = pq.top(); pair<long long, int> u = pq.top();
pq.pop(); pq.pop();
for(pair<int, int> v : fri[u.second]) { for(pair<long long, int> v : fri[u.second]) {
if(de[v.second] > de[u.second] + v.first) { if(de[v.second] > de[u.second] + v.first) {
de[v.second] = de[u.second] + v.first; de[v.second] = de[u.second] + v.first;
pq.push({de[v.second], v.second}); pq.push({de[v.second], v.second});
@@ -30,8 +30,9 @@ int main() {
} }
for(int i = 1, k; i <= n; ++i) { for(int i = 1, k; i <= n; ++i) {
scanf("%d", &k); scanf("%d", &k);
for(int j = 1, sta, ti; j <= k; ++j) { for(int j = 1, sta; j <= k; ++j) {
scanf("%d%d", &sta, &ti); long long ti;
scanf("%d%lld", &sta, &ti);
fri[m + i].push_back({ti, sta}); fri[m + i].push_back({ti, sta});
fri[sta].push_back({ti, m + i}); fri[sta].push_back({ti, m + i});
} }
@@ -48,13 +49,13 @@ int main() {
int x, y; int x, y;
scanf("%d%d", &x, &y); scanf("%d%d", &x, &y);
long long ans = LLONG_MAX; long long ans = LLONG_MAX;
for(pair<int, int> i : fri[x]) { for(pair<long long, int> i : fri[x]) {
for(pair<int, int> j : fri[y]) { for(pair<long long, int> j : fri[y]) {
ans = min(ans, dline[i.second - m][j.second - m] + i.first + j.first); ans = min(ans, dline[i.second - m][j.second - m] + i.first + j.first);
} }
} }
// dig(x); // dig(x);
printf("%lld\n", w[x] + w[y] + ans); printf("%lld\n", 1ll * w[x] + 1ll * w[y] + ans);
} }
return 0; return 0;
} }