-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
2231 lines (2109 loc) · 246 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>公告栏</title>
<url>/posts/1528610346/</url>
<content><![CDATA[<p>Hi~ 毕业考结束了,我又回来维护博客了!</p>
<span id="more"></span>]]></content>
<tags>
<tag>公告</tag>
</tags>
</entry>
<entry>
<title>常见网络用语大全</title>
<url>/posts/3791692339/</url>
<content><![CDATA[<h3 id="注:以下内容借鉴于网络,如有侵权,请联系-120-x79-115-x77-x79-121-49-x40-x31-54-x33-46-x63-x6f-109-进行修改"><a href="#注:以下内容借鉴于网络,如有侵权,请联系-120-x79-115-x77-x79-121-49-x40-x31-54-x33-46-x63-x6f-109-进行修改" class="headerlink" title="注:以下内容借鉴于网络,如有侵权,请联系[email protected]进行修改"></a>注:以下内容借鉴于网络,如有侵权,请联系<a href="mailto:[email protected]">[email protected]</a>进行修改</h3><span id="more"></span>
<h2 id="NO-1-网络常用篇"><a href="#NO-1-网络常用篇" class="headerlink" title="NO.1 网络常用篇"></a>NO.1 网络常用篇</h2><p>锦鲤:本是一种高档观赏鱼,2018年国庆节期间,支付宝官方微博推出寻找“中国锦鲤”转发抽奖活动,中奖者即为“中国锦鲤”,引发网友纷纷转发。“锦鲤”一词也因此走红,成为“好运”的象征,如果大家遇到困难与挑战,也会祈求“锦鲤”带来好运。腾讯微信状态中也可设置“求锦鲤”状态。</p>
<p>佛系:平常心。</p>
<p>杠精:指经常的通过抬杠获取快感的人、总是唱反调的人、争辩时故意持相反意见的人。从日本同类词到中国原创与“杠精”一词含义比较接近的网络流行语“ky”,撷取自日语。</p>
<p>确认过眼神:出自林俊杰的《醉赤壁》,用来吐槽的网络语,通常后面接想要吐槽的话。这个梗最开端其实是一个广东小学生在微博上先用的,他在微博上宣布的“确认过眼神,你是广东人”,还配上了一块钱的红包照,用来吐槽广东人的红包小,而“确认过眼神”这个梗也就走红网络。</p>
<p>官宣:字面意为“官方宣布”,现泛指某人或某机构对外正式宣布消息,表达广而告之的含义。</p>
]]></content>
<tags>
<tag>网络</tag>
<tag>时尚</tag>
<tag>流行</tag>
</tags>
</entry>
<entry>
<title>源码博客3.0发布会</title>
<url>/posts/3797619/</url>
<content><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>咳咳咳,先解决谢言射的几个问题</p>
<p>Q:为什么2022年的博客,2022年7月开始断更,2023年的今天才继续更新?</p>
<p>A:<del>忙嘛</del> 额,这段时间上学,毕竟这里比之前要忙嘛qwq</p>
<p>Q:为什么更文速度有所下降?</p>
<p>A:呜呜呜,本来我充满对未来的憧憬,但后来我发现一个问题——你们都不看啊啊啊</p>
<p>Q:为什么由主站搬到副站了?</p>
<p>A:主站出了点<del>小</del>问题,先由副站顶一下</p>
<h1 id="源码博客3-0发布会"><a href="#源码博客3-0发布会" class="headerlink" title="源码博客3.0发布会"></a>源码博客3.0发布会</h1><p>emmm…..要么这样吧,你们就看我博客吧,图床出问题了,修复后再弄照片,额</p>
<p>——END——–</p>
]]></content>
<tags>
<tag>源码博客</tag>
<tag>发布会</tag>
</tags>
</entry>
<entry>
<title>2022绍兴市初中组编程比赛-----问题 D: 回文路径(path) 题解</title>
<url>/posts/3463256173/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="问题-D-回文路径-path"><a href="#问题-D-回文路径-path" class="headerlink" title="问题 D: 回文路径(path)"></a>问题 D: 回文路径(path)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>给你一个 n*n 的棋盘,每个格子里有一个小写英文字母。刚开始有个棋子在棋盘的左上角(1,1),每次你把它可以往下或往右移动一格,最终你需要把棋子移动到棋盘的右下角(n,n)。一条路径是合法的当且仅当棋子途经的字母依次连接起来是个回文字符串。<br>棋盘刚开始可能不存在这么一条路径,但是你可以对棋盘使用魔法。每次使用魔法可以将某个格子里的字母修改成任意小写英文字母。由于法力很珍贵,所以你需要求出最少使用多少次魔法才会存在合法路径。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行一个整数 n;<br>接下来 n 行,每行一个长度为 n 的字符串。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>一行一个整数,表示答案。</p>
<h3 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">5<br>final<br>phase<br>level<br>judge<br>light<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>样例输入1<br>3<br>alb<br>aba<br>awa<br>样例输出2<br>0<br>样例1:把(1,1)的f改成t、(2,1)的p改成e,路径(1,1)->(2,1)->(3,1)->(3,2)->(3,3)->(3,4)->(3,5)->(4,5)->(5,5) 途经的字母依次连接起来的字符串为 “televelet”。<br>样例2:路径(1,1)->(2,1)->(2,2)->(2,3)->(3,3) 途经的字母依次连接起来的字符串为“aabaa”。<br>【数据范围约定】<br>对于10%的数据,n≤2;<br>对于30%的数据,n≤10;<br>对于50%的数据,n≤50;<br>对于80%的数据,n≤200;<br>对于所有数据,1≤n≤500,棋盘里所有字符都是小写英文字母。<br>【提示】<br>请注意内存限制。如果你开的数组超出内存限制可能会导致你的代码直接获得0分!<br>保险起见,你开的 int 数组总大小不得超过3×10^7。</p>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>可以用两个方向走,一个在起点,一个在终点,如果不同就用魔法,最后两个方向相遇时字符串结果一样就可以结束了。<br>优化看代码。</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,f[<span class="hljs-number">2</span>][<span class="hljs-number">510</span>][<span class="hljs-number">510</span>],sum;<br><span class="hljs-keyword">char</span> g[<span class="hljs-number">510</span>][<span class="hljs-number">510</span>];<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%s"</span>,g[i]+<span class="hljs-number">1</span>);<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= n; j++){<br> f[<span class="hljs-number">1</span>][i][j] = n+<span class="hljs-number">1</span>;<br> }<br> }<br> sum = n+<span class="hljs-number">1</span>;<br> <span class="hljs-keyword">if</span> (g[<span class="hljs-number">1</span>][<span class="hljs-number">1</span>] == g[n][n]) f[<span class="hljs-number">1</span>][<span class="hljs-number">1</span>][n] = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">else</span> f[<span class="hljs-number">1</span>][<span class="hljs-number">1</span>][n] = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> k = <span class="hljs-number">2</span>; k <= n; k++){<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++)<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= n; j++) f[k&<span class="hljs-number">1</span>][i][j] = n+<span class="hljs-number">1</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> x1 = <span class="hljs-number">1</span>; x1 <= n; x1++){<br> <span class="hljs-keyword">int</span> y1 = k+<span class="hljs-number">1</span>-x1;<br> <span class="hljs-keyword">if</span> (y1 < <span class="hljs-number">1</span> || y1 > n) <span class="hljs-keyword">continue</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> x2 = <span class="hljs-number">1</span>; x2 <= n; x2++){<br> <span class="hljs-keyword">int</span> y2 = <span class="hljs-number">2</span>*n+<span class="hljs-number">1</span>-k-x2;<br> <span class="hljs-keyword">if</span> (y2 < <span class="hljs-number">1</span> || y2 > n) <span class="hljs-keyword">continue</span>;<br> <span class="hljs-keyword">int</span> v = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">if</span> (g[x1][y1] == g[x2][y2]) v = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">if</span> (x1<span class="hljs-number">-1</span> >= <span class="hljs-number">1</span> && x2+<span class="hljs-number">1</span> <= n) f[k&<span class="hljs-number">1</span>][x1][x2] = <span class="hljs-built_in">min</span>(f[k&<span class="hljs-number">1</span>][x1][x2],f[(k<span class="hljs-number">-1</span>)&<span class="hljs-number">1</span>][x1<span class="hljs-number">-1</span>][x2+<span class="hljs-number">1</span>]);<br> <span class="hljs-keyword">if</span> (x1<span class="hljs-number">-1</span> >= <span class="hljs-number">1</span> && y2+<span class="hljs-number">1</span> <= n) f[k&<span class="hljs-number">1</span>][x1][x2] = <span class="hljs-built_in">min</span>(f[k&<span class="hljs-number">1</span>][x1][x2],f[(k<span class="hljs-number">-1</span>)&<span class="hljs-number">1</span>][x1<span class="hljs-number">-1</span>][x2]);<br> <span class="hljs-keyword">if</span> (y1<span class="hljs-number">-1</span> >= <span class="hljs-number">1</span> && x2+<span class="hljs-number">1</span> <= n) f[k&<span class="hljs-number">1</span>][x1][x2] = <span class="hljs-built_in">min</span>(f[k&<span class="hljs-number">1</span>][x1][x2],f[(k<span class="hljs-number">-1</span>)&<span class="hljs-number">1</span>][x1][x2+<span class="hljs-number">1</span>]);<br> <span class="hljs-keyword">if</span> (y1<span class="hljs-number">-1</span> >= <span class="hljs-number">1</span> && y2+<span class="hljs-number">1</span> <= n) f[k&<span class="hljs-number">1</span>][x1][x2] = <span class="hljs-built_in">min</span>(f[k&<span class="hljs-number">1</span>][x1][x2],f[(k<span class="hljs-number">-1</span>)&<span class="hljs-number">1</span>][x1][x2]);<br> f[k&<span class="hljs-number">1</span>][x1][x2] += v;<br> <span class="hljs-keyword">if</span> (x1 == x2 && y1 == y2) sum = <span class="hljs-built_in">min</span>(sum,f[k&<span class="hljs-number">1</span>][x1][x2]);<br> }<br> }<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,sum);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>2022绍兴市初中组编程比赛-----问题 C: 染色(color) 题解</title>
<url>/posts/3943467209/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="问题-C-染色-color"><a href="#问题-C-染色-color" class="headerlink" title="问题 C: 染色(color)"></a>问题 C: 染色(color)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>给你一个长度为 n 的序列 a,你需要依次把每个数染成红色或绿色,设 x 等于所有红色的数的乘积,y 等于所有绿色的数的乘积。一种染色方案是好看的当且仅当红色的数和绿色的数都至少有 1 个,并且 x 和 y 的最大公因数等于 1。<br>两种染色方案不同当且仅当存在一个数 ai 在两种方案里的颜色不同。<br>请你求出好看的染色方案数的二进制表示。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行一个整数n;<br>第二行n个整数a1 …… an。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>一行一个整数,表示答案的二进制表示。</p>
<h3 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3<br>1 2 3<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">110<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>样例输入2<br>4<br>19 19 8 10<br>样例输出2<br>10<br>样例1:除了全为绿色或者全为红色,其它均合法,答案为6,二进制表示为110。<br>样例2:(绿绿红红)和(红红绿绿)合法,答案为2,二进制表示为10。<br>【数据范围】<br>对于10%的数据,n≤2;<br>对于30%的数据,n≤15,ai≤15;<br>对于60%的数据,n≤10^3;<br>对于另外10%的数据,ai=1;<br>对于另外10%的数据,ai≤2;<br>对于所有数据,1≤n≤10^5,1≤ai≤10^6。</p>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>其实就是并查集,求出有几个集合就是关键了。<br>注意并查集以最初的因子为基础分的。</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,cnt,a[<span class="hljs-number">100005</span>],t,mn[<span class="hljs-number">1000050</span>],p[<span class="hljs-number">1000050</span>],mx,f[<span class="hljs-number">1000050</span>],mark[<span class="hljs-number">1000050</span>];<br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">init</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">2</span>; i <= mx; i++){<br> <span class="hljs-keyword">if</span> (!mn[i]){<br> mn[i] = i;<br> p[++t] = i;<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= t; j++){<br> <span class="hljs-keyword">if</span> (p[j] > mn[i] || p[j] > mx/i){<br> <span class="hljs-keyword">break</span>;<br> }<br> mn[p[j]*i] = p[j]; <br> }<br> }<br>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">find</span><span class="hljs-params">(<span class="hljs-keyword">int</span> x)</span></span>{<br> <span class="hljs-keyword">if</span> (f[x] != x){<br> f[x] = <span class="hljs-built_in">find</span>(f[x]);<br> }<br> <span class="hljs-keyword">return</span> f[x];<br>}<br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">mer</span><span class="hljs-params">(<span class="hljs-keyword">int</span> x,<span class="hljs-keyword">int</span> y)</span></span>{<br> <span class="hljs-keyword">int</span> a = <span class="hljs-built_in">find</span>(x),b = <span class="hljs-built_in">find</span>(y);<br> <span class="hljs-keyword">if</span> (a != b){<br> f[b] = a;<br> }<br>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i]);<br> mx = <span class="hljs-built_in">max</span>(mx,a[i]);<br> }<br> <span class="hljs-built_in">init</span>();<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= mx; i++){<br> f[i] = i;<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">int</span> v = a[i];<br> <span class="hljs-keyword">if</span> (v == <span class="hljs-number">1</span>){<br> cnt++;<br> <span class="hljs-keyword">continue</span>;<br> }<br> <span class="hljs-keyword">int</span> last = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">while</span> (v > <span class="hljs-number">1</span>){<br> <span class="hljs-keyword">int</span> now = mn[v];<br> <span class="hljs-keyword">while</span>(v%now == <span class="hljs-number">0</span>){<br> v /= now;<br> }<br> <span class="hljs-keyword">if</span> (last){<br> <span class="hljs-built_in">mer</span>(last,now);<br> }<br> last = now;<br> mark[last] = <span class="hljs-number">1</span>;<br> }<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= mx; i++){<br> <span class="hljs-keyword">if</span> (mark[i] && f[i] == i){<br> cnt++;<br> }<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= cnt<span class="hljs-number">-1</span>; i++){<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"1"</span>);<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"0"</span>);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>2022绍兴市初中组编程比赛-----问题 B: 最大乘积(product) 题解</title>
<url>/posts/60363383/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="问题-B-最大乘积-product"><a href="#问题-B-最大乘积-product" class="headerlink" title="问题 B: 最大乘积(product)"></a>问题 B: 最大乘积(product)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>黑板上有一个正整数 n。你可以做任意次如下的操作:选择一个黑板上的整数 x,把 x 擦掉,然后写上 floor(x/2) 和 ceil(x/2)。<br>你要最大化黑板上所有数的乘积,输出这个乘积对 998244353 取模后的结果。<br>提示:对于某个实数 k,floor(k) 表示不大于k的最大整数,ceil(k) 表示不小于k的最小整数。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>一行一个整数n。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>一行一个整数,表示答案对 998244353 取模后的结果。</p>
<h3 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>样例输入2<br>15<br>样例输出2<br>192<br>样例1:不进行任何操作。<br>样例2:擦掉 15,写上 7 和 8;<br>擦掉 7,写上 3 和 4;<br>擦掉 4,写上 2 和 2;<br>擦掉 8,写上 4 和 4;<br>黑板上的数有 3,2,2,4,4,乘积对 998244353 取模后的结果为 192。<br>【数据范围约定】<br>对于10%的数据,n≤5;<br>对于20%的数据,n≤20;<br>对于40%的数据,n≤50;<br>对于60%的数据,n≤10^3;<br>对于80%的数据,n≤10^6;<br>对于90%的数据,n≤10^9;<br>对于所有数据,1≤n≤10^18。</p>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>首先分到2或3就可以不用分了,不然答案会很小。<br>另外数据很大,建议用map存储。</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span> n;<br>map<<span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span>,<span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span>> m; <br><span class="hljs-function"><span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span> <span class="hljs-title">check</span><span class="hljs-params">(<span class="hljs-keyword">long</span> <span class="hljs-keyword">long</span> k)</span></span>{<br> <span class="hljs-keyword">if</span> (k <= <span class="hljs-number">4</span>){<br> <span class="hljs-keyword">return</span> k;<br> }<br> <span class="hljs-keyword">if</span>(m[k]){<br> <span class="hljs-keyword">return</span> m[k];<br> }<br> m[k] = <span class="hljs-built_in">check</span>(k/<span class="hljs-number">2</span>)*<span class="hljs-built_in">check</span>(k-k/<span class="hljs-number">2</span>)%<span class="hljs-number">998244353</span>;<br> <span class="hljs-keyword">return</span> m[k];<br>} <br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%lld"</span>,&n);<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%lld\n"</span>,<span class="hljs-built_in">check</span>(n));<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>2022绍兴市初中组编程比赛-----问题 A: 双倍数字(number) 题解</title>
<url>/posts/1134844726/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="问题-A-双倍数字-number"><a href="#问题-A-双倍数字-number" class="headerlink" title="问题 A: 双倍数字(number)"></a>问题 A: 双倍数字(number)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>给你一个整数 n,你需要求出最少在 n 的末尾添加多少个数字 k,使得 n 成为“双倍数字”。保证所有数据答案都存在。<br>“双倍数字”是指能被表示成aa形式的数字(a可以为任意正整数),比如“123123”,“1919”是“双倍数字”,而“114514”就不是“双倍数字”。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>一行一个整数n和一个数字k。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>一行一个整数,表示答案。</p>
<h3 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">451145 1<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>样例输入2<br>8888 8<br>样例输出2<br>0<br>【数据范围】<br>对于20%的数据,n<10;<br>对于40%的数据,n<10^3;<br>对于60%的数据,n<10^6;<br>对于80%的数据,n<10^9;<br>对于所有数据,1≤n<10^18,1≤k≤9。</p>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>因为保证有解,模拟即可,注意输入用字符串,如果长度是奇数直接跳掉就行啦~</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br>string n;<br>string k;<br><span class="hljs-keyword">bool</span> b = <span class="hljs-number">1</span>;<br><span class="hljs-keyword">int</span> sum;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{<br> cin >> n >> k;<br> <span class="hljs-keyword">while</span> (<span class="hljs-number">1</span>){<br> <span class="hljs-keyword">if</span> (n.<span class="hljs-built_in">size</span>()%<span class="hljs-number">2</span> == <span class="hljs-number">0</span>){<br> b = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < n.<span class="hljs-built_in">size</span>()/<span class="hljs-number">2</span>; i++){<br> <span class="hljs-keyword">if</span> (n[i] != n[n.<span class="hljs-built_in">size</span>()/<span class="hljs-number">2</span>+i]){<br> b = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> <span class="hljs-keyword">if</span> (b){<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,sum);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br> }<br> }<br> n = n+k;<br> sum++;<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br> <br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>想不出写什么了,给你们出道题吧3</title>
<url>/posts/236445553/</url>
<content><![CDATA[<p>某种药方要求非常严格,你每天需要同时服用A、B两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片A的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药片。现在,你手心上有一颗药片A,两颗药片B,并且你无法区别哪个是A,哪个是B。你如何才能严格遵循药方服用药片,并且不能有任何的浪费? </p>
<p>(答案见下期)</p>
<span id="more"></span>
<p>上期答案:<br>不会。<br>一只狮子和一只羊的时候,毫无疑问该吃。<br>两只狮子和一只羊的时候,毫无疑问是不该吃的。<br>三只狮子和一只羊的时候,该吃。(如果其中有一只吃了,就变成羊了,那就回到两只狮子的情况,所以吃羊的狮子必定不被吃!)<br>四只狮子和一只羊的时候,不该吃(吃了就一定被吃)<br>所以是偶数不吃,奇数吃</p>
]]></content>
<tags>
<tag>逻辑推理</tag>
</tags>
</entry>
<entry>
<title>想不出写什么了,给你们出道题吧2</title>
<url>/posts/2031153127/</url>
<content><![CDATA[<p>草原上有100头狮子和1只羊,已知<br>(1)狮子和羊都可以以食草为生<br>(2)比起草来狮子更爱羊肉的鲜美<br>(3)但哪头狮子如果吃了羊自己就会变成羊<br>(4)狮子们都很聪明,会逻辑推理<br>(5)狮子之间不能沟通</p>
<p>问:假如其中一头狮子看见了羊,他会不会去吃羊?</p>
<p>(答案见下期)</p>
<span id="more"></span>
<p>上期答案:<br>把十个人看做十位二进制数,把酒按照二进制数依次从0000000001编到1111101000(十进制的1000),然后让编号里对应1位置的人喝这个酒桶里的酒。如第500(二进制0111110100)桶酒,让第2,3,4,5,6,8个人喝,依次喝完。从最后反馈的结果可以直接得出毒酒所在,如:第3,4,6,8,9,10个人毒发,则对应编号为11010111,即第215桶。</p>
]]></content>
<tags>
<tag>逻辑推理</tag>
</tags>
</entry>
<entry>
<title>分享几道关于绝对值的题</title>
<url>/posts/1998936257/</url>
<content><![CDATA[<h2 id="题目:"><a href="#题目:" class="headerlink" title="题目:"></a>题目:</h2><p>一、<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220717151745.jpg"></p>
<p>二、<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/dea79233351d74689b5e0a3fe7e54e7.jpg"></p>
<p><del>emmm……答案我已经帮你们涂掉了</del></p>
<span id="more"></span>
<h2 id="题解:"><a href="#题解:" class="headerlink" title="题解:"></a>题解:</h2><p>一、<br>(1)这个不用讲了吧<br>(2)这个我们只要去看a、b之间的距离即可,因为它们的距离比“1”短,所以答案为“<”<br>(3)这里有3个取绝对值的符号,然后呢,第一个的取绝对值结果就是(c+b)(c为负数,b为正数,减一下结果是-(c+b),绝对值结果为(c+b)),第二个结果是(c+a-1),第三个结果是(a-1),然后连起来c+b-c-a+1+a-1消元,答案是b。<br>(4)<br>① 这个绝对值中如何得到最小的数?这是这道题的关键。用贪心思想,因为负数在绝对值中根本不起作用————会变成正数,所以,情况只有一种,其中一个绝对值的结果是0,先设x=a,第一个绝对值的结果是0,第二个是a-b,再用上绝对值,答案就是b-a,设x=b也可以得到同样的结果。</p>
<p>② 和上题同理,前两个的结果我们已经有了,b-a,在加上一个x+1<br>因为设x=a,(b也行,就是比较麻烦),结果为b-a+a+1,消元,答案是b+1。</p>
<p>③ 和①同理,前两个结果是b-a,后面a肯定比c大,(就是说第三个绝对值是正数),结果是b-a+a-c,消元,答案是b-c。</p>
<p>二、<br>这里我们分4种情况<br>1.a>0,b>0,c<0 等于1+1-1=1<br>2.a>0,b<0,c>0 等于1-1+1=1<br>3.a<0,b>0,c>0 等于-1+1+1=1<br>4.a<0,b<0,c<0 等于-1-1-1=-3<br>所以,答案为1或-3。</p>
]]></content>
<tags>
<tag>题目分享</tag>
<tag>数学</tag>
<tag>绝对值</tag>
</tags>
</entry>
<entry>
<title>2022绍兴小学-----问题 D: 三角形(triangle) 题解</title>
<url>/posts/195994566/</url>
<content><![CDATA[<h1 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h1><h2 id="问题-D-三角形-triangle"><a href="#问题-D-三角形-triangle" class="headerlink" title="问题 D: 三角形(triangle)"></a>问题 D: 三角形(triangle)</h2><span id="more"></span>
<h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>小魏有 3<em>n 根颜色两两不同的木棍,第i根的长度为a[i]。<br>小魏想把这3</em>n根木棍分成n组,每组三根,并且同一组的三根木棍可以组成一个三角形。<br>小魏想知道他有多少种不同的分组方案。认为两个分组方案是不同的,当且仅当两种方案组出来的三角形是不同的。</p>
<h2 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h2><p>第一行一个整数n。<br>第二行3*n个整数a[i]。</p>
<h2 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h2><p>一行一个整数,表示方案数。</p>
<h2 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2<br>3 4 5 10 11 12<br></code></pre></td></tr></tbody></table></figure>
<h2 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">1<br></code></pre></td></tr></tbody></table></figure>
<h2 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h2><p>对于20% 的数据,n=1;<br>对于50% 的数据,n≤3;<br>对于70% 的数据,n≤4;<br>另有10% 的数据,所有a[i] 全部相等;<br>对于所有数据,1≤n≤5, 1≤a[i] ≤100。</p>
<h1 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h1><p>考试的时候来不及了,打了表,然后只有20分……<br>直接深搜即可。</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,a[<span class="hljs-number">22</span>],b[<span class="hljs-number">22</span>];<br><span class="hljs-keyword">int</span> maxn;<br><span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">dfs</span><span class="hljs-params">(<span class="hljs-keyword">int</span> x)</span></span>{<br> <span class="hljs-keyword">if</span> (x == n+<span class="hljs-number">1</span>){<br> maxn++;<br> <span class="hljs-keyword">return</span>;<br> }<br> <span class="hljs-keyword">if</span> (b[x]){<br> <span class="hljs-built_in">dfs</span>(x+<span class="hljs-number">1</span>);<br> <span class="hljs-keyword">return</span>;<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> y = x+<span class="hljs-number">1</span>; y <= n; y++){<br> <span class="hljs-keyword">if</span> (b[y] == <span class="hljs-number">0</span>){<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> z = y+<span class="hljs-number">1</span>; z <= n; z++){<br> <span class="hljs-keyword">if</span> (b[z] == <span class="hljs-number">0</span>){<br> <span class="hljs-keyword">if</span> (a[x]+a[y] > a[z]){<br> b[x] = b[y] = b[z] = <span class="hljs-number">1</span>;<br> <span class="hljs-built_in">dfs</span>(x+<span class="hljs-number">1</span>);<br> b[x] = b[y] = b[z] = <span class="hljs-number">0</span>;<br> }<br> }<br> }<br> }<br> }<br>}<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> n = <span class="hljs-number">3</span>*n;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i]);<br> }<br> <span class="hljs-built_in">sort</span>(<span class="hljs-number">1</span>+a,<span class="hljs-number">1</span>+a+n);<br> <span class="hljs-built_in">dfs</span>(<span class="hljs-number">1</span>);<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,maxn);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br><br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>2022绍兴小学-----问题 C: 美感(beautiful) 题解</title>
<url>/posts/830323511/</url>
<content><![CDATA[<h1 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h1><h2 id="问题-C-美感-beautiful"><a href="#问题-C-美感-beautiful" class="headerlink" title="问题 C: 美感(beautiful)"></a>问题 C: 美感(beautiful)</h2><span id="more"></span>
<h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>寿寿喜欢有美感的序列。<br>对于寿寿来说一个序列是有美感的,当且仅当这个序列每两个相邻的数的和是m的倍数。特别的,寿寿认为长度为1的序列也是具有美感的。<br>寿寿现在随便在纸上写了一个长度为n的序列a,这个序列目前还不具有美感。因此寿寿想通过删除这个序列中的一些数来让它具有美感。<br>寿寿想知道最少需要删除几个数。</p>
<h2 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h2><p>第一行两个整数n和m。<br>第二行n个正整数表示序列a。</p>
<h2 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h2><p>一行一个整数,表示最少需要删除的数字数。</p>
<h2 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2 2<br>1 1<br></code></pre></td></tr></tbody></table></figure>
<h2 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">0<br></code></pre></td></tr></tbody></table></figure>
<h2 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h2><p>样例输入2</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3 2<br>1 2 1<br></code></pre></td></tr></tbody></table></figure>
<p>样例输出2</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">1<br></code></pre></td></tr></tbody></table></figure>
<p>样例输入3</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">6 3<br>1 1 4 5 1 4<br></code></pre></td></tr></tbody></table></figure>
<p>样例输出3</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3<br></code></pre></td></tr></tbody></table></figure>
<p>【数据范围】<br>对于10% 的数据,n=2;<br>对于30% 的数据,n≤20;<br>对于50% 的数据,m=2;<br>对于80% 的数据,m≤3;<br>对于90% 的数据,n,m≤1000;<br>对于所有数据,1≤n,m≤10^5, 1≤a[i]≤10^9。</p>
<h1 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h1><p>emmm,考试的时候估分90分,结果只有10分!!!<br>啊啊啊,考场代码想不起来了,大家就来看我老师写的吧……</p>
<p>最少删除多少个数字,换个思路就是最多保留多少个数字。<br>如果a[i]和a[j]保留,且相邻,则(a[i]+a[j])%m=0。这里有个同余知识(A+B)%M=(A%M+B%M)%M (乘法也可以同余)。<br>对于每个a[i],如果要保留它,前面的数必须满足a[j]=(m-a[i]%m)%m。用f[i]记录以i余数作为序列最后一个整数的最多保留数量,得到转移有 f[a[i]%m]=f[(m-a[i]%m)%m]+1,最大的f[i]为答案 。</p>
<p>Code:</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,m,f[<span class="hljs-number">1000005</span>],maxn; <br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&n,&m);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">int</span> a;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a);<br> f[a%m] = f[(m-a%m)%m]+<span class="hljs-number">1</span>;<br> maxn = <span class="hljs-built_in">max</span>(maxn,f[a%m]);<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,n-maxn);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br><br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>想不出写什么了,给你们出道题吧1</title>
<url>/posts/3759783517/</url>
<content><![CDATA[<p>一个国王有1000瓶酒,想在生日那天喝。但被人投了毒,其中1瓶有毒,喝了第二天会死。国王有群囚犯,他想让囚犯试毒,可是第二天就是国王的生日,那么请问<strong>最少</strong>动用多少囚犯,才能<strong>保证</strong>找出那瓶毒酒?</p>
<span id="more"></span>
<p>(答案见下期)</p>
]]></content>
<tags>
<tag>逻辑推理</tag>
</tags>
</entry>
<entry>
<title>2022绍兴小学-----问题 B: 华容道(huarong) 题解</title>
<url>/posts/662691727/</url>
<content><![CDATA[<h1 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h1><h2 id="问题-B-华容道-huarong"><a href="#问题-B-华容道-huarong" class="headerlink" title="问题 B: 华容道(huarong)"></a>问题 B: 华容道(huarong)</h2><span id="more"></span>
<h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>小童是一个喜欢数字华容道的女生。<br>数字华容道游戏是一种最早的滑块类游戏,常见的类型有十五数字推盘游戏和八数字推盘游戏等。十五数字华容道游戏的板上会有十五个方块和一个大小相当于一个方块的空位(供方块移动之用)。而八数字华容道游戏,为九宫格布局,有八个方块和一个空位(如图1)。</p>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/20220705095540_24528.jpg" alt="图1 八数字推盘游戏的棋盘"></p>
<p>在小童十岁生日的当天,小童的叔叔送给了她一块八数字华容道游戏作为生日礼物。<br>在送给小童之前,叔叔打乱了这块华容道,想要小童还原它。<br>聪明的小童当然立刻就还原了,并且还记下了还原的过程。<br>第二天上学的时候,小童告诉了你她还原的过程,想要学习信息学竞赛的你编写一个程序回答她,叔叔送她的华容道在小童开始还原之前是什么样的。<br>具体的,小童还原一共有 n 步,每一步可以用一个字符表示:<br>第i个字符如果是‘L’,则表示小童第i次是把空位左边的块移到了空位;<br>第i个字符如果是‘R’,则表示小童第i次是把空位右边的块移到了空位;<br>第i个字符如果是‘U’,则表示小童第i次是把空位上边的块移到了空位;<br>第i个字符如果是‘D’,则表示小童第i次是把空位下边的块移到了空位。<br>另外,小童是一个诚实的孩子,所以她告诉你的还原过程一定是合法的。</p>
<h2 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h2><p>第一行一个整数n,表示小童整个还原过程共 n 步。<br>第二行为一个长度为n的字符串S,第i个字符表示了小童第i步是怎么操作的。</p>
<h2 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h2><p>三行三个整数,每行两个整数之间有一个空格,表示华容道一开始的样子,空位的位置用0填充。</p>
<h2 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">4<br>LURD<br></code></pre></td></tr></tbody></table></figure>
<h2 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">1 2 3<br>4 8 5<br>7 6 0<br></code></pre></td></tr></tbody></table></figure>
<h2 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h2><p>我们可以通过小童的操作从后往前一步一步倒推出华容道一开始的样子,比如小童第i次操作是把空位下的块往上移倒过来倒推回去就相当于是空位往上移动了一格,然后原本在空位上面的格子里的数往下移。具体对于样例来说就是:<br>1 2 3 1 2 3 1 2 3 1 2 3 1 2 3<br>4 5 6 -> 4 5 0 -> 4 0 5 -> 4 8 5 -> 4 8 5<br>7 8 0 7 8 6 7 8 6 7 0 6 7 6 0</p>
<h2 id="【数据范围约定】"><a href="#【数据范围约定】" class="headerlink" title="【数据范围约定】"></a>【数据范围约定】</h2><p>对于10% 的数据,n=0;<br>对于30% 的数据,n≤1;<br>另有30% 的数据,S中只含有‘L’和‘R’两种字符;<br>对于所有数据,0≤n≤50,S中只含有‘L’、‘R’、‘U’和‘D’四种字符。</p>
<h1 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h1><p>嗯,很好,模拟题,轻轻松松AC</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,g[<span class="hljs-number">5</span>][<span class="hljs-number">5</span>];<br><span class="hljs-keyword">char</span> s[<span class="hljs-number">55</span>];<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> g[<span class="hljs-number">1</span>][<span class="hljs-number">1</span>] = <span class="hljs-number">1</span>; <br> g[<span class="hljs-number">1</span>][<span class="hljs-number">2</span>] = <span class="hljs-number">2</span>;<br> g[<span class="hljs-number">1</span>][<span class="hljs-number">3</span>] = <span class="hljs-number">3</span>;<br> g[<span class="hljs-number">2</span>][<span class="hljs-number">1</span>] = <span class="hljs-number">4</span>; <br> g[<span class="hljs-number">2</span>][<span class="hljs-number">2</span>] = <span class="hljs-number">5</span>; <br> g[<span class="hljs-number">2</span>][<span class="hljs-number">3</span>] = <span class="hljs-number">6</span>;<br> g[<span class="hljs-number">3</span>][<span class="hljs-number">1</span>] = <span class="hljs-number">7</span>; <br> g[<span class="hljs-number">3</span>][<span class="hljs-number">2</span>] = <span class="hljs-number">8</span>; <br> g[<span class="hljs-number">3</span>][<span class="hljs-number">3</span>] = <span class="hljs-number">0</span>;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%s"</span>,s+<span class="hljs-number">1</span>);<br> <span class="hljs-keyword">int</span> x = <span class="hljs-number">3</span>,y = <span class="hljs-number">3</span>;<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = n; i >= <span class="hljs-number">1</span>; i--){<br> <span class="hljs-keyword">if</span>(s[i] == <span class="hljs-string">'L'</span>){<br> <span class="hljs-built_in">swap</span>(g[x][y],g[x][y+<span class="hljs-number">1</span>]), y++;<br> } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(s[i] == <span class="hljs-string">'R'</span>){<br> <span class="hljs-built_in">swap</span>(g[x][y],g[x][y<span class="hljs-number">-1</span>]),y--;<br> } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(s[i] == <span class="hljs-string">'U'</span>){<br> <span class="hljs-built_in">swap</span>(g[x][y],g[x+<span class="hljs-number">1</span>][y]),x++;<br> } <span class="hljs-keyword">else</span>{<br> <span class="hljs-built_in">swap</span>(g[x][y],g[x<span class="hljs-number">-1</span>][y]),x--;<br> }<br> }<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= <span class="hljs-number">3</span>; i++){<br> <br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j < <span class="hljs-number">3</span>; j++)<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,g[i][j]);<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d\n"</span>,g[i][<span class="hljs-number">3</span>]);<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>2022绍兴小学-----问题 A: 分组(group) 题解</title>
<url>/posts/866924548/</url>
<content><![CDATA[<h1 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h1><h2 id="问题-A-分组-group"><a href="#问题-A-分组-group" class="headerlink" title="问题 A: 分组(group)"></a>问题 A: 分组(group)</h2><span id="more"></span>
<h2 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h2><p>小楠今年四年级了!在一天的数学课上,老师介绍了鸡兔同笼问题:<br>「今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?」<br>小楠立刻就在脑子里想到了一个类似的问题:有n个小朋友在上体育课,现在老师要对这些小朋友进行分组,既可以x个小朋友分一组,也可以y个分一组,怎么分组才可以让每个小朋友恰好属于一个组。<br>小楠立刻想到分组方案可能有很多种,所以他想x个一组的组尽量少。<br>聪明的小楠立刻就想到了方案,所以他想考考同样聪明的你。他告诉了你n、x、y的值,想要你回答他分成x个一组的组数和分成y个一组的组数。<br>不过小楠可能会搞恶作剧,也就是说可能不存在一种合法的分组方案,这个时候你要告诉他“Impossible”。</p>
<h2 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h2><p>一行三个整数n,x,y。</p>
<h2 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h2><p>一行两个整数,分别表示分成x个一组的组数和分成y个一组的组数。如果无解,输出 “Impossible”。</p>
<h2 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">10 2 3<br></code></pre></td></tr></tbody></table></figure>
<h2 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h2><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2 2<br></code></pre></td></tr></tbody></table></figure>
<h2 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h2><h3 id="样例输入2"><a href="#样例输入2" class="headerlink" title="样例输入2"></a>样例输入2</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">10 5 2<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出2"><a href="#样例输出2" class="headerlink" title="样例输出2"></a>样例输出2</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">0 5<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输入3"><a href="#样例输入3" class="headerlink" title="样例输入3"></a>样例输入3</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">11 3 6<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出3"><a href="#样例输出3" class="headerlink" title="样例输出3"></a>样例输出3</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">Impossible<br></code></pre></td></tr></tbody></table></figure>
<h2 id="【数据范围】"><a href="#【数据范围】" class="headerlink" title="【数据范围】"></a>【数据范围】</h2><p>对于前30% 的数据,保证x=y;<br>对于所有数据,有1≤x,y≤n, 1≤n≤100。</p>
<h1 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h1><p>emmm……本来水题一道,但比赛的时候脑子短路了,只拿了90分……</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,x,y,flag;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d%d"</span>,&n,&x,&y);<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i <= n/x; i++){<br> <span class="hljs-keyword">if</span>((n-x*i)%y == <span class="hljs-number">0</span>){<br> flag = <span class="hljs-number">1</span>;<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d %d\n"</span>,i,(n-x*i)/y);<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> <span class="hljs-keyword">if</span>(flag == <span class="hljs-number">0</span>){<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"Impossible\n"</span>);<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>水壶(NOI Online3 lfw数据) 题解</title>
<url>/posts/3361761468/</url>
<content><![CDATA[<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><h3 id="水壶-NOI-Online3-lfw数据"><a href="#水壶-NOI-Online3-lfw数据" class="headerlink" title="水壶(NOI Online3 lfw数据)"></a>水壶(NOI Online3 lfw数据)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>有 n 个容量无穷大的水壶,它们从 1∼n 编号,初始时 i 号水壶中装有 Ai 单位的水。<br>你可以进行不超过 k 次操作,每次操作需要选择一个满足 1≤x≤n−1 的编号 x,然后把 x 号水壶中的水全部倒入 x+1 号水壶中。<br>最后你可以任意选择恰好一个水壶,并喝掉水壶中所有的水。现在请你求出,你最多能喝到多少单位的水。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行一个正整数 n,表示水壶的个数。<br>第二行一个非负整数 k,表示操作次数上限。<br>第三行 n 个非负整数,相邻两个数用空格隔开,表示水壶的初始装水量 A1,A2,…,An。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>一行,仅一个非负整数,表示答案。</p>
<h3 id="样例输入"><a href="#样例输入" class="headerlink" title="样例输入"></a>样例输入</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">10<br>5<br>890 965 256 419 296 987 45 676 976 742<br></code></pre></td></tr></tbody></table></figure>
<h3 id="样例输出"><a href="#样例输出" class="headerlink" title="样例输出"></a>样例输出</h3><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3813<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>10%的数据 n<=10<br>30%的数据 n<=100<br>50%的数据 n<=1000<br>70%的数据 n<=10^5<br>100%的数据 1<=n<=10^6, 0<=k<=n-1, 0<=Ai<=10^3</p>
<blockquote>
<p> 时间限制: 1.000 Sec<br> 内存限制: 128 MB<br> 来源:Luo’s OJ</p>
</blockquote>
<h2 id="题解-1"><a href="#题解-1" class="headerlink" title="题解"></a>题解</h2><p>emmm……这题我们老师是用来讲对拍的<br>暴力也可以,但这里用的是前缀和</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,k;<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">1000010</span>],sum; <br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> ios::<span class="hljs-built_in">sync_with_stdio</span>(<span class="hljs-literal">false</span>);<br> cin >> n >> k;<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>,x; i <= n; i++){<br> cin >> x;<br> a[i] = a[i - <span class="hljs-number">1</span>] + x;<br> }<br> k++;<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i + k - <span class="hljs-number">1</span> <= n; i++) {<br> <span class="hljs-keyword">int</span> j = i + k - <span class="hljs-number">1</span>;<br> sum = <span class="hljs-built_in">max</span>(sum,a[j] - a[i - <span class="hljs-number">1</span>]);<br> }<br> cout << sum << endl;<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br><br></code></pre></td></tr></tbody></table></figure>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/Dingtalk_20220629100331.jpg"></p>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
<tag>luo's OJ</tag>
</tags>
</entry>
<entry>
<title>博客暂时通知维护的通知</title>
<url>/posts/3869669730/</url>
<content><![CDATA[<p>各位网友、同志们:<br>大家好!<br>由于小学毕业考即将到来,为了谢言射的前途考虑,我团队决定将暂时停止博客的维护,但不会全部停止,只是维护会比较缓慢,停止维护时间大致为5.20~6.20,为您到来不便烦请原谅。</p>
<span id="more"></span>
<p>我团队在此保证,等毕业考一结束,我团队会立刻恢复博客的维护工作,绝不会让各位久等!</p>
<p align="right">谢言射团队</p>
<p align="right">2022年5月18日</p>]]></content>
<tags>
<tag>公告</tag>
</tags>
</entry>
<entry>
<title>luo2086-----奶牛排队 题解</title>
<url>/posts/659898594/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="奶牛排队"><a href="#奶牛排队" class="headerlink" title="奶牛排队"></a>奶牛排队</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>奶牛排队 奶牛在熊大妈的带领下排成了一条直队。 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,且中间如果存在奶牛,则身高不能和A、B奶牛相同,的这样的一些奶牛最多会有多少头。 从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是零、二,但不会是一)。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入 第一行一个数N(2< =N< =100000),表示奶牛的头数。 接下来N个数,每行一个数,从上到下表示从左到右奶牛的身高(1< =身高< =maxlongint)。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>输出 一行,表示最多奶牛数。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">5<br>1<br>2<br>3<br>4<br>1<br></code></pre></td></tr></tbody></table></figure>
<p>输出</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">4<br></code></pre></td></tr></tbody></table></figure>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 128 MB<br> 来源 luo’s OJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>可以理解为一个大的值,可以把前面比他小的值都吞灭,然后记录吞灭的最小值位置<br>所以可以构造单调下降队列(栈),表示将每个小递增段并到最后一个高点上<br>每个高点可以向左找被吞并小段的低点,记录最低点,高点到这个最低点位置为一个答案</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,a[<span class="hljs-number">100010</span>];<br><span class="hljs-keyword">int</span> sum;<br><span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">Node</span>{</span><br> <span class="hljs-keyword">int</span> x,y;<br>}t;<br>deque<Node> q;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i]);<br> t.x = i;<br> t.y = i;<br> <span class="hljs-keyword">while</span>(!q.<span class="hljs-built_in">empty</span>() && a[q.<span class="hljs-built_in">back</span>().y] < a[i]){<br> <span class="hljs-keyword">if</span> (a[t.x] > a[q.<span class="hljs-built_in">back</span>().x]){<br> t.x = q.<span class="hljs-built_in">back</span>().x;<br> }<br> q.<span class="hljs-built_in">pop_back</span>();<br> }<br> sum = <span class="hljs-built_in">max</span>(sum,t.y-t.x+<span class="hljs-number">1</span>);<br> q.<span class="hljs-built_in">push_back</span>(t);<br> }<br> <span class="hljs-keyword">if</span> (sum == <span class="hljs-number">1</span>){<br> sum = <span class="hljs-number">0</span>;<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,sum);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 耗时 132 MS<br> 内存 3380 KB<br> 语言 C++<br> 代码长度 544 bytes</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
<tag>luo's OJ</tag>
</tags>
</entry>
<entry>
<title>luo1046-----非负和 题解</title>
<url>/posts/3358763417/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="非负和"><a href="#非负和" class="headerlink" title="非负和"></a>非负和</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>罗老师给大家n个数字:a1,a2,a3, .. , an。<br>这些数字可以循环,ai, ai+1, ai+2, … , an, a1, a2, … , ai-1。<br>显然,这样的循环有n种。<br>现在问大家,n种中有多少种保证从第一项到任意项的和大于等于0<br>比如<br>3<br>-1 1 1<br>有三种:<br>-1 1 1<br>1 1 -1<br>1 -1 1<br>其中第一种第一项到第1,2,3项的和分别为: -1, 0, 1<br>第二种第一项到第1,2,3项的和分别为: 1, 2, 1<br>第三种第一项到第1,2,3项的和分别为: 1, 0, 1<br>所以第二种和第三种符合,答案为2</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入n</p>
<p>然后输入n个数字ai</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>输出有多少种符合</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">3<br>-1 1 1<br></code></pre></td></tr></tbody></table></figure>
<p>输出</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">2<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>【数据规模和约定】<br>1<=n<=1000000<br>-1000<=ai<=1000</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 128 MB<br> 来源 luo’s OJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>luo1428—–区间最小最大值的加强版<br>直接上!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,t,w,chen_zhe;<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">2000010</span>],sum[<span class="hljs-number">2000010</span>],kkksc03[<span class="hljs-number">2000010</span>],id[<span class="hljs-number">2000010</span>];<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&n);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i]);<br> a[i+n] = a[i];<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= <span class="hljs-number">2</span>*n; i++){<br> sum[i] = sum[i<span class="hljs-number">-1</span>]+a[i];<br> }<br> t = w = <span class="hljs-number">1</span>;<br> kkksc03[<span class="hljs-number">1</span>] = sum[<span class="hljs-number">1</span>];<br> id[<span class="hljs-number">1</span>] = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">2</span>; i <= n; i++){<br> <span class="hljs-keyword">while</span> (sum[i] < kkksc03[w]){<br> w--;<br> <span class="hljs-keyword">if</span> (w < t){<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> w++;<br> kkksc03[w] = sum[i];<br> id[w] = i;<br> }<br> <span class="hljs-keyword">if</span> (kkksc03[t] >= <span class="hljs-number">0</span>){<br> chen_zhe++;<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = n+<span class="hljs-number">1</span>; i <= <span class="hljs-number">2</span>*n<span class="hljs-number">-1</span>; i++){<br> <span class="hljs-keyword">while</span> (id[t] < i-n+<span class="hljs-number">1</span>){<br> t++;<br> <span class="hljs-keyword">if</span> (t > w){<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> <span class="hljs-keyword">if</span> (w >= t){<br> <span class="hljs-keyword">while</span> (sum[i] < kkksc03[w]){<br> w--;<br> <span class="hljs-keyword">if</span> (w < t){<br> <span class="hljs-keyword">break</span>;<br> }<br> } <br> }<br> w++;<br> kkksc03[w] = sum[i];<br> id[w] = i;<br> <span class="hljs-keyword">if</span> (kkksc03[t]-sum[i-n] >= <span class="hljs-number">0</span>){<br> chen_zhe++; <br> }<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d"</span>,chen_zhe);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 耗时 721 MS<br> 内存 33428 KB<br> 语言 C++<br> 代码长度 983 bytes</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
<tag>luo's OJ</tag>
</tags>
</entry>
<entry>
<title>luo1428-----区间最小最大值 题解</title>
<url>/posts/8623461/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="区间最小最大值"><a href="#区间最小最大值" class="headerlink" title="区间最小最大值"></a>区间最小最大值</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>给定n个元素,以及一个正整数w,求每段区间的最小最大值。这些区间为:[1,1+w-1], [2,2+w-1], …, [n-w+1,n]。</p>
<p>例如8个元素为[1 3 -1 -3 5 3 6 7], w为3,那么有下列最小最大值:</p>
<table>
<thead>
<tr>
<th>区间</th>
<th>最小值</th>
<th>最大值</th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>[1 3 -1] -3 5 3 6 7</td>
<td>-1</td>
<td>3</td>
<td></td>
</tr>
<tr>
<td>1 [3 -1 -3] 5 3 6 7</td>
<td>-3</td>
<td>3</td>
<td></td>
</tr>
<tr>
<td>1 3 [-1 -3 5] 3 6 7</td>
<td>-3</td>
<td>5</td>
<td></td>
</tr>
<tr>
<td>1 3 -1 [-3 5 3] 6 7</td>
<td>-3</td>
<td>5</td>
<td></td>
</tr>
<tr>
<td>1 3 -1 -3 [5 3 6] 7</td>
<td>3</td>
<td>6</td>
<td></td>
</tr>
<tr>
<td>1 3 -1 -3 5 [3 6 7]</td>
<td>3</td>
<td>7</td>
<td></td>
</tr>
</tbody></table>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行输入n,w</p>
<p>第二行输入n个整数</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>第一行输出区间最小值</p>
<p>第二行输出区间最大值</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">8 3<br>1 3 -1 -3 5 3 6 7<br></code></pre></td></tr></tbody></table></figure>
<p>输出</p>
<figure class="highlight bash"><table><tbody><tr><td class="code"><pre><code class="hljs bash">-1 -3 -3 -3 3 3<br>3 3 5 5 6 7<br></code></pre></td></tr></tbody></table></figure>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>1<=n<=10^6 1<=w<=n</p>
<p>10^-9 <= 元素 <= 10^9</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 128 MB<br> 来源 luo’s OJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>求最小值:<br>构建一个单调递增序列,即单调队列,队首是最小值,队尾是最大值<br>队首是当前区间的最小值,但随着区间的右移动,队首优先会失效并弹出<br>队尾维护单调队列,如果新增元素小于队尾元素,则队尾元素弹出,<br>直到队尾元素小于新增元素或队列为空,这样保证队列中的元素是单调递增的</p>
<p>code:</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,w,a[<span class="hljs-number">1000010</span>];<br>deque<<span class="hljs-keyword">int</span>> q;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d"</span>,&n,&w);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a[i]);<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">while</span> (!q.<span class="hljs-built_in">empty</span>() && q.<span class="hljs-built_in">front</span>() <= i-w){<br> q.<span class="hljs-built_in">pop_front</span>();<br> }<br> <span class="hljs-keyword">while</span> (!q.<span class="hljs-built_in">empty</span>() && a[q.<span class="hljs-built_in">back</span>()] >= a[i]){<br> q.<span class="hljs-built_in">pop_back</span>();<br> }<br> q.<span class="hljs-built_in">push_back</span>(i);<br> <span class="hljs-keyword">if</span> (i >= w){<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,a[q.<span class="hljs-built_in">front</span>()]);<br> }<br> }<br> q.<span class="hljs-built_in">clear</span>();<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">while</span> (!q.<span class="hljs-built_in">empty</span>() && q.<span class="hljs-built_in">front</span>() <= i-w){<br> q.<span class="hljs-built_in">pop_front</span>();<br> }<br> <span class="hljs-keyword">while</span> (!q.<span class="hljs-built_in">empty</span>() && a[q.<span class="hljs-built_in">back</span>()] <= a[i]){<br> q.<span class="hljs-built_in">pop_back</span>();<br> }<br> q.<span class="hljs-built_in">push_back</span>(i);<br> <span class="hljs-keyword">if</span> (i >= w){<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%d "</span>,a[q.<span class="hljs-built_in">front</span>()]);<br> }<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"\n"</span>);<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 耗时 174 MS<br> 内存 6088 KB<br> 语言 C++<br> 代码长度 788 bytes</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
<tag>luo's OJ</tag>
</tags>
</entry>
<entry>
<title>有关和王有缘暂时停止合作的通知</title>
<url>/posts/2954149272/</url>
<content><![CDATA[<p>尊敬的各位用户:<br>大家好!</p>
<p>作为班里最大的资源提供中心(602谢言射资源提供站),我公司所提供的资源都是和602王有缘资源提供站经过讨论后出口的,所以在一般情况下,正确率为98%。</p>
<span id="more"></span>
<p>但由于620王有缘资源提供站三番五次地调戏我公司创始人——谢言射。同俗地讲,就是将不合格资源和我公司的出口产品讨论,而我公司创始人——谢言射同志又十分信任对方公司的创始人——王有缘,于是将公司提供的合格资源全部替换为602王有缘资源提供站的不合格资源,导致我公司所出口的资源正确率降为93%。</p>
<p>对此,谢言射在此对各位用户做出道歉,并暂时和王有缘停止合作,希望602王有缘资源提供站能进行反省,并将这些问题彻底地改正,以便为各位用户提供更好的资源。</p>
<p>当然,602谢言射资源提供站所提供的服务并不会虽之暂停。</p>
<p align="right">谢言射团队&602谢言射资源提供站</p>
<p align="right">2022年5月13日</p>
]]></content>
<tags>
<tag>公告</tag>
</tags>
</entry>
<entry>
<title>Far Relative’s Birthday Cake 题解</title>
<url>/posts/180282341/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Far-Relative’s-Birthday-Cake"><a href="#Far-Relative’s-Birthday-Cake" class="headerlink" title="Far Relative’s Birthday Cake"></a>Far Relative’s Birthday Cake</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>门的家人要庆祝门的生日聚会。他们很喜欢Famil Door,所以他们打算为他做一个奇怪的生日蛋糕。<br>蛋糕是一个n×n的正方形,由边长为1的相等的方块组成,每个方块不是空的就是由一块巧克力组成。他们买了蛋糕,随机开始把巧克力放在蛋糕上。Famil Door的幸福值将等于有巧克力的单元格在蛋糕的同一行或同一列的对数。法米尔门的家人在想,法米尔的幸福值会是多少?<br>请注意,任何一对都不能超过一次,因为两个不同的单元格不能同时在同一行和同一列中。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>在输入的第一行,你会得到一个整数n(1≤n≤100)–蛋糕边的长度。<br>然后是n行,每行包含n个字符。空的单元格用’.’表示,而含有巧克力的单元格用’C’表示。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>打印Famil Door的幸福值,即共享同一行或同一列的巧克力块的数量。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<pre><code class="hljs">3
.CC
C..
C.C
</code></pre>
<p>输出</p>
<pre><code class="hljs">4
</code></pre>
<p>输入</p>
<pre><code class="hljs">4
CC..
C..C
.CC.
.CC.
</code></pre>
<p>输出</p>
<pre><code class="hljs">9
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>如果我们从上到下对行进行编号,从左到右对列进行编号,那么,在第一个样本中共享同一行的作品是。</p>
<p>(1,2) and (1,3)<br>(3,1) and (3,3)<br>共享同一列的作品有:<br>(2,1) and (3,1)<br>(1,3) and (3,3)</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><blockquote>
<p> 骗分过样例<br> 暴力出奇迹<br> 暴搜挂着机<br> 打标进省一</p>
</blockquote>
<p><del>咳咳咳,不装了</del><br>数据只有100<br>考虑暴力!!!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-keyword">char</span> a[<span class="hljs-number">110</span>][<span class="hljs-number">110</span>];<br>string s;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> cin >> n;<br> <span class="hljs-keyword">int</span> ans = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> cin >> s;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= n; j++){<br> a[i][j] = s[j<span class="hljs-number">-1</span>];<br> }<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">int</span> sum = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= n; j++){<br> <span class="hljs-keyword">if</span> (a[i][j] == <span class="hljs-string">'C'</span>){<br> sum++;<br> }<br> }<br> ans += sum*(sum<span class="hljs-number">-1</span>)/<span class="hljs-number">2</span>;<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">int</span> sum1 = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= n; j++){<br> <span class="hljs-keyword">if</span> (a[j][i] == <span class="hljs-string">'C'</span>){<br> sum1++;<br> }<br> }<br> ans += sum1*(sum1<span class="hljs-number">-1</span>)/<span class="hljs-number">2</span>;<br> }<br> cout << ans << <span class="hljs-string">"\n"</span>;<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 1 MS<br> 内存 720 KB<br> 语言 C++<br> 代码长度 655</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Colors题解</title>
<url>/posts/2694878122/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Colors"><a href="#Bear-and-Colors" class="headerlink" title="Bear and Colors"></a>Bear and Colors</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>小熊利马克有n个彩色的球,排列在一长排。球的编号为1到n,从左到右。有n种可能的颜色,也编号为1到n。<br>对于一个固定的球的区间(连续元素的集合),我们可以定义一个主导颜色。这是一种在该区间内出现次数最多的颜色。如果一些颜色之间出现平局,则选择数字(指数)最小的颜色作为主导颜色。<br>这里总共有n*(n+1)/2多少个非空的区间。对于每种颜色,你的任务是计算这种颜色占主导地位的区间的数量。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入的第一行包含一个整数n(1≤n≤5000)–球的数量。<br>第二行包含n个整数t1,t2,…,tn(1≤ti≤n),ti是第i个球的颜色。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>打印n个整数。其中第i个应该等于第i个是主色的间隔数。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<pre><code class="hljs">4
1 2 1 2
</code></pre>
<p>输出</p>
<pre><code class="hljs">7 3 0 0
</code></pre>
<p>输入</p>
<pre><code class="hljs">3
1 1 1
</code></pre>
<p>输出</p>
<pre><code class="hljs">6 0 0
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个样本中,颜色2在三个区间中占优势。<br>一个区间[2,2]包含一个球。这个球的颜色是2,所以它显然是一个主导颜色。<br>一个区间[4,4]包含一个球,颜色还是2。<br>一个区间[2,4]包含两个颜色为2的球和一个颜色为1的球。<br>还有7个区间,颜色1在所有的区间中都是主导色。</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>数论!数论!数论!!!!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">5010</span>][<span class="hljs-number">5010</span>];<br><span class="hljs-keyword">int</span> sum[<span class="hljs-number">5010</span>];<br><span class="hljs-keyword">int</span> chen_zhe[<span class="hljs-number">5010</span>];<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{<br> cin >> n;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < n; i++) {<br> cin >> chen_zhe[i];<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < n; i++) {<br> <span class="hljs-keyword">int</span> maxn = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">int</span> kkksc03 = chen_zhe[i] - <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = i; j < n; ++j){<br> a[i][chen_zhe[j] - <span class="hljs-number">1</span>]++;<br> <span class="hljs-keyword">if</span> (a[i][chen_zhe[j] - <span class="hljs-number">1</span>] > maxn) {<br> maxn = a[i][chen_zhe[j] - <span class="hljs-number">1</span>];<br> kkksc03 = chen_zhe[j] - <span class="hljs-number">1</span>;<br> } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (a[i][chen_zhe[j] - <span class="hljs-number">1</span>] == maxn) {<br> <span class="hljs-keyword">if</span> (chen_zhe[j] - <span class="hljs-number">1</span> < kkksc03) {<br> kkksc03 = chen_zhe[j] - <span class="hljs-number">1</span>;<br> }<br> }<br> sum[kkksc03]++;<br> }<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < n; i++){<br> cout << sum[i] << <span class="hljs-string">" "</span>;<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 1 MS<br> 内存 1568 KB<br> 语言 C++<br> 代码长度 684</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Two Paths题解</title>
<url>/posts/3555695836/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Two-Paths"><a href="#Bear-and-Two-Paths" class="headerlink" title="Bear and Two Paths"></a>Bear and Two Paths</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>熊岛有n个城市,编号为1到n。城市通过双向道路连接。每条路都连接着两个不同的城市。没有两条路是连接同一对城市的。</p>
<p>有一次,熊利马克在一个城市a,他想去一个城市b,但没有直接的连接,所以他决定走很长的路,每个城市正好走一次。从形式上看。</p>
<p>a和b之间没有路。<br>存在一个由n个不同的城市组成的序列(路径)v1,v2,…,vn,v1=a,vn=b,并且在vi和vi+1之间有一条路,为 。<br>有一天,类似的事情发生了。利马克想在一个城市c和一个城市d之间旅行。它们之间没有路,但存在一个n个不同城市的序列u1,u2,…,un,u1=c,un=d,并且在ui和ui+1之间有一条路。</p>
<p>此外,Limak认为在Bearland最多有k条路。他想知道自己的记忆是否正确。</p>
<p>给定n,k和四个不同的城市a,b,c,d,你能找到满足所有给定条件的可能路径(v1,…,vn)和(u1,…,un)吗?找到任何解决方案,如果不可能,则打印-1。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入的第一行包含两个整数n和k(4≤n≤1000,n-1≤k≤2n-2)–分别为城市的数量和允许的最大道路数量。</p>
<p>第二行包含四个不同的整数a、b、c和d(1≤a、b、c、d≤n)。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>如果不可能满足所有给定条件,则打印-1。否则,打印两行路径描述。这两行中的第一行应该包含n个不同的整数v1,v2,…,vn,其中v1=a和vn=b。第二行应该包含n个不同的整数u1,u2,…,un,其中u1=c,un=d。</p>
<p>两条路径最多产生2n-2条路。(v1,v2), (v2,v3), …, (vn-1,vn), (u1,u2), (u2,u3), …, (un-1,un)。如果你的答案包含超过k条不同的道路或有任何其他条件的破坏,你的答案将被视为错误。请注意,(x,y)和(y,x)是同一条路。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<pre><code class="hljs">7 11
2 4 7 3
</code></pre>
<p>输出</p>
<pre><code class="hljs">2 7 1 5 6 3 4
7 2 1 5 6 4 3
</code></pre>
<p>输入</p>
<pre><code class="hljs">1000 999
10 20 30 40
</code></pre>
<p>输出</p>
<pre><code class="hljs">-1
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个样本测试中,应该有7个城市和最多11条道路。所提供的样本解决方案生成了10条道路,如图所示。你还可以看到长度为n的2到4的简单路径,以及7到3的路径。<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/16516402853802.png"></p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>按题目模拟即可~<br>就很奇怪<br>样例都通不过<br>交上去就AC了?</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,k;<br><span class="hljs-keyword">int</span> a,b,c,d;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> cin >> n >> k;<br> cin >> a >> b >> c >> d;<br> <span class="hljs-keyword">if</span> (k < n+<span class="hljs-number">1</span> || n == <span class="hljs-number">4</span>){<br> cout << <span class="hljs-string">"-1\n"</span>;<br> } <span class="hljs-keyword">else</span> {<br> cout << a << <span class="hljs-string">" "</span> << c << <span class="hljs-string">" "</span>;<br> vector<<span class="hljs-keyword">int</span>> v;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> <span class="hljs-keyword">if</span> (i != a && i != b && i != c && i != d){<br> cout << i << <span class="hljs-string">" "</span>;<br> v.<span class="hljs-built_in">push_back</span>(i);<br> }<br> }<br> cout << d << <span class="hljs-string">" "</span> << b << <span class="hljs-string">"\n"</span>;<br> cout << c << <span class="hljs-string">" "</span> << a << <span class="hljs-string">" "</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < v.<span class="hljs-built_in">size</span>(); i++){<br> cout << v[i] << <span class="hljs-string">" "</span>;<br> }<br> cout << b << <span class="hljs-string">" "</span> << d << <span class="hljs-string">"\n"</span>;<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 1 MS<br> 内存 736 KB<br> 语言 C++<br> 代码长度 621</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Displayed Friends题解</title>
<url>/posts/241418217/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Displayed-Friends"><a href="#Bear-and-Displayed-Friends" class="headerlink" title="Bear and Displayed Friends"></a>Bear and Displayed Friends</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>利马克是一只小北极熊。他喜欢通过社交网络与其他熊联系。他有n个朋友,他与其中第i个朋友的关系由一个独特的整数ti来描述。这个值越大,友谊就越好。没有两个朋友有相同的值ti。</p>
<p>春天开始了,熊的冬季睡眠结束了。利马克刚刚醒来并登录了。他所有的朋友都还在睡觉,因此他们都不在线。在接下来的几个小时里,他们中的一些(也许是全部)会出现在网上,一次一个。</p>
<p>系统显示正在在线的朋友。在屏幕上,最多可以显示k个朋友。如果有超过k个朋友在线,那么系统只显示其中最好的k个朋友–那些有最大蒂的朋友。</p>
<p>你的任务是处理两种类型的查询。</p>
<p>“1 id”–朋友id成为在线。保证他以前不在线。<br>“2 id”- 检查系统是否显示了朋友的ID。在另一行打印 “YES “或 “NO”。<br>你能帮助Limak并回答所有第二类的询问吗?</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行包含三个整数n、k和q(1≤n,q≤150000,1≤k≤min(6,n))–分别是朋友的数量、显示的最大在线朋友数量和查询的数量。</p>
<p>第二行包含n个整数t1,t2,…,tn(1≤ti≤1e9),其中ti描述Limak与第i个朋友的关系有多好。</p>
<p>下面q行中的第i行包含两个整数typei和idi(1≤typei≤2,1≤idi≤n)–第i个查询。如果typei=1,那么朋友idi成为在线。如果typei=2,那么你应该检查一个朋友idi是否被显示。</p>
<p>保证没有两个第一类型的查询会有相同的白痴,因为一个朋友不可能在线两次。另外,保证至少有一个查询是第二种类型的(typei=2),所以输出不会是空的。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>对于每个第二类型的查询,如果给定的朋友被显示,则打印一行答案–”YES”(不带引号),否则打印 “NO”(不带引号)。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<pre><code class="hljs">4 2 8
300 950 500 200
1 3
2 4
2 3
1 1
1 2
2 1
2 2
2 3
</code></pre>
<p>输出</p>
<pre><code class="hljs">NO
YES
NO
YES
YES
</code></pre>
<p>输入</p>
<pre><code class="hljs">6 3 9
50 20 51 17 99 24
1 3
1 4
1 5
1 2
2 4
2 2
1 1
2 4
2 3
</code></pre>
<p>输出</p>
<pre><code class="hljs">NO
YES
NO
YES
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个例子中,Limak有4个朋友,他们最初都在睡觉。起初,系统显示无人,因为没有人在线。有以下8个查询。<br>“1 3”- 朋友3成为在线。<br>“2 4”–我们应该检查朋友4是否被显示。他甚至不在线,因此我们打印 “NO”。<br>“2 3”- 我们应该检查朋友3是否被显示。现在他是唯一在线的朋友,系统显示他。我们应该打印 “YES”。<br>“1 1”- 朋友1变得在线。系统现在同时显示朋友1和朋友3。<br>“1 2”–朋友2变成在线。现在有3个朋友在线,但我们得到的是k=2,所以只能显示两个朋友。利马克与朋友1的关系比与其他两个在线朋友的关系差(t1<t2,t3),所以朋友1不会被显示。<br>“2 1”- 打印 “NO”。<br>“2 2”–打印 “YES”。<br>“2 3”–打印 “YES”。</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>很适合联系优先队列的一道题……<br>直接打!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n,k,q;<br><span class="hljs-keyword">int</span> a[<span class="hljs-number">150010</span>];<br>priority_queue <<span class="hljs-keyword">int</span>,vector<<span class="hljs-keyword">int</span>>,less<<span class="hljs-keyword">int</span>> > q1,q2;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> cin >> n >> k >> q;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> cin >> a[i];<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= q; i++){<br> <span class="hljs-keyword">int</span> ch,id;<br> cin >> ch >> id;<br> <span class="hljs-keyword">if</span> (ch == <span class="hljs-number">1</span>){<br> q1.<span class="hljs-built_in">push</span>(a[id]);<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">if</span> (!q1.<span class="hljs-built_in">empty</span>()){<br> q2 = q1;<br> <span class="hljs-keyword">bool</span> b = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> j = <span class="hljs-number">1</span>; j <= k; j++){<br> <span class="hljs-keyword">if</span> (a[id] == q2.<span class="hljs-built_in">top</span>()){<br> cout << <span class="hljs-string">"YES\n"</span>;<br> b = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">break</span>;<br> }<br> q2.<span class="hljs-built_in">pop</span>();<br> }<br> <span class="hljs-keyword">if</span> (!b){<br> cout << <span class="hljs-string">"NO\n"</span>;<br> }<br> } <span class="hljs-keyword">else</span> {<br> cout << <span class="hljs-string">"NO\n"</span>;<br> }<br> }<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 0 MS<br> 内存 720 KB<br> 语言 C++<br> 代码长度 700 </p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Three Balls题解</title>
<url>/posts/3224990952/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Three-Balls"><a href="#Bear-and-Three-Balls" class="headerlink" title="Bear and Three Balls"></a>Bear and Three Balls</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>利马克是一只小北极熊。他有n个球,第i个球的大小为ti。</p>
<p>利马克想给他的三个朋友各送一个球。送礼物并不容易,为了让朋友们高兴,利马克必须遵守两条规则。</p>
<p>没有两个朋友可以得到相同大小的球。 没有两个朋友可以得到大小相差超过2的球。 例如,利马克可以选择大小为4、5和3的球,或者大小为90、91和92的球。但他不能选择尺寸为5、5和6的球(两个朋友会得到相同尺寸的球),也不能选择尺寸为30、31和33的球(因为尺寸30和33相差超过2)。</p>
<p>你的任务是检查Limak是否能选择满足上述条件的三个球。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入的第一行包含一个整数n(3≤n≤50)–Limak拥有的球的数量。</p>
<p>第二行包含n个整数t1,t2,…,tn(1≤ti≤1000),ti表示第i个球的大小。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>如果Limak能够选择三个不同大小的球,并且其中任何两个球的大小相差不超过2,则打印 “YES”(不带引号)。否则,打印 “NO”(不带引号)。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入1</p>
<pre><code class="hljs">4
18 55 16 17
</code></pre>
<p>输出1</p>
<pre><code class="hljs">YES
</code></pre>
<p>输入2</p>
<pre><code class="hljs">6
40 41 43 44 44 44
</code></pre>
<p>输出2</p>
<pre><code class="hljs">NO
</code></pre>
<p>输入3</p>
<pre><code class="hljs">8
5 972 3 4 1 4 970 971
</code></pre>
<p>输出3</p>
<pre><code class="hljs">YES
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个例子中,有4个球,Limak能够选择其中的三个球来满足规则。他必须选择尺寸为18、16和17的球。<br>在第二个例子中,没有办法在不违反规则的情况下给三个朋友送礼物。<br>在第三个例子中,选择球的方法甚至不止一种。<br>选择大小为3、4和5的球。<br>选择尺寸为972、970、971的球。</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>STL大法好!!!<br>直接k!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> s[<span class="hljs-number">10010</span>];<br><span class="hljs-keyword">int</span> n;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{<br> cin >> n;<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < n; i++) {<br> cin >> s[i];<br> }<br> <span class="hljs-built_in">sort</span>(s,s+n);<br> <span class="hljs-keyword">int</span> ans = <span class="hljs-built_in">unique</span>(s,s+n)-s; <br> <span class="hljs-keyword">int</span> b = <span class="hljs-number">0</span>;<br> <span class="hljs-keyword">for</span>(<span class="hljs-keyword">int</span> i = <span class="hljs-number">0</span>; i < ans; i++) {<br> <span class="hljs-keyword">if</span>(s[i+<span class="hljs-number">1</span>] == s[i]+<span class="hljs-number">1</span> && s[i+<span class="hljs-number">2</span>] == s[i+<span class="hljs-number">1</span>]+<span class="hljs-number">1</span>) {<br> b = <span class="hljs-number">1</span>;<br> <span class="hljs-keyword">break</span>;<br> }<br> }<br> <span class="hljs-keyword">if</span>(b){<br> cout << <span class="hljs-string">"YES\n"</span>;<br> } <span class="hljs-keyword">else</span>{<br> cout <<<span class="hljs-string">"NO\n"</span>;<br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 1 MS<br> 内存 720 KB<br> 语言 C++<br> 代码长度 393</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Five Cards题解</title>
<url>/posts/2000011491/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Five-Cards"><a href="#Bear-and-Five-Cards" class="headerlink" title="Bear and Five Cards"></a>Bear and Five Cards</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>一只小熊Limak在玩一个游戏。他有五张牌。每张卡片上都写有一个数字。每个数字都是一个正整数。</p>
<p>利马克可以丢弃(扔掉)一些牌。他的目标是使写在剩余(未丢弃)卡片上的数字之和最小。</p>
<p>他最多可以丢弃一次两个或三个数字相同的牌。当然,如果不可能选择两张或三张数字相同的牌,他也不会弃牌。</p>
<p>给出五个写在卡片上的数字,你能找到剩余卡片上数字的最小和吗?</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入的唯一一行包含五个整数t1、t2、t3、t4和t5(1≤ti≤100)–写在卡片上的数字。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>打印写在剩余卡片上的数字的最小可能的总和。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入1</p>
<pre><code class="hljs">7 3 7 3 20
</code></pre>
<p>输出1</p>
<pre><code class="hljs">26
</code></pre>
<p>输入2</p>
<pre><code class="hljs">7 9 3 1 8
</code></pre>
<p>输出2</p>
<pre><code class="hljs">28
</code></pre>
<p>输入3</p>
<pre><code class="hljs">10 10 10 10 10
</code></pre>
<p>输出3</p>
<pre><code class="hljs">20
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个例子中,利马克有数字为7、3、7、3和20的牌。利马克可以做以下其中一个。<br>什么都不做,总和将是7+3+7+3+20=40。 去掉两张数字为7的牌。剩下的总和将是3+3+20=26。<br>移除两张数字为3的牌。剩下的总和是7+7+20=34。<br>你被要求最小化总和,所以答案是26。<br>在第二个例子中,不可能找到两张或三张数字相同的牌。因此,利马克什么也没做,总和是7+9+1+3+8=28。<br>在第三个例子中,所有的牌都有相同的数字。丢弃任何三张牌都是最佳选择。剩下两个数字的总和是10+10=20。</p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p><del>水题一道</del><br>呸<br>模拟题一道<br>上code!</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> a;<br><span class="hljs-keyword">int</span> b[<span class="hljs-number">110</span>];<br><span class="hljs-keyword">int</span> sum = <span class="hljs-number">0</span>;<br><span class="hljs-keyword">int</span> top;<br><span class="hljs-keyword">int</span> ans;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-comment">//freopen(".in","r",stdin);</span><br> <span class="hljs-comment">//freopen(".out","w",stdout);</span><br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= <span class="hljs-number">5</span>; i++){<br> cin >> a;<br> b[a]++;<br> sum += a;<br> }<br> top = sum;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">100</span>; i >= <span class="hljs-number">0</span>; i--){<br> ans = top;<br> <span class="hljs-keyword">if</span> (b[i] >= <span class="hljs-number">3</span>){<br> ans -= i*<span class="hljs-number">3</span>;<br> } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (b[i] == <span class="hljs-number">2</span>){<br> ans -= i*<span class="hljs-number">2</span>;<br> }<br> sum = <span class="hljs-built_in">min</span>(sum,ans);<br> }<br> cout << sum;<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 0 MS<br> 内存 704 KB<br> 语言 C++<br> 代码长度 451 </p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>Bear and Finding Criminals题解</title>
<url>/posts/2949852796/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="Bear-and-Finding-Criminals"><a href="#Bear-and-Finding-Criminals" class="headerlink" title="Bear and Finding Criminals"></a>Bear and Finding Criminals</h3><span id="more"></span>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>熊岛有n个城市,编号为1到n。城市被排列成一长排。城市i和j之间的距离等于|i-j|。</p>
<p>利马克是一名警察。他住在一个城市a,他的工作是抓捕罪犯。这很难,因为他不知道犯罪分子在哪个城市。不过,他知道每个城市最多只有一个罪犯。</p>
<p>利马克将使用BCD(熊犯罪探测器)。BCD会告诉Limak,从一个城市a开始,每隔一段距离就有多少个罪犯。</p>
<p>你知道在哪些城市有罪犯。在利马克使用BCD后,计算他能抓到的罪犯的数量。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>输入的第一行包含两个整数n和a(1≤a≤n≤100)–城市的数量和Limak居住的城市的索引。<br>第二行包含n个整数t1,t2,…,tn(0≤ti≤1)。在第i个城市有ti个罪犯。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>打印Limak将抓到的罪犯的数量。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入1</p>
<pre><code class="hljs">6 3
1 1 1 0 1 0
</code></pre>
<p>输出1</p>
<pre><code class="hljs">3
</code></pre>
<p>输入2</p>
<pre><code class="hljs">5 2
0 0 0 1 0
</code></pre>
<p>输出2</p>
<pre><code class="hljs">1
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>在第一个样本中,有六个城市,利马克住在第三个城市(下面的蓝色箭头)。罪犯在标有红色的城市里。<br>使用BCD给Limak提供了以下信息。</p>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/16516346483990.png"></p>
<p>1.在离第三个城市的距离0处有一个罪犯–利马克确信这个罪犯正好在第三个城市。<br>2.在离第三城市的距离1处有一个罪犯–利马克不知道这个罪犯是在第二还是第四城市。<br>3.在离第三座城市的距离为2的地方有两个罪犯–利马克肯定有一个罪犯在第一座城市,一个在第五座城市。<br>4.每一个更大的距离都有零个罪犯。<br>因此,利马克将在第1、3和5个城市抓到罪犯,即总共有3个罪犯。 在第二个例子中(如下图),BCD给Limak的信息是,在距离Limak的城市2处有一个罪犯。在距离2的地方只有一个城市,所以Limak确定了一个罪犯的位置。</p>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/16516347087641.png"></p>
<h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><blockquote>
<p> 时间限制 2 秒<br> 内存限制 256 MB<br> 来源 FYOJ</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><p>emmmm……<br><del>模拟好,模拟秒,模拟青蛙呱呱叫</del></p>
<p>咳咳咳,还好,模拟,按题目打即可</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><iostream></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> s[<span class="hljs-number">110</span>];<br><span class="hljs-keyword">int</span> n,a;<br><span class="hljs-keyword">int</span> sum = <span class="hljs-number">0</span>;<br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{ <br> cin >> n >> a;<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++){<br> cin >> s[i];<br> } <br> <span class="hljs-keyword">if</span> (a <= n/<span class="hljs-number">2</span>) {<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>;i <= n; i++) {<br> <span class="hljs-keyword">if</span> (i < a) {<br> <span class="hljs-keyword">if</span> (s[i] == <span class="hljs-number">1</span> && s[<span class="hljs-number">2</span>*a-i] == <span class="hljs-number">1</span>){<br> sum += <span class="hljs-number">2</span>;<br> }<br> }<br> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (i == a) {<br> <span class="hljs-keyword">if</span> (s[i] == <span class="hljs-number">1</span>){<br> sum++;<br> }<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">if</span> (i >= <span class="hljs-number">2</span>*a){<br> <span class="hljs-keyword">if</span>(s[i] == <span class="hljs-number">1</span>){<br> sum++;<br> } <br> }<br> }<br> }<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n; i++) {<br> <span class="hljs-keyword">if</span> (i >= <span class="hljs-number">2</span>*a-n && i < a) {<br> <span class="hljs-keyword">if</span> (s[i] == <span class="hljs-number">1</span>&&s[<span class="hljs-number">2</span>*a-i] == <span class="hljs-number">1</span>){<br> sum+=<span class="hljs-number">2</span>;<br> }<br> } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (i == a) {<br> <span class="hljs-keyword">if</span> (s[i] == <span class="hljs-number">1</span>){<br> sum++;<br> }<br> } <span class="hljs-keyword">else</span> {<br> <span class="hljs-keyword">if</span> (i < <span class="hljs-number">2</span>*a-n){<br> <span class="hljs-keyword">if</span>(s[i] == <span class="hljs-number">1</span>){<br> sum++;<br> } <br> }<br> }<br> }<br> }<br> cout << sum << endl;<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 通过<br> 分数 100<br> 时间 1 MS<br> 内存 712 KB<br> 语言 C++<br> 代码长度 797 </p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>世界杯(worldcup)题解</title>
<url>/posts/751019721/</url>
<content><![CDATA[<h2 id="题目"><a href="#题目" class="headerlink" title="题目"></a>题目</h2><h3 id="世界杯-worldcup"><a href="#世界杯-worldcup" class="headerlink" title="世界杯(worldcup)"></a>世界杯(worldcup)</h3><span id="more"></span>
<h3 id="题目描述"><a href="#题目描述" class="headerlink" title="题目描述"></a>题目描述</h3><p>3014年世界杯足球赛就要开始了!作为卫冕冠军中国足球队的教练,手下每位球员都是猛将,如何摆出最强的11人阵容也是一件幸福的烦恼事啊。<br>众所周知,足球阵容里的11个球员都会被分配到场上某一个特别的位置,而这些位置主要分为守门员、后卫、中场和前锋四种,其中守门员有且只有一个,后卫、中场和前锋的人数取决于你安排的足球阵型。形容足球阵型的方法由后卫开始计算至前锋,但不把守门员计算在内。例如,3-5-2阵型是指有三个后卫、五个中场及两名前锋。由于竞争激烈,每位球员只会培养其中一种位置所需要的技能,所以他们每个人都只能胜任四个位置中的其中一种。<br>作为一个对球员能力了如指掌的教练,你给每个球员的综合水平进行量化。为了将阵型安排得更好,你的教练团队决定使用以下策略安排球员:首先按照顺序提出Q个阵型,分别代表第一阵型、第二阵型、……、第Q阵型。然后对于每个阵型,从仍未选择的球员中选择最好的对应数量的守门员、后卫、中场和前锋。比如说,对于第一阵型,在所有球员中选择;对于第二阵型,在除了第一阵型外的所有球员中选择;对于第三阵型,在除了第一阵型和第二阵型外的所有球员中选择;以此类推。<br>现在Q个阵型都已经确定,而你需要知道的,是每个阵型的平均综合水平分别是多少。</p>
<h3 id="输入"><a href="#输入" class="headerlink" title="输入"></a>输入</h3><p>第一行有四个整数K, D, M, F,分别表示守门员、后卫、中场和前锋供挑选的球员人数。<br>第二行有K个整数k_i,分别表示每个守门员的综合水平值。<br>第三行有D个整数d_i,分别表示每个后卫的综合水平值。<br>第四行有M个整数m_i,分别表示每个中场的综合水平值。<br>第五行有F个整数f_i,分别表示每个前锋的综合水平值。<br>第六行有一个整数Q,表示教练团队提出的阵型个数。<br>以下Q行,第i行三个整数A_i, B_i, C_i,由空格间隔,表示第i阵型是A_i - B_i - C_i阵型。</p>
<h3 id="输出"><a href="#输出" class="headerlink" title="输出"></a>输出</h3><p>输出Q行。对于第i种阵型,输出一个实数,表示该阵型平均综合水平的最大值,并四舍五入到小数点后2位。</p>
<h3 id="样例"><a href="#样例" class="headerlink" title="样例"></a>样例</h3><p>输入</p>
<pre><code class="hljs">3 10 12 4
76 60 87
78 84 84 84 81 82 72 51 77 57
85 84 62 87 88 64 81 90 80 66 88 85
65 83 63 79
2
4 5 1
4 4 2
</code></pre>
<p>输出</p>
<pre><code class="hljs">85.64
78.00
</code></pre>
<h3 id="提示"><a href="#提示" class="headerlink" title="提示"></a>提示</h3><p>对于30%数据,K, D, M, F≤1000,Q≤10;<br>对于100%数据,1≤K, D, M, F≤10^5,0≤k_i, d_i, m_i, f_i≤10^8,1≤Q≤K,0≤A_i, B_i, C_i≤10,A_i+B_i+C_i=10,∑A_i≤D,∑B_i≤M,∑C_i≤F。</p>
<blockquote>
<p> 时间限制: 1.000 Sec<br> 内存限制: 128 MB<br> 来源:Luo’s OJ && 洛谷</p>
</blockquote>
<h2 id="题解"><a href="#题解" class="headerlink" title="题解"></a>题解</h2><h4 id="这题用优先队列!!!"><a href="#这题用优先队列!!!" class="headerlink" title="这题用优先队列!!!"></a>这题用优先队列!!!</h4><p><del>优先队列是队列</del>,先要包含头文件#include <queue>, 它和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队</queue></p>
<p>优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的</p>
<p>接下来看code吧~</p>
<figure class="highlight cpp"><table><tbody><tr><td class="code"><pre><code class="hljs cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span><span class="hljs-meta-string"><bits/stdc++.h></span></span><br><span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> std;<br><span class="hljs-keyword">int</span> n1,n2,n3,n4,T;<br>priority_queue <<span class="hljs-keyword">int</span>,vector<<span class="hljs-keyword">int</span>>,less<<span class="hljs-keyword">int</span>> >q1,q2,q3,q4; <span class="hljs-comment">//定义优先队列 </span><br><span class="hljs-comment">//降序队列</span><br><span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span>{<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d%d%d"</span>,&n1,&n2,&n3,&n4); <span class="hljs-comment">//输入 </span><br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n1; i++) {<br> <span class="hljs-keyword">int</span> a;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a);<br> q1.<span class="hljs-built_in">push</span>(a); <span class="hljs-comment">//入队 </span><br> } <br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n2; i++) { <span class="hljs-comment">//这些都是第一个循环复制下来,微调的 </span><br> <span class="hljs-keyword">int</span> a;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a);<br> q2.<span class="hljs-built_in">push</span>(a);<br> } <br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n3; i++) {<br> <span class="hljs-keyword">int</span> a;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a);<br> q3.<span class="hljs-built_in">push</span>(a);<br> } <br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= n4; i++) {<br> <span class="hljs-keyword">int</span> a;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&a);<br> q4.<span class="hljs-built_in">push</span>(a);<br> } <br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d"</span>,&T);<br> <span class="hljs-keyword">while</span> (T--){ <span class="hljs-comment">//同样,按题意模拟即可 </span><br> <span class="hljs-keyword">int</span> a,b,c;<br> <span class="hljs-built_in">scanf</span>(<span class="hljs-string">"%d%d%d"</span>,&a,&b,&c);<br> <span class="hljs-keyword">double</span> sum = <span class="hljs-number">0.0</span>;<br> sum += q1.<span class="hljs-built_in">top</span>();<br> q1.<span class="hljs-built_in">pop</span>();<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= a; i++){<br> sum += q2.<span class="hljs-built_in">top</span>(); <span class="hljs-comment">//读取元素 </span><br> q2.<span class="hljs-built_in">pop</span>(); <span class="hljs-comment">//弹出 </span><br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= b; i++){ <span class="hljs-comment">//复制黏贴 </span><br> sum += q3.<span class="hljs-built_in">top</span>();<br> q3.<span class="hljs-built_in">pop</span>();<br> }<br> <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i <= c; i++){<br> sum += q4.<span class="hljs-built_in">top</span>();<br> q4.<span class="hljs-built_in">pop</span>();<br> }<br> <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%.2lf\n"</span>,(sum/<span class="hljs-number">11</span>)); <span class="hljs-comment">//最后输出即可 </span><br> }<br> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;<br>}<br><br></code></pre></td></tr></tbody></table></figure>
<blockquote>
<p> 测评结果 正确<br> 内存(KB) 4444KB<br> 耗时(MS) 349ms<br> 语言 C++<br> 代码长度 909 bytes</p>
</blockquote>
]]></content>
<tags>
<tag>题解</tag>
<tag>c++</tag>
</tags>
</entry>
<entry>
<title>谢言射教你用hexo+github搭建博客(简约版)</title>
<url>/posts/3893026529/</url>
<content><![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><h2 id="或许有人会问,为什么是用github而不用coding和gitee呢?因为coding已经改版,貌似不支持静态页面了,gitee使用又很麻烦(要充钱),还要实名认证,最后还是选了github。"><a href="#或许有人会问,为什么是用github而不用coding和gitee呢?因为coding已经改版,貌似不支持静态页面了,gitee使用又很麻烦(要充钱),还要实名认证,最后还是选了github。" class="headerlink" title="或许有人会问,为什么是用github而不用coding和gitee呢?因为coding已经改版,貌似不支持静态页面了,gitee使用又很麻烦(要充钱),还要实名认证,最后还是选了github。"></a>或许有人会问,为什么是用github而不用coding和gitee呢?因为coding已经改版,貌似不支持静态页面了,gitee使用又很麻烦(要充钱),还要实名认证,最后还是选了github。</h2><span id="more"></span>
<h2 id="环境配置"><a href="#环境配置" class="headerlink" title="环境配置"></a>环境配置</h2><h3 id="安装Nodejs"><a href="#安装Nodejs" class="headerlink" title="安装Nodejs"></a>安装Nodejs</h3><p>下载地址:<a href="https://nodejs.org/zh-cn/download/">https://nodejs.org/zh-cn/download/</a></p>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.2.png"><br>如果您是Win系统,64位的,请选择画红框的部分。</p>
<p>双击打开文件。<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.3.png"></p>
<p>安装我这里也不多说了,一路默认就行。</p>
<h3 id="安装git"><a href="#安装git" class="headerlink" title="安装git"></a>安装git</h3><p>下载地址:<a href="https://git-scm.com/">https://git-scm.com/</a></p>
<p>如果您是Win系统,64位的,请选择“Download for Windows”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.4.png"></p>
<p>下载好双击打卡文件,即可开始安装。<br>安装我这里也不多说了,一路默认就行。</p>
<h3 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h3><p>这里配置一下环境变量<br>“开始”里面打卡“设置”<br>![](<a href="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.6">https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.6</a> (2).png)</p>
<p>搜索“环境变量”<br>点击“编辑系统环境变量”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.7.png"></p>
<p>在弹出来的窗口中点击“环境变量”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.8.png"></p>
<p>在“系统变量”中找到“Path”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.9.png"></p>
<p>双击“Path”</p>
<p>在弹出来的窗口中的<strong>空白部分</strong>增加Nodejs的下载地址<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.10.png"></p>
<p>比如我下在D盘,位置就是D盘的<br>注意!!!!<br>是文件夹的位置!!<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.11.png" alt="这个文件夹的地址!!!"></p>
<p>完成后按“确定”<br><strong>(三个窗口都按确定)</strong>即可</p>
<h3 id="验证安装是否成功"><a href="#验证安装是否成功" class="headerlink" title="验证安装是否成功"></a>验证安装是否成功</h3><p>按住键盘上的“Win徽标键”,再按“R”<br>再弹出的窗口中输入“cmd”,再回车<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.12.png"></p>
<p>在弹出的黑框框中分别输入“node -v”加回车和“npm -v”加回车<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.13.png"><br>如果能像我一样,得到版本号,那么就安装成功了<br>(失败请重复上述操作)</p>
<p>再回到桌面</p>
<p>鼠标右键按一下<br>如果像我一样,有“Git Bush Here”这个选项<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.14.jpg"></p>
<p>那么恭喜您<br>准备就完成了!!!</p>
<h2 id="搭建博客"><a href="#搭建博客" class="headerlink" title="搭建博客"></a>搭建博客</h2><h3 id="安装hexo"><a href="#安装hexo" class="headerlink" title="安装hexo"></a>安装hexo</h3><p>在桌面右键,在弹出来的窗口中单击“Git Bush Here”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/1.14.jpg"></p>
<p>在弹出来的窗口中输入要创建博客的地址<br>比如我的要搭建在F盘<br>那么我就输入</p>
<pre><code class="hljs">cd /f/
</code></pre>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.2.png"><br>如图,成功跳到了F盘</p>
<p>然后在git窗口中输入</p>
<pre><code class="hljs">npm install hexo-cli -g
</code></pre>
<p>结果如图(差不多即可)<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.3.png"></p>
<p>再输入</p>
<pre><code class="hljs">hexo init myblog
</code></pre>
<p>速度有点慢,需要稍等一会<br>结果如图(差不多即可)(以下省略)<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.4.png"></p>
<p>同时,你的(D,E,F……)盘下会出现应该叫“myblog”的文件夹<br>欧克,用git打开myblog这个文件夹</p>
<pre><code class="hljs">cd myblog
</code></pre>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.5.png"></p>
<p>接着在git运行</p>
<pre><code class="hljs">hexo s
</code></pre>
<p><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.6.png"></p>
<p>然后在浏览器中打开<a href="http://localhost:4000/">http://localhost:4000/</a><br>就能看见自己在本地搭建好的博客了<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.7.png"></p>
<p>这里附上hexo在git的常用命令</p>
<pre><code class="hljs">hexo new“postName” #新建文章
hexo new page“pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo sprver #开启预览访问端口(默认端口4000,'ctrl +c'关闭server)
hexo deploy #部署
hexo help #查看帮助
hexo version #查看Hexo的版本
</code></pre>
<p>以及命令的缩写</p>
<pre><code class="hljs">hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy
</code></pre>
<p>和组合命令</p>
<pre><code class="hljs">hexo s -g #生成并本地预览
hexo d-g #生成并上传
</code></pre>
<p>好,然后在git窗口按ctrl+c结束预览</p>
<p>如果你做到了这一步,那么恭喜你,你的博客在本地搭建成功了</p>
<p>接下来我们开始部署到github</p>
<h3 id="部署到github"><a href="#部署到github" class="headerlink" title="部署到github"></a>部署到github</h3><p>什么是github?</p>
<blockquote>
<p>GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。2022年4月13日起,GitHub 开始封锁受美国制裁公司的俄罗斯开发者账户。 ——–百度百科</p>
</blockquote>
<p>好了好了,不装了,开始</p>
<p>首先,我们要在github创建一个账号<br>github官网:<a href="https://github.com/">https://github.com/</a><br>额,但访问速度较慢的同学可以访问这个网址:<a href="http://webtrans.yodao.com/webTransPc/index.html?from=auto&to=auto&type=1&url=https://github.com/#/">http://webtrans.yodao.com/webTransPc/index.html?from=auto&to=auto&type=1&url=https://github.com/#/</a></p>
<p>点红框里的按钮(”Sign up”)注册<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.8.png"></p>
<p>然后输入你的邮箱,点continue<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.9.png"></p>
<p>设置一个密码,然后点continue<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.10.png"></p>
<p>再设置一个用户名,再点continue<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.11.png"></p>
<p>接下来如果想通过电子邮件接收github的产品更新和公告,就输入“y”,否则输入“n”<br>我选择“n”,再按“continue”<br>好,接下来按他的提示完成人类验证,就完成了<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.12.png"></p>
<p>接着它会发验证码到你的邮箱<br>在网页上输入验证码确认即可。<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.13.png"></p>
<p>然后它会统计一下你的信息,随便填一下就好<br>注:选套餐时最好选择“free”(免费)这个选项,不然会很麻烦</p>
<p>啊,终于注册好了<br>接着来创建一个仓库<br>先点红色框(界面右上角)的“+”<br>再点“New repository”<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.14.png"></p>
<p>就会自动条到一个界面<br>在这个界面中的“Repository name”(项目名)中填</p>
<pre><code class="hljs">你的github用户名.github.io
</code></pre>
<p>例如我的</p>
<pre><code class="hljs">teacherseth.github.io
</code></pre>
<p>“Description”(描述)这一栏中随便填一下即可<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.15.png"></p>
<p>接着划到底部<br>点那个绿色的按钮(“Create repository”)<br>完成创建<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.16.png"></p>
<p>接着看图<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.17.png"></p>
<p>OK,用vscode打开hexo博客根目录的_config.yml文件<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.18.png"></p>
<p>划到最后面<br>修改“deploy”这一项<br>把</p>
<pre><code class="hljs">deploy:
type: ''
</code></pre>
<p>改成</p>
<pre><code class="hljs">deploy:
type: git
repo: 刚才复制的ssh代码
branch: main
</code></pre>
<p>比如我的</p>
<pre><code class="hljs">deploy:
type: git
repo: [email protected]:teacherxys/teacherxys.github.io.git
branch: main
</code></pre>
<p>然后打开git<br>输入</p>
<pre><code class="hljs">npm install hexo-deployer-git --save
</code></pre>
<p>回车<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.19.png"></p>
<p>完成后打开 <a href="https://github.com/settings/keys">https://github.com/settings/keys</a> 这个网址<br>在git输入</p>
<pre><code class="hljs">cd ~/.ssh/
rm -rf *
ssh-keygen
</code></pre>
<p>和四个回车<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.20.png"></p>
<p>然后输入</p>
<pre><code class="hljs">cat id_rsa.pub
</code></pre>
<p>接着把它输出的东西复制下来<br>在浏览器中点击“New ssh key”<br>创建一个ssh秘钥<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.21.png"></p>
<p>Title中随便填<br>key中填刚刚复制的东西<br>然后点“Add SSH key”创建<br>好<br>在git中输入</p>
<pre><code class="hljs">cd 博客地址
hexo d
</code></pre>
<p>例如</p>
<pre><code class="hljs">cd /f/myblog
hexo d
</code></pre>
<p>回车<br>稍等一会<br>再输入</p>
<pre><code class="hljs">yes
</code></pre>
<p>回车<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.22.png"></p>
<p>欧克,在浏览器中输入</p>
<pre><code class="hljs">你的github用户名.github.io
</code></pre>
<p>比如我的</p>
<pre><code class="hljs">teachxys.github.io
</code></pre>
<p>如果出现了这样<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/2.23.png"></p>
<p>那么恭喜你,博客搭建成功了!!!<br>撒花!!!<br>以后就能通过 你的github用户名.github.io 来访问你的博客了!!!</p>
<h2 id="更换主题"><a href="#更换主题" class="headerlink" title="更换主题"></a>更换主题</h2><p>当然,您可以保留hexo的默认主题,也可以跟着本教程更换</p>
<h3 id="选择主题"><a href="#选择主题" class="headerlink" title="选择主题"></a>选择主题</h3><p>到 <a href="https://hexo.io/themes/">https://hexo.io/themes/</a> 中选择一款您喜欢的主题,并点击它的名字进入它的github地址<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/3.1.png"></p>
<h3 id="更换主题-1"><a href="#更换主题-1" class="headerlink" title="更换主题"></a>更换主题</h3><p>这里以butterfly主题为例<br>划到自述文件的开头<br>然后复制红框中的代码<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/3.2.png"></p>
<p>在git中先打开博客(cd /f/myblog),然后把刚刚复制的东西黏贴到git中运行<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/3.3.png"></p>
<p>注:butterfly等主题还需在git中运行</p>
<p> npm install hexo-renderer-pug hexo-renderer-stylus<br>才行<br>接着更改博客根目录的_config.yml文件<br>把大约为第100行的theme配置改为</p>
<p> theme: 您刚刚更改的主题的名称<br>比如我的</p>
<p> theme: butterfly<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/3.4.png"></p>
<p>再在git中运行</p>
<p> hexo clean && hexo g && hexo d<br>即可<br>等待一会,在浏览器中打开自己的博客,就能看见变化了<br><img src="https://cdn.jsdelivr.net/gh/xieyanshe666/PicGoCDN/img/3.5.png"></p>
<h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>博主有关hexo博客搭建的文章已经写完了<br>但后续会推出hexo博客美化系列的文章<br>敬请期待……</p>
<p>感谢您的阅读!!!<br>(如有错请联系博主:<a href="mailto:[email protected]">[email protected]</a>或在评论区留言)</p>
<center>---------END--------</center>]]></content>
<tags>
<tag>hexo</tag>
<tag>github</tag>
</tags>