-
个人简介
洛谷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; }
-
通过的题目
- P1
- P2
- P3
- P4
- P10
- P11
- P12
- P13
- P14
- P15
- P16
- P26
- P34
- P44
- P48
- P51
- P55
- P60
- P62
- P64
- P65
- P75
- P81
- P85
- P89
- P97
- P99
- P100
- P102
- P103
- P105
- P108
- P115
- P117
- P122
- P128
- P131
- P135
- P137
- P139
- P141
- P142
- P143
- P144
- P145
- P146
- P148
- P151
- P162
- P189
- P212
- P216
- P222
- P223
- P224
- P226
- P228
- P229
- P236
- P240
- P246
- P267
- P268
- P269
- P274
- P276
- P277
- P279
- P280
- P281
- P282
- P283
- P284
- P287
- P288
- P293
- P295
- P303
- P304
- P309
- P311
- P319
- P322
- P323
- P332
- P333
- P344
- P355
- P364
- P368
- P369
- P370
- P371
- P372
- P373
- P385
- P391
- P405
- P406
- P407
- P409
- P410
- P411
- P418
- P427
- P428
- P431
- P432
- P436
- P447
- P450
- P454
- P457
- P461
- P466
- P467
- P468
- P472
- P473
- P476
- P478
- P479
- P481
- P483
- P485
- P493
- P494
- P495
- P496
- P502
- P505
- P506
- P508
- P510
- P511
- P517
- P519
- P520
- P535
- P539
- P541
- P542
- P554
- P555
- P557
- P559
- P561
- P563
- P564
- P566
- P567
- P571
- P583
- P584
- P586
- P587
- P591
- P601
- P643
- P648
- P659
- P661
- P663
- P672
- P678
- P682
- P683
- P684
- P685
- P687
- P689
- P690
- P692
- P700
- P713
- P727
- P730
- P736
- P743
- P748
- P750
- P756
- P758
- P760
- P761
- P762
- P768
- P769
- P774
- P775
- P776
- P777
- P785
- P787
- P790
- P794
- P797
- P809
- P810
- P812
- P814
- P815
- P817
- P825
- P829
- P831
- P836
- P842
- P849
- P860
- P865
- P871
- P874
- P884
- P885
- P887
- P889
- P890
- P891
- P892
- P893
- P894
- P895
- P901
- P902
- P903
- P904
- P905
- P906
- P908
- P925
- P926
- P930
- P938
- P941
- P942
- P943
- P949
- P951
- P952
- P953
- P962
- P969
- P977
- P978
- P990
- P994
- P995
- P997
- P999
- P1001
- P1003
- P1009
- P1010
- P1018
- P1021
- P1022
- P1031
- P1038
- P1039
- P1040
- P1045
- P1047
- P1048
- P1049
- P1056
- P1057
- P1064
- P1067
- P1071
- P1074
- P1076
- P1092
- P1095
- P1101
- P1103
- P1108
- P1110
- P1115
- P1116
- P1117
- P1130
- P1132
- P1137
- P1138
- P1139
- P1142
- P1144
- P1150
- P1153
- P1156
- P1157
- P1158
- P1159
- P1160
- P1162
- P1163
- P1166
- P1168
- P1178
- P1179
- P1180
- P1181
- P1182
- P1187
- P1195
- P1207
- P1301
- P1302
- P1303
- P1313
- P1315
- P1364
- P1384
- P1554
- P1564
- P1568
- P1574
- P1575
- P1599
- P1710
- P1740
- P1757
- P1760
- P1865
- P1866
- P1867
- P1868
- P1869
- P1876
- P1895
- P1902
- P1905
- P1910
- P1913
- P1914
- P1921
- P1923
- P1926
- P1930
- P1937
- P1943
- P1965
- P1972
- P1973
- P1979
- P1988
- P1991
- P2000
- P2001
- P2002
- P2003
- P2004
- P2005
- P2006
- P2007
- P2009
- P2011
- P2012
- P2013
- P2015
- P2016
- P2019
- P2020
- P2021
- P2023
- P2024
- P2025
- P2031
- P2032
- P2033
- P2035
- P2036
- P2039
- P2058
- P2059
- P2060
- P2080
- P2087
- P2094
- P2095
- P2102
- P2105
- P2106
- P2108
- P2113
- P2115
- P2127
- P2130
- P2137
- P2140
- P2142
- P2143
- P2144
- P2145
- P2146
- P2161
- P2194
- P2197
- P2198
- P2202
- P2204
- P2221
- P2233
- P2234
- P2235
- P2236
- P2237
- P2241
- P2243
- P2249
- P2250
- P2251
- P2253
- P2255
- P2256
- P2260
- P2261
- P2264
- P2274
- P2275
- P2276
- P2277
- P2278
- P2279
- P2280
- P2281
- P2282
- P2283
- P2284
- P2285
- P2286
- P2287
- P2288
- P2289
- P2290
- P2295
- P2298
- P2302
- P2303
- P2307
- P2335
- P2336
- P2341
- P2342
- P2345
- P2346
- P2347
- P2349
- P2350
- P2351
- P2352
- P2353
- P2362
- P2383
- P2384
- P2385
- P2392
- P2402
- P2403
- P2477
- P2569
- P2636
- P2637
- P2638
- P2640
- P2641
- P2642
- P2646
- P2650
- P2652
- P2664
- P2666
- P2668
- P2678
- P2679
- P2682
- P2683
- P2684
- P2693
- P2702
- P2715
- P2716
- P2719
- P2720
- P2739
- P2741
- P2752
- P2753
- P2761
- P2810
- P2811
- P2812
- P2813
- P2814
- P2815
- P2820
- P2821
- P2834
- P2835
- P2836
- P2837
- P2838
- P2839
- P2840
- P2841
- P2842
- P2843
- P2848
- P2849
- P2850
- P2851
- P2852
- P2855
- P2856
- P2857
- P2858
- P2873
- P2874
- P2875
- P2876
- P2877
- P2878
- P2879
- P2880
- P2881
- P2882
- P2883
- P2884
- P2885
- P2886
- P2887
- P2888
- P2889
- P2892
- P2896
- P2906
- P2920
- P2922
- P2927
- P2934
- P2942
- P2947
- P2992
- P2999
- P3005
- P3034
- P3035
- P3039
- P3042
- P3044
- P3048
- P3050
- P3058
- P3059
- P3063
- P3074
- P3075
- P3076
- P3082
- P3086
- P3088
- P3093
- P3094
- P3097
- P3098
- P3099
- P3101
- P3125
- P3154
- P3269
- P3275
- P3281
- P3286
- P3305
- P3412
- P3458
- P3465
- P3475
- P3499
- P3507
- P3508
- P3523
- P3529
- P3539
- P3566
- P3602
- P3606
- P3667
- P3677
- P3678
- P3680
- P3692
- P3702
- P3703
- P3704
- P3705
- P3711
- P3712
- P3713
- P3714
- P3721
- P3956
-
最近活动
- 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