-
个人简介
洛谷7915
#include <iostream> #include <cstdio> using namespace std; const int N= 1e6 + 50; int T, n, a[N]; int f[N], d[N]; bool vis[N]; string ans; void init() { scanf("%d", &n); for (int i = 1; i <= (n << 1); i++) scanf("%d", a + i); for (int i = 1; i <= (n << 1); i++) { //记录相同数字互相的位置 if (!vis[a[i]]) { vis[a[i]] = true; d[a[i]] = i; } else { f[d[a[i]]] = i; f[i] = d[a[i]]; } } } void solve() { if (a[1] <= a[n << 1]) { ans = "L"; int i = 2, j = (n << 1); int l = f[a[i]] - 1, r = f[a[i]] + 1; while (true) { if (l < i) m = 0; if (r > j) r = 0; } } else { ans = "R"; } } int main() { scanf("%d", &T); while (T--) { init(); solve(); } return 0; }
Kruskal:
#include <iostream> #include <algorithm> using namespace std; #define ll long long const int N = 5e5 + 50, F = 2e5 + 50; int n, m, f[F]; struct Node{ int u, v, w; bool operator<(const Node &P)const{ return w < P.w; } }a[N]; int Find(int x) { while (x != f[x]) x = f[x] = f[f[x]]; return x; } ll ans = 0; void Kruskal() { for (int i = 1; i <= n; i++) f[i] = i; sort(a + 1, a + m + 1); for (int i = 1; i <= m; i++) { int fx = Find(a[i].u), fy = Find(a[i].v); if (fx != fy) { ans += a[i].w; f[fx] = fy; } } } int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= m; i++) { scanf("%d %d %d", &a[i].u, &a[i].v, &a[i].w); } Kruskal(); printf("%lld", ans); return 0; }
Prim:
#include <iostream> #include <queue> #include <utility> using namespace std; #define ll long long #define PII pair<int, int> const int N = 2e5 + 50, M = 5e5 + 50; int n, m, u, v, w; ll ans = 0; struct Node { int v, nxt, w; } e[M << 1]; int head[M << 1], cnt = 0, num = 0; bool vis[N]; void add(int u, int v, int w) { cnt++; e[cnt].w = w; e[cnt].v = v; e[cnt].nxt = head[u]; head[u] = cnt; return ; } priority_queue<PII, vector<PII>, greater<PII> > Q; void Prim() { // 长度 点位 Q.push({0, 1}); while (!Q.empty() && num < n) { PII tmp = Q.top(); Q.pop(); // 判断是否加入最小生成树, 如果加入,换下一个点 while (vis[tmp.second] && !Q.empty()) { tmp = Q.top(); Q.pop(); } ans += (ll)tmp.first; num++; //计数 vis[tmp.second] = true; // 标记 for (int i = head[tmp.second]; i; i = e[i].nxt) { if (!vis[e[i].v]) { // 如果还没加入最小生成树,则加入 Q.push({e[i].w, e[i].v}); } } } } int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= m; i++) { scanf("%d %d %d", &u, &v, &w); add(u, v, w); add(v, u, w);//无向图 } Prim(); cout << ans; return 0; }
Dijsktra:
#include <iostream> #include <queue> #include <utility> #include <cstring> using namespace std; #define ll long long #define PII pair<int, int> const int N = 2e4; int n, m, S, T; ll s, t, w; struct Node{ int v, w; int nxt; }e[N]; int head[N], cnt, vis[N]; ll dis[N]; priority_queue<PII, vector<PII>, greater<PII> > Q; void add(ll u, ll v, ll w) { // 建立联系 cnt++; e[cnt].w = w; e[cnt].v = v; e[cnt].nxt = head[u]; head[u] = cnt; return ; } void Dijsktra() { memset(dis, 0x3f3f3f, sizeof(dis)); // 初始化 最大值 Q.push({0, S}); // 从 S 开始找路,并且第一个数字表示当前点到 S 的距离 while (!Q.empty()) { PII tmp = Q.top(); // 取出 Q.pop(); // 删除 int now = tmp.second; int d = tmp.first; if (vis[now]) continue; /* Dijsktra 算法是对 边 进行优化,实质是贪心 所以,如果这个点我来过,我就不在再对这个点进行遍历 */ vis[now] = true; // 标记,来过 for (int i = head[now]; i; i = e[i].nxt) { int v = e[i].v, w = e[i].w; // 取出 if (dis[v] > d + w) { // 判断条件,结合图形理解 dis[v] = d + w; // 更新最短路 Q.push({dis[v], v}); // 存入这个当前最短路径以及这个点 } } } } int main() { scanf("%d %d %d %d", &n, &m, &S, &T); for (int i = 1; i <= m; i++) { scanf("%lld %lld %lld", &s, &t, &w); // 建立联系 add(s, t, w); add(t, s, w); } Dijsktra(); cout << dis[T]; return 0; }
Spfa:
#include <iostream> #include <queue> #include <cstring> using namespace std; #define ll long long const int N = 2e4; int n, m, S, T; ll s, t, w; struct Node{ int v, w; int nxt; }e[N]; int head[N], cnt, vis[N]; ll dis[N]; queue<int> Q; void add(ll u, ll v, ll w) { cnt++; e[cnt].w = w; e[cnt].v = v; e[cnt].nxt = head[u]; head[u] = cnt; return ; } void spfa() { memset(dis, 0x3f3f3f, sizeof(dis)); dis[S] = 0; Q.push(S); vis[S] = true; while (!Q.empty()) { int now = Q.front(); Q.pop(); vis[now] = false; /* spfa实际上是存的点,这样就和Dijsktra有所不同 判断条件变为 这个点 i 如果在 容器 Q 中,vis[i] = true 取出后或者不在容器里了,vis[i] = false */ for (int i = head[now]; i; i = e[i].nxt) { int v = e[i].v, w = e[i].w; if (dis[v] > dis[now] + w) { // 同理,判断条件,理解不了就结合图形 dis[v] = dis[now] + w; if (!vis[v]) { // 如果这个点不在我的容器 Q 里面,就标记 并且 存入 vis[v] = true; Q.push(v); } } } } } int main() { scanf("%d %d %d %d", &n, &m, &S, &T); for (int i = 1; i <= m; i++) { scanf("%lld %lld %lld", &s, &t, &w); // 建立联系 add(s, t, w); add(t, s, w); } spfa(); cout << dis[T]; return 0; }
Floyd:
#include <iostream> #include <cstring> using namespace std; const int N = 3000; int n, m, S, T; int s, t, w; int dp[N][N]; void Floyd() { for (int k = 1; k <= n; k++) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]); } } } } int main() { scanf("%d %d %d %d", &n, &m, &S, &T); memset(dp, 0x3f3f3f, sizeof(dp)); //初始化 // for (int i = 0; i < N; i++) // for (int j = 0; j < N; j++) dp[i][j] = 1000000; for (int i = 1; i <= m; i++) { scanf("%d %d %d", &s, &t, &w); dp[s][t] = dp[t][s] = w; // 从 s -> t 的边权为 w,从 t -> s 的边权为 w } Floyd(); cout << dp[S][T]; // 输出从 S -> T 的单源最短路径 return 0; }
-
通过的题目
- 1
- 2
- 3
- 4
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 26
- 34
- 44
- 48
- 51
- 55
- 60
- 62
- 64
- 65
- 75
- 81
- 85
- 89
- 97
- 99
- 100
- 102
- 103
- 105
- 108
- 115
- 117
- 122
- 128
- 131
- 135
- 137
- 139
- 141
- 142
- 143
- 144
- 145
- 146
- 148
- 151
- 162
- 189
- 212
- 216
- 222
- 223
- 224
- 226
- 228
- 229
- 236
- 240
- 246
- 267
- 268
- 269
- 274
- 276
- 277
- 279
- 280
- 281
- 282
- 283
- 284
- 287
- 288
- 293
- 295
- 303
- 304
- 309
- 311
- 319
- 322
- 323
- 332
- 333
- 344
- 355
- 364
- 368
- 369
- 370
- 371
- 372
- 373
- 385
- 391
- 405
- 406
- 407
- 409
- 410
- 411
- 418
- 427
- 428
- 431
- 432
- 436
- 447
- 450
- 454
- 457
- 461
- 466
- 467
- 468
- 472
- 473
- 476
- 478
- 479
- 481
- 483
- 485
- 493
- 494
- 495
- 496
- 502
- 505
- 506
- 508
- 510
- 511
- 517
- 519
- 520
- 535
- 539
- 541
- 542
- 554
- 555
- 557
- 559
- 561
- 563
- 564
- 566
- 567
- 571
- 583
- 584
- 586
- 587
- 591
- 601
- 643
- 648
- 659
- 661
- 663
- 672
- 678
- 682
- 683
- 684
- 685
- 687
- 689
- 690
- 692
- 700
- 713
- 727
- 730
- 736
- 743
- 748
- 750
- 756
- 758
- 760
- 761
- 762
- 768
- 769
- 774
- 775
- 776
- 777
- 785
- 787
- 790
- 794
- 797
- 809
- 810
- 812
- 814
- 815
- 817
- 825
- 829
- 831
- 836
- 842
- 849
- 860
- 865
- 871
- 874
- 884
- 885
- 887
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 901
- 902
- 903
- 904
- 905
- 906
- 908
- 925
- 926
- 930
- 938
- 941
- 942
- 943
- 949
- 951
- 952
- 953
- 962
- 969
- 977
- 978
- 990
- 994
- 995
- 997
- 999
- 1001
- 1003
- 1009
- 1010
- 1018
- 1021
- 1022
- 1031
- 1038
- 1039
- 1040
- 1045
- 1047
- 1048
- 1049
- 1056
- 1057
- 1064
- 1067
- 1071
- 1074
- 1076
- 1092
- 1095
- 1101
- 1103
- 1108
- 1110
- 1115
- 1116
- 1117
- 1130
- 1132
- 1137
- 1138
- 1139
- 1142
- 1144
- 1150
- 1153
- 1156
- 1157
- 1158
- 1159
- 1160
- 1162
- 1163
- 1166
- 1168
- 1178
- 1179
- 1180
- 1181
- 1182
- 1187
- 1195
- 1207
- 1301
- 1302
- 1303
- 1313
- 1315
- 1364
- 1384
- 1554
- 1564
- 1568
- 1574
- 1575
- 1599
- 1710
- 1740
- 1757
- 1760
- 1865
- 1866
- 1867
- 1868
- 1869
- 1876
- 1895
- 1902
- 1905
- 1910
- 1913
- 1914
- 1921
- 1923
- 1926
- 1930
- 1937
- 1943
- 1965
- 1972
- 1973
- 1979
- 1988
- 1991
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2009
- 2011
- 2012
- 2013
- 2015
- 2016
- 2019
- 2020
- 2021
- 2023
- 2024
- 2025
- 2031
- 2032
- 2033
- 2035
- 2036
- 2039
- 2058
- 2059
- 2060
- 2080
- 2087
- 2094
- 2095
- 2102
- 2105
- 2106
- 2108
- 2113
- 2115
- 2127
- 2130
- 2137
- 2140
- 2142
- 2143
- 2144
- 2145
- 2146
- 2161
- 2194
- 2197
- 2198
- 2202
- 2204
- 2221
- 2233
- 2234
- 2235
- 2236
- 2237
- 2241
- 2243
- 2249
- 2250
- 2251
- 2253
- 2255
- 2256
- 2260
- 2261
- 2264
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2295
- 2298
- 2302
- 2303
- 2307
- 2335
- 2336
- 2341
- 2342
- 2345
- 2346
- 2347
- 2349
- 2350
- 2351
- 2352
- 2353
- 2362
- 2383
- 2384
- 2385
- 2392
- 2402
- 2403
- 2477
- 2569
- 2636
- 2637
- 2638
- 2640
- 2641
- 2642
- 2646
- 2650
- 2652
- 2664
- 2666
- 2668
- 2678
- 2679
- 2682
- 2683
- 2684
- 2693
- 2702
- 2715
- 2716
- 2719
- 2720
- 2739
- 2741
- 2752
- 2753
- 2761
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2820
- 2821
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2848
- 2849
- 2850
- 2851
- 2852
- 2855
- 2856
- 2857
- 2858
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2892
- 2896
- 2906
- 2920
- 2922
- 2927
- 2934
- 2942
- 2947
- 2992
- 2999
- 3005
- 3034
- 3035
- 3039
- 3042
- 3044
- 3048
- 3050
- 3058
- 3059
- 3063
- 3074
- 3075
- 3076
- 3082
- 3086
- 3088
- 3093
- 3094
- 3097
- 3098
- 3099
- 3101
- 3125
- 3154
- 3269
- 3275
- 3281
- 3286
- 3305
- 3412
- 3458
- 3465
- 3475
- 3499
- 3507
- 3508
- 3523
- 3529
- 3539
- 3566
- 3602
- 3606
- 3667
- 3677
- 3678
- 3680
- 3692
- 3702
- 3703
- 3704
- 3705
- 3711
- 3712
- 3713
- 3714
- 3721
- 3956
-
最近活动
- 2024年国庆C2025&G2027届赛前训练 IOI
- 2024年国庆C2025&G2027届常规训练 IOI
- 2024年9月14日提高组初赛赛前练习 OI
- 2024年8月31日月末测试(C2025届&C2026届) OI
- 2024年8月29日下午C2026届训练 OI
- 2024年8月NOIP模拟测试 OI
- 2024年8月CSP-S模拟测试 OI
- 2024年8月普及组初赛模拟题 OI
- 2024年暑假高温测试 IOI
- 2024年暑假集训测试(20240721) OI
- C2026届初赛知识点测试 OI
- C2026届2024年7月12日二阶(上)测试 OI
- C2024届-温故而知新 作业
- 2024年7月3日C2025届周末测试 乐多
- 2024年6月16日初三复血赛 乐多
- 教师基础语法练习 作业
- 2024年4月30日~假期快乐~ IOI
- C2025届2024年3月2日开学赛 乐多
- C2025届2024年2月8日新春赛 乐多
- C2025届2024年2月4日立春赛 OI
- C2026届2023年12月31日元旦跨年赛 OI
- C2025届2023年12月31日元旦跨年赛 OI
- C2025届2023年11月18日练习_排序 作业
- 教师练题之二维数组 作业
- 教师练题之一维数组 作业
- 教师练题之循环 作业
- C2024届2023年10月19日复赛前练习 OI
- C2024届毕业赛(20231015) IOI
- C2024届2023年国庆练习(20231002) OI
- C2024届2023年中秋节练习(20230930) IOI
- C2025届2023年中秋节练习(20230930) IOI
- C2025届2023年国庆前练习(20230928) IOI
- C2024届2023年国庆前练习(20230928) IOI
- 2023年复赛前练习(20230923) IOI
- 2023年初赛知识练习(20230915) OI
- 2023年暑期初赛知识练习(20230910) OI
- C2024届基础知识练习(20230903) 作业
- 2023年CSP-J练习(20230830) OI
- C2024届2023年暑期CSP-J练习(20230820) OI
- 2023年暑期初赛知识练习(20230819)下 OI
- 2023年暑期初赛知识练习(20230819)上 OI
- C2024届2023年暑期CSP-J练习(20230818) IOI
- 2023年暑期初赛知识练习(20230813) OI
- C2025届2023年暑期练习 作业
- C2024届2023年暑期练习 作业
- C2025届暑期二阶上练习题(20230730) OI
- C2024届暑期二阶下练习题(20230730) IOI
- C2025届普及组二阶(上)练习(20230725) OI
- C2024届二阶(下)测试题(20230723) OI
- C2024届20230721晚作业(模拟、搜索、DP) 作业
- C2024届20230718晚作业(DFS) 作业
- C2024届20230720晚作业(DP-背包) 作业
- C2024届20230719晚作业(DP-入门) 作业
- C2025届普及组一阶测试(校本部20230718) OI
- C2024届20230717晚作业(模拟、FFT、bfs) 作业
- C2024届二阶(下)练习题(20230717)【模拟,DFS】 IOI
- C2025届普及组一阶总复习(20230715) 作业
- C2025届普及组一阶测试(20230715) OI
- C2024届普及组二阶(下)测试(20230704) IOI
- C2025届普及组一阶基础知识测试(20230704) IOI
- C2024届普及组二阶(下)中期测试(20230605) OI
- C2025届普及组一阶中期测试(20230605) OI
- C2024届五一练习(2023429) 作业
- C2024二阶中测试(20230404)_重现 乐多
- C2025届选择结构练习周日班(20230413) 作业
- C2024二阶中测试(20230404) OI
- C2024届20230204寒假测试 IOI
- 20230113~16课程练习题 作业
- C2024届基础知识巩固20221224 作业
- C2024课中(后)作业(单调栈)20221216 作业
- C2024课后作业(栈)20221210 作业
- C2024届知识巩固提高(20221203) IOI
- C2024届知识巩固提高(20221126) IOI
- C2024届知识巩固提高(20221118) IOI
- C2024届基础知识练习(20221113) IOI
- C2024届基础知识练习(20221106) OI
- C2024map知识巩固20221023 作业
- C2024届基础知识拓展赛(20221008) OI
- C2024知识巩固练习20221004 作业
- C2024届国庆杯知识巩固赛(20221004) OI
- C2024课堂练习20220930 作业
- C2024课堂练习20220924 作业
- C2024届初赛模拟题(20220904) OI
- 2022暑期知识巩固赛(20220830) OI
- 2022暑期知识熟悉赛(20220823) OI
- 花式冰粉杯(20220717) OI
- C2024课后作业20220625 作业
- 20220605端午测试 OI
- C2024课后作业20220527 作业
- C2024课后作业20220520 作业
- C2024课后作业20220514 作业
- 课后作业(20220430) 作业
- 课堂作业(20220430) 作业
- 课后作业(202204) 作业
- 课堂作业4班(20220417) 作业
- 课堂作业1班(20220416) 作业
- 课后作业(20220403) 作业
题目标签
- 基础语法
- 179
- 字符串
- 63
- 递归
- 52
- 动态规划
- 49
- 模拟
- 48
- 其他
- 45
- dp
- 44
- 普及组
- 43
- noip
- 42
- 数据结构
- 36
- 搜索
- 35
- dfs
- 33
- 数论
- 31
- 素数判定
- 28
- 结构体
- 27
- 贪心
- 26
- 循环
- 25
- 普及组二阶下测试题
- 25
- 文件重定向
- 24
- 数组问题
- 24