傳送門
題意:你有一輛輪胎會跑氣的自行車,打滿一次氣可以走的距離是d,一開始自行車的氣是滿的,城市中有 n 個點,你要從1點到 n 點,其中有 t 個點處可以給自行車打氣,你只能在自行車有氣的時候走,問從1到 n 的最短路
思路:先跑一遍floyd求出每兩點之間的最短路,然後重新構圖,兩個打氣點之間的最短路 <= d時說明可以到達,否則不可以,然後再floyd || dijkstra求1到 n 的最短路。
#include using namespace std;
typedef long long ll;
const ll inf = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const int n = 507;
const int m = 3e5 + 7;
bool vis[n];
int n, m, t, tot, head[n], ok[n];
ll d, mp[n][n], dis[n];
struct node edge[m];
struct a
};void init()
void addedge(int u, int v, ll w)
void floyd()
}}void dijkstra(int src) );
while(!q.empty()) );}}
}}int main()
floyd();
init();
for(int i = 1; i <= t + 2; ++i)
}dijkstra(1);
if(dis[n] == inf) printf("stuck\n");
else printf("%lld\n", dis[n]);
return 0;
}
傳送門
題意:乙個長度為 n 的陣列,選擇某個字首或某個字尾或某個字首 + 某個字尾(不重合),問最大平均值
分析:所以要麼選字首,要麼選字尾,不會出現某前字尾同時選,取字首平均值和字尾平均值的最大值即可
#include using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int n = 1e6 + 7;
const int m = 2e6 + 7;
ll a[n], pre[n], las[n];
int main()
for(int i = n; i >= 1; --i)
printf("%.10f\n", max(max1, max2));
return 0;
}
2023年度訓練聯盟熱身訓練賽第一場
鏈結 題意 給定若干個空間中的點,求從三個標準空間直角座標平面進去能夠全部覆蓋這些點的最小半徑 題解 注意 includeusing namespace std define n 1e5 5 define inf 99999999 define eps 1e 6 define powe x x x ...
2023年度訓練聯盟熱身訓練賽第一場 C
給你乙個數n,求最小的數x使得x的平方等於n,運算過程中只以個位作為有效數字,比如正常情況4 4 16,在這裡4 4 6 正常情況17 17 289,在這裡17 17 149.首先寫一下乘法豎式。1 首先可以發現,得到的答案的位數一定是乙個奇數,而且是x的位數乘2加1,所以答案位數一定是偶數。那麼如...
牛客2023年度訓練聯盟熱身訓練賽第一場E題
知識點 單調棧 ac include include include using namespace std int a 200005 int vis 200010 int last 200005 int s 200005 int top intmain for int i 1 i k i for ...