-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
636 lines (352 loc) · 341 KB
/
atom.xml
File metadata and controls
636 lines (352 loc) · 341 KB
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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>咕咕云梦泽</title>
<icon>https://www.gravatar.com/avatar/bbd76a9144ca8b27e5bf398b53787e63</icon>
<subtitle>气蒸云梦泽,波撼岳阳城。</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="https://blog.pai233.top/"/>
<updated>2022-08-05T02:31:47.989Z</updated>
<id>https://blog.pai233.top/</id>
<author>
<name>pai233</name>
<email>gugugupai233@gmail.com</email>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>【NOIP2006普及组】Jam的计数法</title>
<link href="https://blog.pai233.top/20220805/noip2006pj-t3/"/>
<id>https://blog.pai233.top/20220805/noip2006pj-t3/</id>
<published>2022-08-05T02:21:02.000Z</published>
<updated>2022-08-05T02:31:47.989Z</updated>
<content type="html"><![CDATA[<p>这道题还算简单。</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2020/05/02/z3OUVFeN7SGJvDi.png" alt="" /></p><h1 id="方法"><a class="markdownIt-Anchor" href="#方法"></a> 方法</h1><p>找到一个可以变动的位,变动后再将其它位对齐,对齐完后输出即可。</p><h1 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="type">char</span> num[<span class="number">35</span>];</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="comment">// freopen("count.in","r",stdin);</span></span><br><span class="line"><span class="comment">// freopen("count.out","w",stdout);</span></span><br><span class="line"><span class="type">int</span> start,end,len;</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d%d%d"</span>,&start,&end,&len);</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%s"</span>,num);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">5</span>;i++){<span class="comment">//输出5个Jam数字</span></span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> j=len<span class="number">-1</span>;j>=<span class="number">0</span>;j--){<span class="comment">//枚举变动位</span></span><br><span class="line"><span class="type">int</span> tmp=<span class="string">'a'</span>+(end-(len-j));</span><br><span class="line"><span class="keyword">if</span>(num[j]+<span class="number">1</span><=tmp){<span class="comment">//判断是否可行</span></span><br><span class="line">num[j]+=<span class="number">1</span>;</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> k=j+<span class="number">1</span>;k<len;k++){<span class="comment">//对齐</span></span><br><span class="line">num[k]=num[j]+k-j;</span><br><span class="line">}</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%s\n"</span>,num);</span><br><span class="line"><span class="keyword">break</span>;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>这道题还算简单。</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="模拟" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%A8%A1%E6%8B%9F/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="NOIP" scheme="https://blog.pai233.top/tags/NOIP/"/>
</entry>
<entry>
<title>【NOIP2008提高组】笨小猴</title>
<link href="https://blog.pai233.top/20220707/noip2008tg-t1/"/>
<id>https://blog.pai233.top/20220707/noip2008tg-t1/</id>
<published>2022-07-07T01:58:38.000Z</published>
<updated>2022-07-07T01:59:23.624Z</updated>
<content type="html"><![CDATA[<p>这是NOIP2008提高组的第一题,难度在<code>普及-</code>以内,算是一道水题。</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2020/05/02/xsj4rk3QIqM2a6K.png" alt="image.png" /></p><h1 id="方法"><a class="markdownIt-Anchor" href="#方法"></a> 方法</h1><p>读入一个单词,遍历一遍找到出现次数最大以及出现次数最小的数(这个数 $ >0 $ ),相减后判断是否为质数即可。</p><h1 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码:</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="type">char</span> word[<span class="number">105</span>];</span><br><span class="line"><span class="type">int</span> alphabet[<span class="string">'z'</span>+<span class="number">5</span>],maxnum=INT_MIN,minnum=INT_MAX,prime[<span class="number">35</span>]={<span class="number">0</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">5</span>,<span class="number">7</span>,<span class="number">11</span>,<span class="number">13</span>,<span class="number">17</span>,<span class="number">19</span>,<span class="number">23</span>,<span class="number">29</span>,<span class="number">31</span>,<span class="number">37</span>,<span class="number">41</span>,<span class="number">43</span>,<span class="number">47</span>,<span class="number">53</span>,<span class="number">59</span>,<span class="number">61</span>,<span class="number">67</span>,<span class="number">71</span>,<span class="number">73</span>,<span class="number">79</span>,<span class="number">83</span>,<span class="number">89</span>,<span class="number">97</span>};</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"word.in"</span>,<span class="string">"r"</span>,stdin);</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"word.out"</span>,<span class="string">"w"</span>,stdout);</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%s"</span>,word);</span><br><span class="line"><span class="type">int</span> len=<span class="built_in">strlen</span>(word);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">0</span>;i<len;i++){</span><br><span class="line">alphabet[word[i]]++;<span class="comment">//统计数据</span></span><br><span class="line">}</span><br><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment">for(int i='a';i<='z';i++){</span></span><br><span class="line"><span class="comment">cout<<(char)i<<' '<<alphabet[i]<<endl;</span></span><br><span class="line"><span class="comment">}</span></span><br><span class="line"><span class="comment">*/</span></span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="string">'a'</span>;i<=<span class="string">'z'</span>;i++){</span><br><span class="line"><span class="keyword">if</span>(maxnum<alphabet[i]){</span><br><span class="line">maxnum=alphabet[i];</span><br><span class="line">}</span><br><span class="line"><span class="keyword">if</span>(minnum>alphabet[i] <span class="keyword">and</span> alphabet[i]!=<span class="number">0</span>){<span class="comment">//找出现次数最小的字母(出现次数不能是0,不然就没出现过)</span></span><br><span class="line">minnum=alphabet[i];</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="comment">//cout<<maxnum<<' '<<minnum;</span></span><br><span class="line"><span class="comment">//cout<<maxnum-minnum<<endl;</span></span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">25</span>;i++){<span class="comment">//判断maxnum-minnum是否为质数</span></span><br><span class="line"><span class="keyword">if</span>(maxnum-minnum==prime[i]){</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"Lucky Word\n%d"</span>,prime[i]);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"No Answer\n0"</span>);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>这是NOIP2008提高组的第一题,难度在<code>普及-</code>以内,算是一道水题。</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="模拟" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%A8%A1%E6%8B%9F/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="NOIP" scheme="https://blog.pai233.top/tags/NOIP/"/>
</entry>
<entry>
<title>【Butterfly主题】添加二级跳转页</title>
<link href="https://blog.pai233.top/20220503/butterfly-go-jumper/"/>
<id>https://blog.pai233.top/20220503/butterfly-go-jumper/</id>
<published>2022-05-03T11:17:22.000Z</published>
<updated>2022-05-03T11:36:11.240Z</updated>
<content type="html"><![CDATA[<p>在逛别人的博客的时候,发现了有一种叫<code>go.php</code>的东西,可以经过自己站点的网页再跳转出去,方便SEO优化。但是像Hexo这类静态博客,想要从源HTML修改链接难度有点大,这里我们采用JavaScript动态修改。</p><span id="more"></span><h1 id="部署go-jumper到github-pages"><a class="markdownIt-Anchor" href="#部署go-jumper到github-pages"></a> 部署Go Jumper到Github Pages</h1><p>博主根据<a href="https://mkblog.cn/701/">这个大佬的博客</a>里的二次跳转,魔改了一个静态版:<a href="https://github.com/pai233/go-jumper">Go Jumper</a><br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/4LTcE2wAXrmvkKZ.png" alt="image.png" /></p><p>所以,现在登陆你的Github账号,Fork这个仓库,选择你的个人账户。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/EblcdQUOof9sBZH.png" alt="image.png" /></p><p>Fork完毕后,点击Settings->Pages,将原分支从<code>none</code>修改为<code>master</code>,目录保持为<code>/(root)</code>,然后Save。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/23sepgmSiFvbhGw.png" alt="image.png" /></p><p>这样,你自己的Go Jumper就成功部署在<code>https://[你的Github用户名].github.io/go-jumper/</code>了。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/5tML3zhxuHOlPfr.png" alt="image.png" /></p><p>当然,你也可以绑定自己的域名,或者部署到其他的平台,这里不展开赘述。</p><h1 id="修改配置"><a class="markdownIt-Anchor" href="#修改配置"></a> 修改配置</h1><p>为了方便,我们这边直接在线修改:打开<code>https://github.com/[你的Github用户名]/go-jumper/edit/master/config.json</code>,修改以下内容:</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"sitename"</span><span class="punctuation">:</span><span class="string">"pai233の小站"</span><span class="punctuation">,</span> <span class="comment">//修改为你的站点名</span></span><br><span class="line"> <span class="attr">"allowlist"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="string">"pai233.top"</span> <span class="comment">//允许的来源</span></span><br><span class="line"> <span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"backTo"</span><span class="punctuation">:</span> <span class="punctuation">{</span> <span class="comment">//来源不合法、解析失败时的返回页面</span></span><br><span class="line"> <span class="attr">"url"</span><span class="punctuation">:</span> <span class="string">"https://blog.pai233.top/"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"sitename"</span><span class="punctuation">:</span> <span class="string">"pai233の小窝"</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure><p>修改完成后保存。</p><h1 id="动态修改"><a class="markdownIt-Anchor" href="#动态修改"></a> 动态修改</h1><p>新建<code>[主题根目录]/source/js/link-checker.js</code>,内容如下:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">ready</span>(<span class="keyword">function</span>(<span class="params"></span>){</span><br><span class="line"> <span class="title function_">checkLink</span>();</span><br><span class="line">});</span><br><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">on</span>(<span class="string">'pjax:complete'</span>, <span class="keyword">function</span> (<span class="params"></span>) {</span><br><span class="line"> <span class="title function_">checkLink</span>(); </span><br><span class="line">});</span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLink</span>(<span class="params"></span>){</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">"Running..."</span>)</span><br><span class="line"> <span class="keyword">let</span> link = <span class="variable language_">document</span>.<span class="title function_">getElementsByTagName</span>(<span class="string">'a'</span>);</span><br><span class="line"> <span class="comment">//console.log(link)</span></span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">var</span> i=<span class="number">0</span>;i<link.<span class="property">length</span>;i++){</span><br><span class="line"> <span class="keyword">if</span>(link[i].<span class="property">href</span>===<span class="string">""</span> || link[i].<span class="property">className</span>===<span class="string">"gitter-open-chat-button"</span>)<span class="keyword">continue</span>;<span class="comment">//去除Gitter聊天框的影响</span></span><br><span class="line"> <span class="keyword">if</span>(!<span class="keyword">await</span> <span class="title function_">checkLocalSite</span>(link[i].<span class="property">href</span>)){</span><br><span class="line"> link[i].<span class="property">href</span> = <span class="string">"https://[你的Go Jumper部署地址]/#"</span>+<span class="variable language_">window</span>.<span class="title function_">btoa</span>(link[i].<span class="property">href</span>)</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">"edit."</span>)</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLocalSite</span>(<span class="params">url</span>){</span><br><span class="line"> <span class="keyword">try</span>{</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">"check:"</span>,url)</span><br><span class="line"> <span class="keyword">let</span> domain = url.<span class="title function_">split</span>(<span class="string">"/"</span>)[<span class="number">2</span>];</span><br><span class="line"> <span class="keyword">if</span>(domain.<span class="title function_">endsWith</span>(<span class="string">"[你的博客域名]"</span>)||domain.<span class="title function_">endsWith</span>(<span class="string">"[本地测试域名]"</span>))<span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> }<span class="keyword">catch</span>(err){</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>然后,我们要将代码注入到主题中,在主题<code>_config.yml</code>中找到<code>inject</code>项:</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line"> <span class="attr">head:</span></span><br><span class="line"> <span class="comment"># - <link rel="stylesheet" href="/xxx.css"></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><script</span> <span class="string">src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><script</span> <span class="string">src="/js/link-checker.js"></script></span></span><br><span class="line"> <span class="attr">bottom:</span></span><br><span class="line"> <span class="comment"># - <script src="xxxx"></script></span></span><br></pre></td></tr></table></figure><p>这样,当博客加载完毕的时候,博客的全部外链就会被加上二级跳转,但是源HTML里的外链不变。</p><h1 id="注意"><a class="markdownIt-Anchor" href="#注意"></a> 注意</h1><p>在<code>index.html</code>中,博主插入了广告代码,有需要的可自行删除:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">id</span>=<span class="string">"google-ads"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">ins</span> <span class="attr">class</span>=<span class="string">"adsbygoogle"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">style</span>=<span class="string">"display:block; text-align:center;"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-layout</span>=<span class="string">"in-article"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-format</span>=<span class="string">"fluid"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-client</span>=<span class="string">"ca-pub-1820088263747150"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-slot</span>=<span class="string">"3739765077"</span>></span><span class="tag"></<span class="name">ins</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">script</span>></span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> (adsbygoogle = <span class="variable language_">window</span>.<span class="property">adsbygoogle</span> || []).<span class="title function_">push</span>({});</span></span><br><span class="line"><span class="language-javascript"> </span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"></<span class="name">div</span>></span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>在逛别人的博客的时候,发现了有一种叫<code>go.php</code>的东西,可以经过自己站点的网页再跳转出去,方便SEO优化。但是像Hexo这类静态博客,想要从源HTML修改链接难度有点大,这里我们采用JavaScript动态修改。</p>
</summary>
<category term="博客美化" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
<category term="功能" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/%E5%8A%9F%E8%83%BD/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="美化" scheme="https://blog.pai233.top/tags/%E7%BE%8E%E5%8C%96/"/>
<category term="Hexo" scheme="https://blog.pai233.top/tags/Hexo/"/>
<category term="JavaScript" scheme="https://blog.pai233.top/tags/JavaScript/"/>
<category term="Butterfly" scheme="https://blog.pai233.top/tags/Butterfly/"/>
</entry>
<entry>
<title>2022年Microsoft 365开发者E5订阅白嫖教程</title>
<link href="https://blog.pai233.top/20220503/how-to-get-a-microsoft-365-e5-account/"/>
<id>https://blog.pai233.top/20220503/how-to-get-a-microsoft-365-e5-account/</id>
<published>2022-05-03T10:28:21.000Z</published>
<updated>2022-05-03T13:21:48.099Z</updated>
<content type="html"><![CDATA[<p>最近想要白嫖一个Microsoft 365授权,用着别人的服务总是不放心,决定自己开发私家车🤔</p><span id="more"></span><p>微软一直都向开发者提供免费的Microsoft 365(即原Office 365)全家桶,申请开发者计划可以获得三个月的E5订阅。</p><p>而E5订阅内包含了25个Microsoft 365的授权许可,同时附带5T的OneDrive不限速存储。</p><h1 id="演示环境"><a class="markdownIt-Anchor" href="#演示环境"></a> 演示环境</h1><ul><li>Windows 10 Education 10.0.19044.1586</li><li>Microsoft Edge Version 101.0.1210.32(64-bit)</li><li>科学的上网环境</li></ul><h1 id="申请账号"><a class="markdownIt-Anchor" href="#申请账号"></a> 申请账号</h1><p>现在网上很多教程的申请链接都失效了,原因是著名的“微软改名部”将<code>Office 365</code>改名为了<code>Microsoft 365</code>,同时相关的网址也被替换,最新的申请链接:<a href="https://developer.microsoft.com/zh-cn/microsoft-365/dev-program">https://developer.microsoft.com/zh-cn/microsoft-365/dev-program</a><br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/Y4FM48HM.png" alt="1651574487271.png" /></p><p>打开链接后,点击“立即加入”,登陆你的Microsoft账户,这里不进行赘述(没有?自己去创建一个)</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/TmupUSiQ.png" alt="1651574705474.png" /></p><p>登陆账号后,会跳转至填写页面,按照自己的情况填写,公司可随意填写。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/TmupUSiQ.png" alt="1651574705474.png" /></p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/aAkdlqGO.png" alt="1651574785874.png" /></p><h1 id="配置沙盒"><a class="markdownIt-Anchor" href="#配置沙盒"></a> 配置沙盒</h1><p>上一步填写完成后,会跳转到这样的页面:<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/1NOxtllw.png" alt="1651574817315.png" /></p><p>如果你使用的语言是简体中文,那么你现在打开的网址为:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://developer.microsoft.com/zh-cn/microsoft-365/profile</span><br></pre></td></tr></table></figure><p>现在,将URL中的<code>zh-cn</code>替换为<code>en-us</code>,切换至英文页面。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://developer.microsoft.com/en-us/microsoft-365/profile</span><br></pre></td></tr></table></figure><div class="note warning flat"><p>如果不切换语言,在验证手机号的步骤会提示“无法连接到reCaptcha服务”。</p></div><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/pctTe4jI.png" alt="1651575084577.png" /></p><p>如果你想要自定义域,选择第二个,不想麻烦可以选第一个,博主选择的是第二个。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/mVSLhdVZ.png" alt="1651575142623.png" /></p><p>这一步需要自己填写信息,务必记住账号和密码。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/ULSO1AAT.png" alt="1651575317986.png" /></p><p>验证手机号,可以使用中国大陆手机号。</p><p>设置完成后,将页面切换回简体中文吧(</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://developer.microsoft.com/zh-cn/microsoft-365/profile</span><br></pre></td></tr></table></figure><p>如果你只是自己用,到这步就完成了,你可以直接在Microsoft 365系列软件中登录并使用了。</p><div class="note info flat"><p>登陆时,请使用你在配置时的<code>xxx@xxx.onmicrosoft.com</code>的账户!</p></div><h1 id="账户分配"><a class="markdownIt-Anchor" href="#账户分配"></a> 账户分配</h1><p>如果你要将许可分配给朋友、家人 <s>和淘宝用户</s>,可以在这里进行操作:<a href="https://admin.microsoft.com/Adminportal/Home#/homepage">https://admin.microsoft.com/Adminportal/Home#/homepage</a></p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/W977Mf4M.png" alt="1651575743682.png" /><br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/UYeKHyrH.png" alt="1651575814432.png" /></p><h1 id="5t5t设置组织onedrive容量"><a class="markdownIt-Anchor" href="#5t5t设置组织onedrive容量"></a> 5T!5T!设置组织OneDrive容量</h1><p>打开 <a href="https://admin.onedrive.com/?v=StorageSettings">https://admin.onedrive.com/?v=StorageSettings</a> ,在侧栏“设置”中找到存储限制:<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/KwuAf2jS.png" alt="1651576083273.png" /></p><p>如果要设置单个用户容量,可以在 <a href="https://admin.microsoft.com/Adminportal/Home#/homepage">https://admin.microsoft.com/Adminportal/Home#/homepage</a> 中的账户管理进行分配。</p><div class="note info flat"><p>分配前,请使用被分配账户登陆一次OneDrive。</p></div><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/05/03/tTyKMtix.png" alt="1651576182304.png" /></p><h1 id="续期"><a class="markdownIt-Anchor" href="#续期"></a> 续期?</h1><p>咕咕咕,等下一篇文章吧~</p>]]></content>
<summary type="html">
<p>最近想要白嫖一个Microsoft 365授权,用着别人的服务总是不放心,决定自己开发私家车🤔</p>
</summary>
<category term="推荐" scheme="https://blog.pai233.top/categories/%E6%8E%A8%E8%8D%90/"/>
<category term="微软" scheme="https://blog.pai233.top/categories/%E6%8E%A8%E8%8D%90/%E5%BE%AE%E8%BD%AF/"/>
<category term="免费" scheme="https://blog.pai233.top/tags/%E5%85%8D%E8%B4%B9/"/>
<category term="白嫖" scheme="https://blog.pai233.top/tags/%E7%99%BD%E5%AB%96/"/>
<category term="Microsoft" scheme="https://blog.pai233.top/tags/Microsoft/"/>
<category term="Office" scheme="https://blog.pai233.top/tags/Office/"/>
</entry>
<entry>
<title>【Butterfly主题】弹出欢迎弹窗</title>
<link href="https://blog.pai233.top/20220409/butterfly-popup-welcome-window/"/>
<id>https://blog.pai233.top/20220409/butterfly-popup-welcome-window/</id>
<published>2022-04-09T09:26:19.000Z</published>
<updated>2022-04-09T12:26:54.193Z</updated>
<content type="html"><![CDATA[<p>写这篇博客的缘故是因为看到cnblogs上的<code>live2d</code>模型可以自动欢迎,但是自己又不会魔改<code>Hexo</code>的<code>live2d</code>,就想到了以弹窗的方式来欢迎。</p><span id="more"></span><div class="note info flat"><p>本文基于Hexo+Butterfly主题,其他主题的修改可能会有所不同,请自行了解文件对应位置。</p></div><div class="note info flat"><p>Butterfly主题已默认开启Pjax。</p></div><div class="note info flat"><p>此版基于博主之前所发布的关于NexT主题的修改,同时修复了部分问题。</p></div><p>最终的实现效果如下:<br /><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2021/09/12/wNWvtQrYG5MaE6V.png" alt="image.png" /></p><h1 id="选择一个好看的弹窗"><a class="markdownIt-Anchor" href="#选择一个好看的弹窗"></a> 选择一个好看的弹窗</h1><p>首先,你既然要弹窗,就要好看,而不是<code>JavaScript</code>里的<code>alert()</code>函数,在洛谷上做题的时候,看到“提交成功”的弹窗还比较好看,就查找了一下来源(<a href="https://sweetalert.js.org/">详情</a>),然后选定了这个,感觉还不错。</p><p><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2021/09/12/RVUlJSnHkbPrcL2.png" alt="image.png" /></p><h1 id="配置"><a class="markdownIt-Anchor" href="#配置"></a> 配置</h1><div class="note info flat"><p>作者使用了Git进行主题安装。如果您使用的是npm安装,请将以下目录中<code>\themes\butterfly\source\</code>替换为<code>\source\</code>。</p></div><h2 id="获取javascript和css文件"><a class="markdownIt-Anchor" href="#获取javascript和css文件"></a> 获取JavaScript和CSS文件</h2><p>我们需要将<code>sweetalert.js</code>和<code>sweetalert.css</code>放到自己博客下,防止CDN炸裂导致的错误。</p><h3 id="新建javascript文件"><a class="markdownIt-Anchor" href="#新建javascript文件"></a> 新建JavaScript文件</h3><p>在博客根目录往下找到<code>\themes\butterfly\source\js</code>文件夹,新建<code>sweetalert.js</code>,文件内容<a href="/js/sweetalert.js">请看这里</a>,觉得复制麻烦的可以直接按<code>Crtl+S</code>进行保存。</p><h3 id="新建css文件"><a class="markdownIt-Anchor" href="#新建css文件"></a> 新建CSS文件</h3><p>在博客根目录往下找到<code>\themes\butterfly\source\css</code>文件夹,新建<code>sweetalert.css</code>,文件内容<a href="/css/sweetalert.css">请看这里</a>。</p><p>保存完后的结构如下:<br /><img src= "/img/loading.gif" data-lazy-src="https://s1.328888.xyz/2022/04/09/XOgx4.png" alt="" /></p><h2 id="引入到主题中"><a class="markdownIt-Anchor" href="#引入到主题中"></a> 引入到主题中</h2><p>打开主题配置文件,在<code>inject</code>配置项的<code>head</code>中进行注入:</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line"> <span class="attr">head:</span></span><br><span class="line"> <span class="comment"># - <link rel="stylesheet" href="/xxx.css"></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><script</span> <span class="string">src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><script</span> <span class="string">type="text/javascript"</span> <span class="string">src</span> <span class="string">="/js/welcome.js"</span> <span class="string">></script></span> </span><br><span class="line"> <span class="bullet">-</span> <span class="string"><script</span> <span class="string">src="/js/sweetalert.js"></script></span></span><br><span class="line"> <span class="bullet">-</span> <span class="string"><link</span> <span class="string">rel="stylesheet"</span> <span class="string">href="/css/sweetalert.css"></span></span><br><span class="line"> <span class="attr">bottom:</span></span><br><span class="line"> <span class="comment"># - <script src="xxxx"></script></span></span><br></pre></td></tr></table></figure><p>这样就完成了引入。</p><h2 id="自动弹窗"><a class="markdownIt-Anchor" href="#自动弹窗"></a> 自动弹窗</h2><p>在博客根目录往下找到<code>\themes\butterfly\source\js</code>文件夹,新建<code>welcome.js</code>:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">welcome</span>(<span class="params"></span>){</span><br><span class="line"> <span class="keyword">let</span> welcome_text = <span class="string">'欢迎光顾本蒟蒻的小窝~'</span></span><br><span class="line"> <span class="keyword">if</span>(<span class="variable language_">document</span>.<span class="property">referrer</span>!==<span class="string">''</span>){</span><br><span class="line"> <span class="keyword">let</span> referrer=<span class="variable language_">document</span>.<span class="property">referrer</span>.<span class="title function_">split</span>(<span class="string">"/"</span>)[<span class="number">2</span>];</span><br><span class="line"> welcome_text=<span class="string">"欢迎你,来自"</span>+referrer.<span class="title function_">toUpperCase</span>()+<span class="string">"的用户!"</span>;</span><br><span class="line"> <span class="keyword">if</span>(referrer.<span class="title function_">toUpperCase</span>()==<span class="variable language_">document</span>.<span class="property">domain</span>.<span class="title function_">toUpperCase</span>())<span class="keyword">return</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="title function_">swal</span>({</span><br><span class="line"> <span class="attr">title</span>: <span class="string">" 欢迎!"</span>,</span><br><span class="line"> <span class="attr">text</span>: welcome_text+<span class="string">'\n打开页面下方音乐以获得更佳体验!'</span>,</span><br><span class="line"> <span class="attr">imageUrl</span>: <span class="string">"/img/avatar.jpg"</span>,</span><br><span class="line"> <span class="attr">timer</span>: <span class="number">3000</span>,</span><br><span class="line"> <span class="attr">showConfirmButton</span>: <span class="literal">false</span></span><br><span class="line"> });</span><br><span class="line">}</span><br><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">ready</span>(<span class="function">()=></span>{</span><br><span class="line"> <span class="title function_">welcome</span>()</span><br><span class="line">})</span><br></pre></td></tr></table></figure><p>这样,就大功告成了。</p>]]></content>
<summary type="html">
<p>写这篇博客的缘故是因为看到cnblogs上的<code>live2d</code>模型可以自动欢迎,但是自己又不会魔改<code>Hexo</code>的<code>live2d</code>,就想到了以弹窗的方式来欢迎。</p>
</summary>
<category term="博客美化" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
<category term="功能" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/%E5%8A%9F%E8%83%BD/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="美化" scheme="https://blog.pai233.top/tags/%E7%BE%8E%E5%8C%96/"/>
<category term="Hexo" scheme="https://blog.pai233.top/tags/Hexo/"/>
<category term="Sweetalert" scheme="https://blog.pai233.top/tags/Sweetalert/"/>
</entry>
<entry>
<title>【搭建Hexo博客(二)】选择主题</title>
<link href="https://blog.pai233.top/20220327/some-good-themes-for-hexo/"/>
<id>https://blog.pai233.top/20220327/some-good-themes-for-hexo/</id>
<published>2022-03-27T09:08:44.000Z</published>
<updated>2022-03-27T13:09:13.058Z</updated>
<content type="html"><![CDATA[<p>在初始化完Hexo后,我们就应该挑选一个心仪的主题了。</p><h1 id="博主推荐"><a class="markdownIt-Anchor" href="#博主推荐"></a> 👍博主推荐</h1><div class="note info flat"><p>以下主题仅为博主个人意见,您也可选择其他主题。</p></div><h2 id="butterfly"><a class="markdownIt-Anchor" href="#butterfly"></a> Butterfly</h2><p>Butterfly是一款卡片式UI设计的Hexo主题,作者来自中国香港。本站使用的即为Butterfly主题,支持浅色/深色主题调节,功能丰富,喜欢花里胡哨的可以用这款。<br /><img src= "/img/loading.gif" data-lazy-src="https://camo.githubusercontent.com/cc33313189cc45d475faff9b2c4a9c5d5e4289e48ee333704ba7f105c9d04e95/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f6a65727279633132372f43444e406d322f696d672f7468656d652d627574746572666c792d726561646d652e706e67" alt="" /></p><p>官方演示地址:<a href="https://butterfly.js.org/">https://butterfly.js.org/</a></p><h2 id="next"><a class="markdownIt-Anchor" href="#next"></a> NexT</h2><p>博主曾经使用过NexT主题,NexT中还有四个主题,分别为Muse、Mist、Genimi、Pisces。博主认为Genimi和Mist比较好看,分明一点。<br /><img src= "/img/loading.gif" data-lazy-src="https://user-images.githubusercontent.com/16272760/99784261-872d3200-2b56-11eb-807c-869042d1f6e8.png" alt="" /></p><p>官方演示地址:</p><ul><li>Muse:<a href="https://theme-next.js.org/muse/">https://theme-next.js.org/muse/</a></li><li>Mist:<a href="https://theme-next.js.org/mist/">https://theme-next.js.org/mist/</a></li><li>Genimi:<a href="https://theme-next.js.org/">https://theme-next.js.org/</a></li><li>Pisces:<a href="https://theme-next.js.org/pisces/">https://theme-next.js.org/pisces/</a></li></ul><h2 id="fluid"><a class="markdownIt-Anchor" href="#fluid"></a> Fluid</h2><p>一款Material Design风格的主题,平面化的福音。<br /><img src= "/img/loading.gif" data-lazy-src="https://camo.githubusercontent.com/48b250de82787ee8090df0e3a3088e10d09a12b58fe1df55045f2476aca20978/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f666c7569642d6465762f737461746963406d61737465722f6865786f2d7468656d652d666c7569642f73637265656e73686f74732f696e6465782e706e67" alt="" /></p><p>官方演示地址:<a href="https://hexo.fluid-dev.com/">https://hexo.fluid-dev.com/</a></p><h2 id="icarus"><a class="markdownIt-Anchor" href="#icarus"></a> Icarus</h2><p>三栏卡片式设计,但是修改麻烦,博主本来想用这个主题的,但是调配置调吐了,希望作者可以优化一下吧……<br /><img src= "/img/loading.gif" data-lazy-src="https://camo.githubusercontent.com/fd83d8c9f8b8dbe85686812e2e186dceec728bbabad2d331aa44e0bfeee8628c/68747470733a2f2f70706f66666963652e6769746875622e696f2f6865786f2d7468656d652d6963617275732f67616c6c6572792f707265766965772e706e673f31" alt="" /></p><p>官方演示地址:<a href="https://ppoffice.github.io/hexo-theme-icarus/">https://ppoffice.github.io/hexo-theme-icarus/</a></p><h2 id="nexmoe"><a class="markdownIt-Anchor" href="#nexmoe"></a> Nexmoe</h2><p>Uh…这个主题挺粉嫩的,可以魔改下配色🙄<br /><img src= "/img/loading.gif" data-lazy-src="https://user-images.githubusercontent.com/16796652/134768469-52d2426b-5c7c-4a46-8f0e-064361044d88.png" alt="" /></p><p>官方演示地址:<a href="https://nexmoe.com/">https://nexmoe.com/</a></p><h1 id="主题安装"><a class="markdownIt-Anchor" href="#主题安装"></a> 主题安装</h1><p>主题安装从Hexo 5.0.0版本以上支持两种方式:<code>git</code>和<code>npm</code>安装。</p><h2 id="npm安装"><a class="markdownIt-Anchor" href="#npm安装"></a> npm安装</h2><p>优点:安装快、更新快</p><p>缺点:魔改不方便</p><p>安装方式:<code>npm i [Theme Name] --save</code></p><h2 id="git安装"><a class="markdownIt-Anchor" href="#git安装"></a> git安装</h2><p>优点:方便魔改,目录较为清晰</p><p>缺点:GitHub在国内速度不稳定,<code>clone</code>易受网络波动</p><p>安装方式:<code>git clone [Theme Repo] themes/[Theme Name]</code></p><h1 id="应用主题"><a class="markdownIt-Anchor" href="#应用主题"></a> 应用主题</h1><p>命令:<code>hexo config theme [Theme Name]</code></p>]]></content>
<summary type="html">
<p>在初始化完Hexo后,我们就应该挑选一个心仪的主题了。</p>
<h1 id="博主推荐"><a class="markdownIt-Anchor" href="#博主推荐"></a> 👍博主推荐</h1>
<div class="note info flat"><p>以
</summary>
<category term="随笔" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/"/>
<category term="Hexo搭建" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/Hexo%E6%90%AD%E5%BB%BA/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="Hexo" scheme="https://blog.pai233.top/tags/Hexo/"/>
<category term="Node.js" scheme="https://blog.pai233.top/tags/Node-js/"/>
<category term="Git" scheme="https://blog.pai233.top/tags/Git/"/>
<category term="主题" scheme="https://blog.pai233.top/tags/%E4%B8%BB%E9%A2%98/"/>
</entry>
<entry>
<title>【搭建Hexo博客(一)】初始化框架</title>
<link href="https://blog.pai233.top/20220312/init-your-hexo-blog/"/>
<id>https://blog.pai233.top/20220312/init-your-hexo-blog/</id>
<published>2022-03-12T07:42:01.000Z</published>
<updated>2022-03-13T09:25:34.267Z</updated>
<content type="html"><![CDATA[<p>前几天更换了博客主题,现在趁这个机会,来写个教程。</p><span id="more"></span><h1 id="博客是什么"><a class="markdownIt-Anchor" href="#博客是什么"></a> 博客是什么?</h1><div class="note info flat"><p>以下内容摘自Wikipedia。</p></div><blockquote><p>博客(英语:Blog)是一种在线日记型式的个人网站,借由张帖子章、图片或视频来记录生活、抒发情感或分享信息。博客上的文章通常根据张贴时间,以倒序方式由新到旧排列。<br />许多博客作者专注评论特定的课题或新闻,其他则作为个人日记。一个典型的博客结合了文字、图像、其他博客或网站的超链接、及其它与主题相关的媒体。能够让读者以互动的方式留下意见,是许多博客的重要要素。大部分的博客内容以文字为主,也有一些博客专注艺术、摄影、视频、音乐、播客等各种主题。博客是社交媒体网络的一部分。</p></blockquote><h1 id="写博客有什么好处"><a class="markdownIt-Anchor" href="#写博客有什么好处"></a> 写博客有什么好处?</h1><div class="note info flat"><p>以下内容摘自Wikipedia。</p></div><h2 id="纪录个人生活点滴"><a class="markdownIt-Anchor" href="#纪录个人生活点滴"></a> 纪录个人生活点滴</h2><p>如同日记一般,事实上,博客(blog)原本的字义(weblog)就是网络日志(web log),可将自己每日生活中发生的事情记录下来,并且跟朋友或网友们分享.</p><h2 id="抒发与分享个人情绪"><a class="markdownIt-Anchor" href="#抒发与分享个人情绪"></a> 抒发与分享个人情绪</h2><p>博客常用来抒发个人情绪,把生活中的不满、郁闷或愤怒宣泄到博客上,或是与网络上的网友们分享个人开心的心情。</p><h2 id="分享与交流知识-技术"><a class="markdownIt-Anchor" href="#分享与交流知识-技术"></a> 分享与交流知识、技术</h2><p>如果有专长、兴趣的人,可以借由撰写博客来分享自己的知识与技术,并和网络上的网友交流讨论。</p><h2 id="认识同好-结交朋友"><a class="markdownIt-Anchor" href="#认识同好-结交朋友"></a> 认识同好、结交朋友</h2><p>借由博客的社群性质可以吸引兴趣或性格相合的网友来观看,并且借此认识结交新朋友。</p><h2 id="分享创作文学-绘图作品"><a class="markdownIt-Anchor" href="#分享创作文学-绘图作品"></a> 分享创作文学、绘图作品</h2><p>借由博客可分享自己的文学创作或图像作品,并供网友们观看取用。创作者获得与阅听者在网络上沟通的机会,进而扩大参与和影响。</p><h2 id="医学价值"><a class="markdownIt-Anchor" href="#医学价值"></a> 医学价值</h2><p>科学家早已知道写下自己的个人经验是具有医学价值的。博客提供了一个方便纪录个人经验的管道。研究显示它可帮助记忆和睡眠、增强免疫细胞的活动、减少艾滋病患者病毒量,甚至可以加速手术后的复原。</p><h1 id="hexo简介"><a class="markdownIt-Anchor" href="#hexo简介"></a> Hexo简介</h1><p>Hexo是一款快速、简洁且高效的博客框架,渲染速度快,支持Markdown,且支持各类型的Extensions,十分容易上手。</p><p><img src= "/img/loading.gif" data-lazy-src="https://xg3.jiashumao.net/2022/03/12/y11Pi0gq.png" alt="1647071265245.png" /></p><h1 id="初始化"><a class="markdownIt-Anchor" href="#初始化"></a> 初始化</h1><p>在使用Hexo前,你需要先安装好Git和Node.js,本处不再赘述。在安装完成后,你只需要运行以下的Bash命令(在操作前,请先<code>cd</code>到您的目录下,以免不必要的麻烦):</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-cli -g</span><br><span class="line">hexo init blog</span><br><span class="line"><span class="built_in">cd</span> blog</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>Hexo会自动将框架Clone至<code>blog</code>文件夹,我们只需要等待其完成。</p><p><img src= "/img/loading.gif" data-lazy-src="https://xg3.jiashumao.net/2022/03/12/pEa5RGGU.png" alt="1647071608112.png" /></p><p>在文件夹下,我们只需要运行<code>hexo s</code>就可以在本地一览博客啦!</p><p><img src= "/img/loading.gif" data-lazy-src="https://xg3.jiashumao.net/2022/03/12/LQga0xlN.png" alt="1647071680840.png" /></p><p><img src= "/img/loading.gif" data-lazy-src="https://xg3.jiashumao.net/2022/03/12/okVHTMO9.png" alt="1647071700051.png" /></p><p>可以看到,Hexo已经自动创建了一篇叫<code>Hello World</code>的默认文章,这说明我们的博客框架已经初始化完成了!不过这时候的博客还很单调,需要我们后续的修改,这段内容将会在未来的教程中展开叙述。</p><h1 id="新建文章页面"><a class="markdownIt-Anchor" href="#新建文章页面"></a> 新建文章/页面</h1><p>如果你想新建一篇文章,可以运行以下的Bash:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new post <span class="string">"xxx"</span></span><br></pre></td></tr></table></figure><p><img src= "/img/loading.gif" data-lazy-src="https://xg3.jiashumao.net/2022/03/12/jcRzy0YG.png" alt="1647071902142.png" /></p><p>Hexo就会自动创建一篇叫<code>xxx</code>的文章。</p><p>但如果我想创建的不是文章,是一个单独的页面呢?</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo new page <span class="string">"xxx"</span></span><br></pre></td></tr></table></figure><p>这样就能创建一个叫<code>xxx</code>的页面。</p><p>限于篇幅与博主的时间原因,这篇教程只能拆开来一点点讲,还请关注qaq</p>]]></content>
<summary type="html">
<p>前几天更换了博客主题,现在趁这个机会,来写个教程。</p>
</summary>
<category term="随笔" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/"/>
<category term="Hexo搭建" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/Hexo%E6%90%AD%E5%BB%BA/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="Hexo" scheme="https://blog.pai233.top/tags/Hexo/"/>
<category term="Node.js" scheme="https://blog.pai233.top/tags/Node-js/"/>
<category term="Git" scheme="https://blog.pai233.top/tags/Git/"/>
</entry>
<entry>
<title>快速将Butterfly主题的CDN从jsDelivr切换至自建反向代理源</title>
<link href="https://blog.pai233.top/20220227/change-the-cdn-of-butterfly-from-jsdelivr-to-your-proxy-server/"/>
<id>https://blog.pai233.top/20220227/change-the-cdn-of-butterfly-from-jsdelivr-to-your-proxy-server/</id>
<published>2022-02-27T08:48:33.000Z</published>
<updated>2022-02-27T09:32:24.606Z</updated>
<content type="html"><![CDATA[<p>最新版的Butterfly取消了原来设置在<code>_config.yml</code>里的默认CDN,导致不能快速替换掉现在极不稳定的jsDelivr CDN。本文的默认Butterfly版本为<code>4.1.0</code>。</p><h1 id="配置"><a class="markdownIt-Anchor" href="#配置"></a> 配置</h1><p>现在的默认CDN地址被放在了主题的<code>/scripts/events/config.js</code>中:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Butterfly</span></span><br><span class="line"><span class="comment"> * 1. Merge CDN</span></span><br><span class="line"><span class="comment"> * 2. Capitalize the first letter of comment name</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">'use strict'</span></span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">filter</span>.<span class="title function_">register</span>(<span class="string">'before_generate'</span>, <span class="function">() =></span> {</span><br><span class="line"> <span class="keyword">const</span> themeConfig = hexo.<span class="property">theme</span>.<span class="property">config</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Merge CDN</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">const</span> defaultCDN = {</span><br><span class="line"> <span class="attr">main_css</span>: <span class="string">'/css/index.css'</span>,</span><br><span class="line"> <span class="attr">main</span>: <span class="string">'/js/main.js'</span>,</span><br><span class="line"> <span class="attr">utils</span>: <span class="string">'/js/utils.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// pjax</span></span><br><span class="line"> <span class="attr">pjax</span>: <span class="string">'https://cdn.jsdelivr.net/npm/pjax/pjax.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// comments</span></span><br><span class="line"> <span class="attr">gitalk</span>: <span class="string">'https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js'</span>,</span><br><span class="line"> <span class="attr">gitalk_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.css'</span>,</span><br><span class="line"> <span class="attr">blueimp_md5</span>: <span class="string">'https://cdn.jsdelivr.net/npm/blueimp-md5/js/md5.min.js'</span>,</span><br><span class="line"> <span class="attr">valine</span>: <span class="string">'https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js'</span>,</span><br><span class="line"> <span class="attr">disqusjs</span>: <span class="string">'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js'</span>,</span><br><span class="line"> <span class="attr">disqusjs_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqusjs.css'</span>,</span><br><span class="line"> <span class="attr">utterances</span>: <span class="string">'https://utteranc.es/client.js'</span>,</span><br><span class="line"> <span class="attr">twikoo</span>: <span class="string">'https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js'</span>,</span><br><span class="line"> <span class="attr">waline</span>: <span class="string">'https://cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js'</span>,</span><br><span class="line"> <span class="attr">giscus</span>: <span class="string">'https://giscus.app/client.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// share</span></span><br><span class="line"> <span class="attr">addtoany</span>: <span class="string">'https://static.addtoany.com/menu/page.js'</span>,</span><br><span class="line"> <span class="attr">sharejs</span>: <span class="string">'https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js'</span>,</span><br><span class="line"> <span class="attr">sharejs_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// search</span></span><br><span class="line"> <span class="attr">local_search</span>: <span class="string">'/js/search/local-search.js'</span>,</span><br><span class="line"> <span class="attr">algolia_js</span>: <span class="string">'/js/search/algolia.js'</span>,</span><br><span class="line"> <span class="attr">algolia_search_v4</span>: <span class="string">'https://cdn.jsdelivr.net/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js'</span>,</span><br><span class="line"> <span class="attr">instantsearch_v4</span>: <span class="string">'https://cdn.jsdelivr.net/npm/instantsearch.js@4/dist/instantsearch.production.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// math</span></span><br><span class="line"> <span class="attr">mathjax</span>: <span class="string">'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'</span>,</span><br><span class="line"> <span class="attr">katex</span>: <span class="string">'https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css'</span>,</span><br><span class="line"> <span class="attr">katex_copytex</span>: <span class="string">'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.min.js'</span>,</span><br><span class="line"> <span class="attr">katex_copytex_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.css'</span>,</span><br><span class="line"> <span class="attr">mermaid</span>: <span class="string">'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// count</span></span><br><span class="line"> <span class="attr">busuanzi</span>: <span class="string">'//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// background effect</span></span><br><span class="line"> <span class="attr">canvas_ribbon</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js'</span>,</span><br><span class="line"> <span class="attr">canvas_fluttering_ribbon</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js'</span>,</span><br><span class="line"> <span class="attr">canvas_nest</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-nest.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="attr">lazyload</span>: <span class="string">'https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js'</span>,</span><br><span class="line"> <span class="attr">instantpage</span>: <span class="string">'https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js'</span>,</span><br><span class="line"> <span class="attr">typed</span>: <span class="string">'https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js'</span>,</span><br><span class="line"> <span class="attr">pangu</span>: <span class="string">'https://cdn.jsdelivr.net/npm/pangu/dist/browser/pangu.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// photo</span></span><br><span class="line"> <span class="attr">fancybox_css_v4</span>: <span class="string">'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css'</span>,</span><br><span class="line"> <span class="attr">fancybox_v4</span>: <span class="string">'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js'</span>,</span><br><span class="line"> <span class="attr">medium_zoom</span>: <span class="string">'https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// snackbar</span></span><br><span class="line"> <span class="attr">snackbar_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css'</span>,</span><br><span class="line"> <span class="attr">snackbar</span>: <span class="string">'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// effect</span></span><br><span class="line"> <span class="attr">activate_power_mode</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js'</span>,</span><br><span class="line"> <span class="attr">fireworks</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js'</span>,</span><br><span class="line"> <span class="attr">click_heart</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-heart.min.js'</span>,</span><br><span class="line"> <span class="title class_">ClickShowText</span>: <span class="string">'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-show-text.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// fontawesome</span></span><br><span class="line"> <span class="attr">fontawesomeV6</span>: <span class="string">'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Conversion between Traditional and Simplified Chinese</span></span><br><span class="line"> <span class="attr">translate</span>: <span class="string">'/js/tw_cn.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// flickr-justified-gallery</span></span><br><span class="line"> <span class="attr">flickr_justified_gallery_js</span>: <span class="string">'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.js'</span>,</span><br><span class="line"> <span class="attr">flickr_justified_gallery_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// aplayer</span></span><br><span class="line"> <span class="attr">aplayer_css</span>: <span class="string">'https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css'</span>,</span><br><span class="line"> <span class="attr">aplayer_js</span>: <span class="string">'https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js'</span>,</span><br><span class="line"> <span class="attr">meting_js</span>: <span class="string">'https://cdn.jsdelivr.net/gh/metowolf/MetingJS@1.2/dist/Meting.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Prism.js</span></span><br><span class="line"> <span class="attr">prismjs_js</span>: <span class="string">'https://cdn.jsdelivr.net/npm/prismjs/prism.min.js'</span>,</span><br><span class="line"> <span class="attr">prismjs_lineNumber_js</span>: <span class="string">'https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.min.js'</span>,</span><br><span class="line"> <span class="attr">prismjs_autoloader</span>: <span class="string">'https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js'</span></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// delete null value</span></span><br><span class="line"> <span class="keyword">const</span> <span class="title function_">deleteNullValue</span> = obj => {</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">const</span> i <span class="keyword">in</span> obj) {</span><br><span class="line"> obj[i] === <span class="literal">null</span> && <span class="keyword">delete</span> obj[i]</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> obj</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> themeConfig.<span class="property">CDN</span> = <span class="title class_">Object</span>.<span class="title function_">assign</span>(defaultCDN, <span class="title function_">deleteNullValue</span>(themeConfig.<span class="property">CDN</span>))</span><br><span class="line"></span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Capitalize the first letter of comment name</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">let</span> { use } = themeConfig.<span class="property">comments</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (!use) <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (<span class="keyword">typeof</span> use === <span class="string">'string'</span>) {</span><br><span class="line"> use = use.<span class="title function_">split</span>(<span class="string">','</span>)</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">const</span> newArray = use.<span class="title function_">map</span>(<span class="function"><span class="params">item</span> =></span> item.<span class="title function_">toLowerCase</span>().<span class="title function_">replace</span>(<span class="regexp">/\b[a-z]/g</span>, <span class="function"><span class="params">s</span> =></span> s.<span class="title function_">toUpperCase</span>()))</span><br><span class="line"></span><br><span class="line"> themeConfig.<span class="property">comments</span>.<span class="property">use</span> = newArray</span><br><span class="line">})</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>所以只要快速替换掉这里的CDN,就可以切换到我们自建的CDN上。</p><h1 id="成果"><a class="markdownIt-Anchor" href="#成果"></a> 成果</h1><p>将<code>cdn.jsdelivr.net</code>全部替换为自己的反代源后,成果就诞生了:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Butterfly</span></span><br><span class="line"><span class="comment"> * 1. Merge CDN</span></span><br><span class="line"><span class="comment"> * 2. Capitalize the first letter of comment name</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">'use strict'</span></span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">filter</span>.<span class="title function_">register</span>(<span class="string">'before_generate'</span>, <span class="function">() =></span> {</span><br><span class="line"> <span class="keyword">const</span> themeConfig = hexo.<span class="property">theme</span>.<span class="property">config</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Merge CDN</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">const</span> defaultCDN = {</span><br><span class="line"> <span class="attr">main_css</span>: <span class="string">'/css/index.css'</span>,</span><br><span class="line"> <span class="attr">main</span>: <span class="string">'/js/main.js'</span>,</span><br><span class="line"> <span class="attr">utils</span>: <span class="string">'/js/utils.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// pjax</span></span><br><span class="line"> <span class="attr">pjax</span>: <span class="string">'https://jsdelivr.pai233.top/npm/pjax/pjax.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// comments</span></span><br><span class="line"> <span class="attr">gitalk</span>: <span class="string">'https://jsdelivr.pai233.top/npm/gitalk@latest/dist/gitalk.min.js'</span>,</span><br><span class="line"> <span class="attr">gitalk_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/gitalk/dist/gitalk.min.css'</span>,</span><br><span class="line"> <span class="attr">blueimp_md5</span>: <span class="string">'https://jsdelivr.pai233.top/npm/blueimp-md5/js/md5.min.js'</span>,</span><br><span class="line"> <span class="attr">valine</span>: <span class="string">'https://jsdelivr.pai233.top/npm/valine/dist/Valine.min.js'</span>,</span><br><span class="line"> <span class="attr">disqusjs</span>: <span class="string">'https://jsdelivr.pai233.top/npm/disqusjs@1/dist/disqus.js'</span>,</span><br><span class="line"> <span class="attr">disqusjs_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/disqusjs@1/dist/disqusjs.css'</span>,</span><br><span class="line"> <span class="attr">utterances</span>: <span class="string">'https://utteranc.es/client.js'</span>,</span><br><span class="line"> <span class="attr">twikoo</span>: <span class="string">'https://jsdelivr.pai233.top/npm/twikoo/dist/twikoo.all.min.js'</span>,</span><br><span class="line"> <span class="attr">waline</span>: <span class="string">'https://jsdelivr.pai233.top/npm/@waline/client/dist/Waline.min.js'</span>,</span><br><span class="line"> <span class="attr">giscus</span>: <span class="string">'https://giscus.app/client.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// share</span></span><br><span class="line"> <span class="attr">addtoany</span>: <span class="string">'https://static.addtoany.com/menu/page.js'</span>,</span><br><span class="line"> <span class="attr">sharejs</span>: <span class="string">'https://jsdelivr.pai233.top/npm/social-share.js/dist/js/social-share.min.js'</span>,</span><br><span class="line"> <span class="attr">sharejs_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/social-share.js/dist/css/share.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// search</span></span><br><span class="line"> <span class="attr">local_search</span>: <span class="string">'/js/search/local-search.js'</span>,</span><br><span class="line"> <span class="attr">algolia_js</span>: <span class="string">'/js/search/algolia.js'</span>,</span><br><span class="line"> <span class="attr">algolia_search_v4</span>: <span class="string">'https://jsdelivr.pai233.top/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js'</span>,</span><br><span class="line"> <span class="attr">instantsearch_v4</span>: <span class="string">'https://jsdelivr.pai233.top/npm/instantsearch.js@4/dist/instantsearch.production.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// math</span></span><br><span class="line"> <span class="attr">mathjax</span>: <span class="string">'https://jsdelivr.pai233.top/npm/mathjax@3/es5/tex-mml-chtml.js'</span>,</span><br><span class="line"> <span class="attr">katex</span>: <span class="string">'https://jsdelivr.pai233.top/npm/katex@latest/dist/katex.min.css'</span>,</span><br><span class="line"> <span class="attr">katex_copytex</span>: <span class="string">'https://jsdelivr.pai233.top/npm/katex@latest/dist/contrib/copy-tex.min.js'</span>,</span><br><span class="line"> <span class="attr">katex_copytex_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/katex@latest/dist/contrib/copy-tex.css'</span>,</span><br><span class="line"> <span class="attr">mermaid</span>: <span class="string">'https://jsdelivr.pai233.top/npm/mermaid/dist/mermaid.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// count</span></span><br><span class="line"> <span class="attr">busuanzi</span>: <span class="string">'//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// background effect</span></span><br><span class="line"> <span class="attr">canvas_ribbon</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js'</span>,</span><br><span class="line"> <span class="attr">canvas_fluttering_ribbon</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js'</span>,</span><br><span class="line"> <span class="attr">canvas_nest</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/canvas-nest.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="attr">lazyload</span>: <span class="string">'https://jsdelivr.pai233.top/npm/vanilla-lazyload/dist/lazyload.iife.min.js'</span>,</span><br><span class="line"> <span class="attr">instantpage</span>: <span class="string">'https://jsdelivr.pai233.top/npm/instant.page/instantpage.min.js'</span>,</span><br><span class="line"> <span class="attr">typed</span>: <span class="string">'https://jsdelivr.pai233.top/npm/typed.js/lib/typed.min.js'</span>,</span><br><span class="line"> <span class="attr">pangu</span>: <span class="string">'https://jsdelivr.pai233.top/npm/pangu/dist/browser/pangu.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// photo</span></span><br><span class="line"> <span class="attr">fancybox_css_v4</span>: <span class="string">'https://jsdelivr.pai233.top/npm/@fancyapps/ui/dist/fancybox.css'</span>,</span><br><span class="line"> <span class="attr">fancybox_v4</span>: <span class="string">'https://jsdelivr.pai233.top/npm/@fancyapps/ui/dist/fancybox.umd.js'</span>,</span><br><span class="line"> <span class="attr">medium_zoom</span>: <span class="string">'https://jsdelivr.pai233.top/npm/medium-zoom/dist/medium-zoom.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// snackbar</span></span><br><span class="line"> <span class="attr">snackbar_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/node-snackbar/dist/snackbar.min.css'</span>,</span><br><span class="line"> <span class="attr">snackbar</span>: <span class="string">'https://jsdelivr.pai233.top/npm/node-snackbar/dist/snackbar.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// effect</span></span><br><span class="line"> <span class="attr">activate_power_mode</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js'</span>,</span><br><span class="line"> <span class="attr">fireworks</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/fireworks.min.js'</span>,</span><br><span class="line"> <span class="attr">click_heart</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/click-heart.min.js'</span>,</span><br><span class="line"> <span class="title class_">ClickShowText</span>: <span class="string">'https://jsdelivr.pai233.top/npm/butterfly-extsrc@1/dist/click-show-text.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// fontawesome</span></span><br><span class="line"> <span class="attr">fontawesomeV6</span>: <span class="string">'https://jsdelivr.pai233.top/npm/@fortawesome/fontawesome-free@6/css/all.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Conversion between Traditional and Simplified Chinese</span></span><br><span class="line"> <span class="attr">translate</span>: <span class="string">'/js/tw_cn.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// flickr-justified-gallery</span></span><br><span class="line"> <span class="attr">flickr_justified_gallery_js</span>: <span class="string">'https://jsdelivr.pai233.top/npm/flickr-justified-gallery@2/dist/fjGallery.min.js'</span>,</span><br><span class="line"> <span class="attr">flickr_justified_gallery_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/flickr-justified-gallery@2/dist/fjGallery.min.css'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// aplayer</span></span><br><span class="line"> <span class="attr">aplayer_css</span>: <span class="string">'https://jsdelivr.pai233.top/npm/aplayer/dist/APlayer.min.css'</span>,</span><br><span class="line"> <span class="attr">aplayer_js</span>: <span class="string">'https://jsdelivr.pai233.top/npm/aplayer/dist/APlayer.min.js'</span>,</span><br><span class="line"> <span class="attr">meting_js</span>: <span class="string">'https://jsdelivr.pai233.top/gh/metowolf/MetingJS@1.2/dist/Meting.min.js'</span>,</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Prism.js</span></span><br><span class="line"> <span class="attr">prismjs_js</span>: <span class="string">'https://jsdelivr.pai233.top/npm/prismjs/prism.min.js'</span>,</span><br><span class="line"> <span class="attr">prismjs_lineNumber_js</span>: <span class="string">'https://jsdelivr.pai233.top/npm/prismjs/plugins/line-numbers/prism-line-numbers.min.js'</span>,</span><br><span class="line"> <span class="attr">prismjs_autoloader</span>: <span class="string">'https://jsdelivr.pai233.top/npm/prismjs/plugins/autoloader/prism-autoloader.min.js'</span></span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// delete null value</span></span><br><span class="line"> <span class="keyword">const</span> <span class="title function_">deleteNullValue</span> = obj => {</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">const</span> i <span class="keyword">in</span> obj) {</span><br><span class="line"> obj[i] === <span class="literal">null</span> && <span class="keyword">delete</span> obj[i]</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> obj</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> themeConfig.<span class="property">CDN</span> = <span class="title class_">Object</span>.<span class="title function_">assign</span>(defaultCDN, <span class="title function_">deleteNullValue</span>(themeConfig.<span class="property">CDN</span>))</span><br><span class="line"></span><br><span class="line"> <span class="comment">/**</span></span><br><span class="line"><span class="comment"> * Capitalize the first letter of comment name</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">let</span> { use } = themeConfig.<span class="property">comments</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (!use) <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (<span class="keyword">typeof</span> use === <span class="string">'string'</span>) {</span><br><span class="line"> use = use.<span class="title function_">split</span>(<span class="string">','</span>)</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">const</span> newArray = use.<span class="title function_">map</span>(<span class="function"><span class="params">item</span> =></span> item.<span class="title function_">toLowerCase</span>().<span class="title function_">replace</span>(<span class="regexp">/\b[a-z]/g</span>, <span class="function"><span class="params">s</span> =></span> s.<span class="title function_">toUpperCase</span>()))</span><br><span class="line"></span><br><span class="line"> themeConfig.<span class="property">comments</span>.<span class="property">use</span> = newArray</span><br><span class="line">})</span><br></pre></td></tr></table></figure><p>替换完后,运行<code>hexo cl && hexo g -d</code>部署后,就成功切换到了你的反代源上。你也可以直接复制博主的成果进行使用~</p>]]></content>
<summary type="html">
<p>最新版的Butterfly取消了原来设置在<code>_config.yml</code>里的默认CDN,导致不能快速替换掉现在极不稳定的jsDelivr CDN。本文的默认Butterfly版本为<code>4.1.0</code>。</p>
<h1 id="配置"><a
</summary>
<category term="博客美化" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
<category term="CDN" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/CDN/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="Butterfly" scheme="https://blog.pai233.top/tags/Butterfly/"/>
<category term="jsDelivr" scheme="https://blog.pai233.top/tags/jsDelivr/"/>
<category term="反向代理" scheme="https://blog.pai233.top/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/"/>
</entry>
<entry>
<title>使用Cloudflare Worker为jsDelivr搭建反向代理服务</title>
<link href="https://blog.pai233.top/20220219/use-jsdelivr-by-cloudflare-worker/"/>
<id>https://blog.pai233.top/20220219/use-jsdelivr-by-cloudflare-worker/</id>
<published>2022-02-19T03:50:51.000Z</published>
<updated>2022-02-19T04:16:53.943Z</updated>
<content type="html"><![CDATA[<p>在2021年12月20日,jsDelivr在中国大陆地区的ICP备案被吊销,且随后的服务在中国大陆地区极不稳定,严重拖慢了网页的速度。</p><span id="more"></span><p>由于jsDelivr被封锁,导致了原来使用jsDelivr的CDN服务的网页速度缓慢,多数功能不正常。要解决这个问题,要么更换CDN,要么给jsDelivr套上一层反向代理。这里博主采用了Cloudflare Worker。</p><h1 id="新建worker"><a class="markdownIt-Anchor" href="#新建worker"></a> 新建Worker</h1><p>登录到Cloudflare控制台,点击侧栏的Workers,新建服务。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img.400511.net/2022/02/19/EU1fb6Ax.png" alt="1645243199883.png" /></p><p>在创建页面填入你自己的服务名称。<br /><img src= "/img/loading.gif" data-lazy-src="https://img.400511.net/2022/02/19/pKsnihcx.png" alt="1645243337089.png" /></p><p>创建后将转入资源页面。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img.400511.net/2022/02/19/LXDxjAsi.png" alt="1645243674509.png" /></p><h1 id="部署"><a class="markdownIt-Anchor" href="#部署"></a> 部署</h1><p>点击“快速编辑”,在代码框内复制以下代码:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 替换成你想镜像的站点</span></span><br><span class="line"><span class="keyword">const</span> upstream = <span class="string">'cdn.jsdelivr.net'</span></span><br><span class="line"> </span><br><span class="line"><span class="comment">// 如果那个站点有专门的移动适配站点,否则保持和上面一致</span></span><br><span class="line"><span class="keyword">const</span> upstream_mobile = <span class="string">'cdn.jsdelivr.net'</span></span><br><span class="line"> </span><br><span class="line"><span class="keyword">const</span> blocked_region = [<span class="string">'KP'</span>,<span class="string">'RU'</span>]</span><br><span class="line"> </span><br><span class="line"><span class="keyword">const</span> blocked_ip_address = [<span class="string">'0.0.0.0'</span>, <span class="string">'127.0.0.1'</span>]</span><br><span class="line"> </span><br><span class="line"><span class="keyword">const</span> replace_dict = {</span><br><span class="line"> <span class="string">'$upstream'</span>: <span class="string">'$custom_domain'</span>,</span><br><span class="line"> <span class="string">'//cdn.jsdelivr.net'</span>: <span class="string">''</span></span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line"><span class="comment">//以下内容都不用动</span></span><br><span class="line"><span class="title function_">addEventListener</span>(<span class="string">'fetch'</span>, <span class="function"><span class="params">event</span> =></span> {</span><br><span class="line"> event.<span class="title function_">respondWith</span>(<span class="title function_">fetchAndApply</span>(event.<span class="property">request</span>));</span><br><span class="line">})</span><br><span class="line"> </span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">fetchAndApply</span>(<span class="params">request</span>) {</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">const</span> region = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">'cf-ipcountry'</span>).<span class="title function_">toUpperCase</span>();</span><br><span class="line"> <span class="keyword">const</span> ip_address = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">'cf-connecting-ip'</span>);</span><br><span class="line"> <span class="keyword">const</span> user_agent = request.<span class="property">headers</span>.<span class="title function_">get</span>(<span class="string">'user-agent'</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">let</span> response = <span class="literal">null</span>;</span><br><span class="line"> <span class="keyword">let</span> url = <span class="keyword">new</span> <span class="title function_">URL</span>(request.<span class="property">url</span>);</span><br><span class="line"> <span class="keyword">let</span> url_host = url.<span class="property">host</span>;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (url.<span class="property">protocol</span> == <span class="string">'http:'</span>) {</span><br><span class="line"> url.<span class="property">protocol</span> = <span class="string">'https:'</span></span><br><span class="line"> response = <span class="title class_">Response</span>.<span class="title function_">redirect</span>(url.<span class="property">href</span>);</span><br><span class="line"> <span class="keyword">return</span> response;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (<span class="keyword">await</span> <span class="title function_">device_status</span>(user_agent)) {</span><br><span class="line"> upstream_domain = upstream</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> upstream_domain = upstream_mobile</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> url.<span class="property">host</span> = upstream_domain;</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (blocked_region.<span class="title function_">includes</span>(region)) {</span><br><span class="line"> response = <span class="keyword">new</span> <span class="title class_">Response</span>(<span class="string">'Access denied: WorkersProxy is not available in your region yet.'</span>, {</span><br><span class="line"> <span class="attr">status</span>: <span class="number">403</span></span><br><span class="line"> });</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span>(blocked_ip_address.<span class="title function_">includes</span>(ip_address)){</span><br><span class="line"> response = <span class="keyword">new</span> <span class="title class_">Response</span>(<span class="string">'Access denied: Your IP address is blocked by WorkersProxy.'</span>, {</span><br><span class="line"> <span class="attr">status</span>: <span class="number">403</span></span><br><span class="line"> });</span><br><span class="line"> } <span class="keyword">else</span>{</span><br><span class="line"> <span class="keyword">let</span> method = request.<span class="property">method</span>;</span><br><span class="line"> <span class="keyword">let</span> request_headers = request.<span class="property">headers</span>;</span><br><span class="line"> <span class="keyword">let</span> new_request_headers = <span class="keyword">new</span> <span class="title class_">Headers</span>(request_headers);</span><br><span class="line"> </span><br><span class="line"> new_request_headers.<span class="title function_">set</span>(<span class="string">'Host'</span>, upstream_domain);</span><br><span class="line"> new_request_headers.<span class="title function_">set</span>(<span class="string">'Referer'</span>, url.<span class="property">href</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">let</span> original_response = <span class="keyword">await</span> <span class="title function_">fetch</span>(url.<span class="property">href</span>, {</span><br><span class="line"> <span class="attr">method</span>: method,</span><br><span class="line"> <span class="attr">headers</span>: new_request_headers</span><br><span class="line"> })</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">let</span> original_response_clone = original_response.<span class="title function_">clone</span>();</span><br><span class="line"> <span class="keyword">let</span> original_text = <span class="literal">null</span>;</span><br><span class="line"> <span class="keyword">let</span> response_headers = original_response.<span class="property">headers</span>;</span><br><span class="line"> <span class="keyword">let</span> new_response_headers = <span class="keyword">new</span> <span class="title class_">Headers</span>(response_headers);</span><br><span class="line"> <span class="keyword">let</span> status = original_response.<span class="property">status</span>;</span><br><span class="line"> </span><br><span class="line"> new_response_headers.<span class="title function_">set</span>(<span class="string">'access-control-allow-origin'</span>, <span class="string">'*'</span>);</span><br><span class="line"> new_response_headers.<span class="title function_">set</span>(<span class="string">'access-control-allow-credentials'</span>, <span class="literal">true</span>);</span><br><span class="line"> new_response_headers.<span class="title function_">delete</span>(<span class="string">'content-security-policy'</span>);</span><br><span class="line"> new_response_headers.<span class="title function_">delete</span>(<span class="string">'content-security-policy-report-only'</span>);</span><br><span class="line"> new_response_headers.<span class="title function_">delete</span>(<span class="string">'clear-site-data'</span>);</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">const</span> content_type = new_response_headers.<span class="title function_">get</span>(<span class="string">'content-type'</span>);</span><br><span class="line"> <span class="keyword">if</span> (content_type.<span class="title function_">includes</span>(<span class="string">'text/html'</span>) && content_type.<span class="title function_">includes</span>(<span class="string">'UTF-8'</span>)) {</span><br><span class="line"> original_text = <span class="keyword">await</span> <span class="title function_">replace_response_text</span>(original_response_clone, upstream_domain, url_host);</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> original_text = original_response_clone.<span class="property">body</span></span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> response = <span class="keyword">new</span> <span class="title class_">Response</span>(original_text, {</span><br><span class="line"> status,</span><br><span class="line"> <span class="attr">headers</span>: new_response_headers</span><br><span class="line"> })</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> response;</span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">replace_response_text</span>(<span class="params">response, upstream_domain, host_name</span>) {</span><br><span class="line"> <span class="keyword">let</span> text = <span class="keyword">await</span> response.<span class="title function_">text</span>()</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">var</span> i, j;</span><br><span class="line"> <span class="keyword">for</span> (i <span class="keyword">in</span> replace_dict) {</span><br><span class="line"> j = replace_dict[i]</span><br><span class="line"> <span class="keyword">if</span> (i == <span class="string">'$upstream'</span>) {</span><br><span class="line"> i = upstream_domain</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (i == <span class="string">'$custom_domain'</span>) {</span><br><span class="line"> i = host_name</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> (j == <span class="string">'$upstream'</span>) {</span><br><span class="line"> j = upstream_domain</span><br><span class="line"> } <span class="keyword">else</span> <span class="keyword">if</span> (j == <span class="string">'$custom_domain'</span>) {</span><br><span class="line"> j = host_name</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">let</span> re = <span class="keyword">new</span> <span class="title class_">RegExp</span>(i, <span class="string">'g'</span>)</span><br><span class="line"> text = text.<span class="title function_">replace</span>(re, j);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> text;</span><br><span class="line">}</span><br><span class="line"> </span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">device_status</span> (user_agent_info) {</span><br><span class="line"> <span class="keyword">var</span> agents = [<span class="string">"Android"</span>, <span class="string">"iPhone"</span>, <span class="string">"SymbianOS"</span>, <span class="string">"Windows Phone"</span>, <span class="string">"iPad"</span>, <span class="string">"iPod"</span>];</span><br><span class="line"> <span class="keyword">var</span> flag = <span class="literal">true</span>;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">var</span> v = <span class="number">0</span>; v < agents.<span class="property">length</span>; v++) {</span><br><span class="line"> <span class="keyword">if</span> (user_agent_info.<span class="title function_">indexOf</span>(agents[v]) > <span class="number">0</span>) {</span><br><span class="line"> flag = <span class="literal">false</span>;</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> flag;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p><img src= "/img/loading.gif" data-lazy-src="https://img.400511.net/2022/02/19/d7V9T1Do.png" alt="1645243793805.png" /></p><p>你也可以去我的Github仓库中查看:<a href="https://github.com/pai233/jsdelivr-worker/">https://github.com/pai233/jsdelivr-worker/</a></p><p>保存并部署后,你的反向代理就生效了。</p><h1 id="测试"><a class="markdownIt-Anchor" href="#测试"></a> 测试</h1><p>博主部署了两个Workers,供大家免费使用:</p><ul><li><a href="https://jsdelivr.pai233.workers.dev/">https://jsdelivr.pai233.workers.dev/</a></li><li><a href="https://jsdelivr.gugugupai233.workers.dev/">https://jsdelivr.gugugupai233.workers.dev/</a></li></ul><p>使用时,将原来的<code>cdn.jsdelivr.net</code>域名替换为您的Worker或者博主提供的Worker就可以了。如:</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:<span class="regexp">//</span>cdn.jsdelivr.net<span class="regexp">/gh/</span>pai233<span class="regexp">/cdn-assets/</span><span class="number">1</span>.png</span><br></pre></td></tr></table></figure><p><img src= "/img/loading.gif" data-lazy-src="https://cdn.jsdelivr.net/gh/pai233/cdn-assets/1.png" alt="jsDelivr加载" /></p><p>将<code>cdn.jsdelivr.net</code>替换为我们的Worker:</p><figure class="highlight awk"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:<span class="regexp">//</span>jsdelivr.pai233.workers.dev<span class="regexp">/gh/</span>pai233<span class="regexp">/cdn-assets/</span><span class="number">1</span>.png</span><br></pre></td></tr></table></figure><p><img src= "/img/loading.gif" data-lazy-src="https://jsdelivr.pai233.workers.dev/gh/pai233/cdn-assets/1.png" alt="Worker加载" /></p><p>这样,就能保证较为稳定的使用jsDelivr的服务了。</p>]]></content>
<summary type="html">
<p>在2021年12月20日,jsDelivr在中国大陆地区的ICP备案被吊销,且随后的服务在中国大陆地区极不稳定,严重拖慢了网页的速度。</p>
</summary>
<category term="随笔" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/"/>
<category term="反向代理" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/"/>
<category term="jsDelivr" scheme="https://blog.pai233.top/tags/jsDelivr/"/>
<category term="反向代理" scheme="https://blog.pai233.top/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/"/>
<category term="Cloudflare" scheme="https://blog.pai233.top/tags/Cloudflare/"/>
<category term="Proxy" scheme="https://blog.pai233.top/tags/Proxy/"/>
</entry>
<entry>
<title>本站友链交换规则</title>
<link href="https://blog.pai233.top/20220213/friend-links-exchange-rules/"/>
<id>https://blog.pai233.top/20220213/friend-links-exchange-rules/</id>
<published>2022-02-13T09:39:42.000Z</published>
<updated>2022-03-20T07:50:46.783Z</updated>
<content type="html"><![CDATA[<p>首先,感谢您愿意交换友链!但交换友链还有以下规则,还请您详细阅读!</p><h1 id="域名"><a class="markdownIt-Anchor" href="#域名"></a> 域名</h1><p>对于一个网站来说,域名相当于它的门户。所以,一个好的域名非常重要。因此,博主拒绝以下类型的域名交换友链:</p><ol><li>使用免费域名的</li><li>域名中有违反中华人民共和国法律的字眼的</li><li><code>.onion</code>等无法通过正常互联网访问的</li><li>其他此处未考虑到,但经审核后拒绝的情节</li></ol><h2 id="免费域名"><a class="markdownIt-Anchor" href="#免费域名"></a> 免费域名</h2><p>免费域名包括但<strong>不限于</strong>以下几种:</p><ol><li>由Freenom公司所运营的<code>.tk</code>、<code>.cf</code>、<code>.ga</code>、<code>.ml</code>等免费域名</li><li>由 Joshua Anderson 运营的 Afraid FreeDNS 提供的免费子域名</li><li>其它不包括在<a href="https://publicsuffix.org/list/public_suffix_list.dat">PUBLIC SUFFIX LIST</a>中的<strong>免费子域名</strong>服务</li></ol><div class="note warning flat"><p><strong>请注意</strong>,由于国内的部分Pages服务,如Gitee Pages(<code>gitee.io</code>)拒绝提交其域名至PUBLIC SUFFIX LIST,根据第三条的定义,此类申请将被拒绝。我们建议您将博客部署到其他平台,如Cloudflare Pages、Vercel等。</p></div><p>免费域名<strong>不包括</strong>以下定义:</p><ol><li>在Freenom付费购买的<code>.tk</code>等域名(需提供凭证)</li><li>Github Pages服务的免费子域名(<code>github.io</code>)</li><li>Cloudflare Pages服务的免费子域名(<code>pages.dev</code>)</li><li>其他已纳入PUBLIC SUFFIX LIST的免费子域名服务</li></ol><h1 id="内容"><a class="markdownIt-Anchor" href="#内容"></a> 内容</h1><p>对于一个博客,优质内容也是很重要的一个关键。请保证您的博客有 <strong>实质性</strong> 内容,博主拒绝站点内容多为采集、抄袭的站点交换友链。博客可以长草,但不能滥竽充数。</p><p>另外,如果您的网站出现冒用备案、传播违反中华人民共和国法律的内容时,博主将拒绝此类友链并举报至相关部门。</p><h1 id="网络"><a class="markdownIt-Anchor" href="#网络"></a> 网络</h1><p>由于本站主要向中国大陆地区用户,因此,您需要保证您的博客在中国大陆地区访问正常,未出现<code>css</code>样式丢失,大量图片<code>404</code>等严重影响用户体验的情况。<br />同时,为了保证访问的安全性,您的博客需要开启<code>https</code>。目前多数主流平台均以支持一键开启<code>https</code>,您可以搜索🔍您的平台如何开启<code>https</code>。</p><h1 id="faq"><a class="markdownIt-Anchor" href="#faq"></a> FAQ</h1><ol><li>我的免费域名已经用很久了,怎么办?<br />如果您正在使用免费域名,我们会审核您的文章内容情况,如果文章内容优质且均为原创,博主依旧会添加您的友链。</li></ol>]]></content>
<summary type="html">
此文章用于公示,请点击查看。
</summary>
<category term="咕咕小站" scheme="https://blog.pai233.top/categories/%E5%92%95%E5%92%95%E5%B0%8F%E7%AB%99/"/>
<category term="博客动态" scheme="https://blog.pai233.top/categories/%E5%92%95%E5%92%95%E5%B0%8F%E7%AB%99/%E5%8D%9A%E5%AE%A2%E5%8A%A8%E6%80%81/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
</entry>
<entry>
<title>【USACO2019FEB Silver】MooBuzz</title>
<link href="https://blog.pai233.top/20220213/usaco2019dec-silver-moobuzz/"/>
<id>https://blog.pai233.top/20220213/usaco2019dec-silver-moobuzz/</id>
<published>2022-02-13T05:56:52.000Z</published>
<updated>2022-02-13T06:10:06.684Z</updated>
<content type="html"><![CDATA[<p>这道题本以为是什么大型模拟,其实是一道简单的找规律……</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p>英语原题:<a href="http://usaco.org/index.php?page=viewproblem2&cpid=966">http://usaco.org/index.php?page=viewproblem2&cpid=966</a></p><p>翻译:</p><p>Farmer John 的奶牛们最近成为了一个简单的数字游戏<code>FizzBuzz</code>的狂热玩家。这个游戏的规则很简单:奶牛们站成一圈,依次从一开始报数,每头奶牛在轮到她的时候报一个数。如果一头奶牛将要报的数字是 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>3</mn></mrow><annotation encoding="application/x-tex">3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">3</span></span></span></span> 的倍数,她应当报<code>Fizz</code>来代替这个数。如果一头奶牛将要报的数字是 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>5</mn></mrow><annotation encoding="application/x-tex">5</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span></span></span></span> 的倍数,她应当报<code>Buzz</code>来代替这个数。如果一头奶牛将要报的数字是 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>15</mn></mrow><annotation encoding="application/x-tex">15</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">5</span></span></span></span> 的倍数,她应当报<code>FizzBuzz</code>来代替这个数。于是这个游戏的开始部分的记录为:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Fizz</mtext><mo separator="true">,</mo><mn>4</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Buzz</mtext><mo separator="true">,</mo><mtext mathvariant="monospace">Fizz</mtext><mo separator="true">,</mo><mn>7</mn><mo separator="true">,</mo><mn>8</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Fizz</mtext><mo separator="true">,</mo><mtext mathvariant="monospace">Buzz</mtext><mo separator="true">,</mo><mn>11</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Fizz</mtext><mo separator="true">,</mo><mn>13</mn><mo separator="true">,</mo><mn>14</mn><mo separator="true">,</mo><mtext mathvariant="monospace">FizzBuzz</mtext><mo separator="true">,</mo><mn>16</mn></mrow><annotation encoding="application/x-tex">1, 2, \texttt{Fizz}, 4, \texttt{Buzz}, \texttt{Fizz}, 7, 8, \texttt{Fizz},\texttt{Buzz}, 11, \texttt{Fizz}, 13, 14, \texttt{FizzBuzz}, 16</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Fizz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Buzz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Fizz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">7</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">8</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Fizz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Buzz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Fizz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">FizzBuzz</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">6</span></span></span></span></span></p><p>由于词汇的匮乏,奶牛们玩的 <code>FizzBuzz</code> 中用<code>Moo</code>代替了 <code>Fizz</code>、<code>Buzz</code>、<code>FizzBuzz</code>。于是奶牛版的游戏的开始部分的记录为:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mn>4</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mn>7</mn><mo separator="true">,</mo><mn>8</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mn>11</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mn>13</mn><mo separator="true">,</mo><mn>14</mn><mo separator="true">,</mo><mtext mathvariant="monospace">Moo</mtext><mo separator="true">,</mo><mn>16</mn></mrow><annotation encoding="application/x-tex">1, 2, \texttt{Moo}, 4, \texttt{Moo},\texttt{Moo}, 7, 8, \texttt{Moo}, \texttt{Moo}, 11,\texttt{Moo}, 13, 14, \texttt{Moo}, 16</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">7</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">8</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord text"><span class="mord texttt">Moo</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">6</span></span></span></span></span></p><p>给定 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span>( <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mo>≤</mo><mi>N</mi><mo>≤</mo><mn>1</mn><msup><mn>0</mn><mn>9</mn></msup></mrow><annotation encoding="application/x-tex">1 \le N \le 10^9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.78041em;vertical-align:-0.13597em;"></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≤</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8193em;vertical-align:-0.13597em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≤</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.8141079999999999em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord"><span class="mord">0</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">9</span></span></span></span></span></span></span></span></span></span></span> ),请求出这个游戏中第 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span> 个被报的数。</p><h1 id="方法"><a class="markdownIt-Anchor" href="#方法"></a> 方法</h1><p>每 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>8</mn></mrow><annotation encoding="application/x-tex">8</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">8</span></span></span></span> 个数字为一组,形成规律:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>14</mn><mo separator="true">,</mo><mn>1</mn><mo separator="true">,</mo><mn>2</mn><mo separator="true">,</mo><mn>4</mn><mo separator="true">,</mo><mn>7</mn><mo separator="true">,</mo><mn>8</mn><mo separator="true">,</mo><mn>11</mn><mo separator="true">,</mo><mn>13</mn></mrow><annotation encoding="application/x-tex">14,1,2,4,7,8,11,13 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="mord">1</span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">7</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">8</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">3</span></span></span></span></span></p><p>但是在遇到 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>8</mn></mrow><annotation encoding="application/x-tex">8</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">8</span></span></span></span> 的倍数会出现一点问题,我个菜鸡不知道为啥,所以用了特判/kk</p><h1 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="type">int</span> n,d,a[<span class="number">8</span>]={<span class="number">14</span>,<span class="number">1</span>,<span class="number">2</span>,<span class="number">4</span>,<span class="number">7</span>,<span class="number">8</span>,<span class="number">11</span>,<span class="number">13</span>};</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"moobuzz.in"</span>,<span class="string">"r"</span>,stdin);</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"moobuzz.out"</span>,<span class="string">"w"</span>,stdout);</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line">d=n/<span class="number">8</span>;</span><br><span class="line"><span class="keyword">if</span>(n%<span class="number">8</span>><span class="number">0</span>){</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d"</span>,d*<span class="number">15</span>+a[n%<span class="number">8</span>]);</span><br><span class="line">}</span><br><span class="line"><span class="keyword">else</span>{</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d"</span>,d*<span class="number">15</span><span class="number">-1</span>);</span><br><span class="line">}</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>这道题本以为是什么大型模拟,其实是一道简单的找规律……</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="模拟" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%A8%A1%E6%8B%9F/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="USACO" scheme="https://blog.pai233.top/tags/USACO/"/>
</entry>
<entry>
<title>5个免费的静态Web应用部署平台</title>
<link href="https://blog.pai233.top/20220209/5-free-static-page-hosting/"/>
<id>https://blog.pai233.top/20220209/5-free-static-page-hosting/</id>
<published>2022-02-09T13:47:47.000Z</published>
<updated>2022-02-12T01:44:38.108Z</updated>
<content type="html"><![CDATA[<p>最近使用很多家的静态部署服务,今天就给大家整5个我认为最好的,供大家白嫖(</p><span id="more"></span><p>为了确保评测间的公平性,我们采用了同一地区(四川成都)的三大运营商的网络进行测试。</p><h1 id="cloudflare-pages"><a class="markdownIt-Anchor" href="#cloudflare-pages"></a> Cloudflare Pages</h1><h2 id="评价"><a class="markdownIt-Anchor" href="#评价"></a> 评价</h2><p>推荐指数:⭐⭐⭐⭐⭐<br />服务器地理位置:美国自家节点<br />推荐原因:速度稳定,在全球各地均有CDN,支持从Github/Gitlab等平台自动部署<br />缺点:部署速度较慢,但不算太影响</p><h2 id="网络情况"><a class="markdownIt-Anchor" href="#网络情况"></a> 网络情况</h2><p>电信:从大陆直连美国</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/P9beDzP4.png" alt="1644415179959.png" /></p><p>联通:绕行欧洲后到美国</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/GCdojGAQ.png" alt="1644415233848.png" /></p><p>移动:到达香港后无法追踪(移动就这德性)</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/fgzXAYHP.png" alt="1644415423550.png" /></p><p>官网指路:<a href="https://www.cloudflare.com">https://www.cloudflare.com</a></p><p>自己测试:<a href="https://blog.pai233.top/">https://blog.pai233.top/</a></p><h1 id="vercel"><a class="markdownIt-Anchor" href="#vercel"></a> Vercel</h1><h2 id="评价-2"><a class="markdownIt-Anchor" href="#评价-2"></a> 评价</h2><p>推荐指数:⭐⭐⭐⭐<br />服务器地理位置:美国AWS<br />推荐原因:部署速度快,支持自动部署<br />缺点:被墙过一次,速度有可能出现不稳定</p><h2 id="网络情况-2"><a class="markdownIt-Anchor" href="#网络情况-2"></a> 网络情况</h2><p>电信:大陆绕道日本后连接美国<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/yGhlSKkU.png" alt="1644415777404.png" /></p><p>联通:直连美国后到新加坡(?再回美国<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/9JrrV5To.png" alt="1644416726065.png" /></p><p>移动:绕道香港后直连<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/O8KVUJaG.png" alt="1644415974820.png" /></p><p>官网指路:<a href="https://vercel.com">https://vercel.com</a></p><p>自己测试:<a href="https://vercel.cdn.blog.pai233.top/">https://vercel.cdn.blog.pai233.top/</a></p><h1 id="4everland"><a class="markdownIt-Anchor" href="#4everland"></a> 4everland</h1><h2 id="评价-3"><a class="markdownIt-Anchor" href="#评价-3"></a> 评价</h2><p>推荐指数:⭐⭐⭐⭐<br />服务器地理位置:香港阿里云<br />推荐原因:支持自动部署,服务器邻近大陆<br />缺点:新平台,不确定是否能稳定运转</p><h2 id="网络情况-3"><a class="markdownIt-Anchor" href="#网络情况-3"></a> 网络情况</h2><p>电信:先跨运营商,通过联通出香港,后到新加坡,最后香港<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/FlZsi0Tk.png" alt="1644416462183.png" /></p><p>联通:绕香港后到新加坡,最后香港<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/9JrrV5To.png" alt="1644416726065.png" /></p><p>移动:绕香港后到新加坡,最后香港<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/zjNLIBzB.png" alt="1644416919347.png" /></p><p>官网指路:<a href="https://4everland.org">https://4everland.org</a></p><p>自己测试:<a href="https://4everland.cdn.blog.pai233.top/">https://4everland.cdn.blog.pai233.top/</a></p><h1 id="netlify"><a class="markdownIt-Anchor" href="#netlify"></a> NetLify</h1><h2 id="评价-4"><a class="markdownIt-Anchor" href="#评价-4"></a> 评价</h2><p>推荐指数:⭐⭐⭐<br />服务器地理位置:新加坡AWS<br />推荐原因:支持自动部署,连接速度较快<br />缺点:控制台无法在国内正常打开,需要走出世界</p><h2 id="网络情况-4"><a class="markdownIt-Anchor" href="#网络情况-4"></a> 网络情况</h2><p>电信:大陆直连<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/bTO1CSAr.png" alt="1644416179450.png" /></p><p>联通:大陆绕道日本、美国后到新加坡<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/C7molJlA.png" alt="1644416220136.png" /></p><p>移动:绕道香港、美国<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/09/yUNGbRbd.png" alt="1644416301711.png" /></p><p>官网指路:<a href="https://netlify.com">https://netlify.com</a></p><p>自己测试:<a href="https://netlify.cdn.blog.pai233.top/">https://netlify.cdn.blog.pai233.top/</a></p><h1 id="github-pages"><a class="markdownIt-Anchor" href="#github-pages"></a> Github Pages</h1><p>推荐指数:⭐⭐<br />服务器地理位置:美国<br />推荐:<code>push</code>即部署,简单快捷<br />缺点:网络连接严重不稳定</p><h2 id="网络情况-5"><a class="markdownIt-Anchor" href="#网络情况-5"></a> 网络情况</h2><p>由于博主行文至此时发现原使用的测试平台已下线四川成都移动线路,无法正常测试,这里就放张全国的测速图给大家感受一下吧:<br /><img src= "/img/loading.gif" data-lazy-src="https://i.bmp.ovh/imgs/2022/02/b43cb05df38959d1.png" alt="" /></p><p>大家看各自需要,找一个适合自己的就OK的啦~</p>]]></content>
<summary type="html">
<p>最近使用很多家的静态部署服务,今天就给大家整5个我认为最好的,供大家白嫖(</p>
</summary>
<category term="推荐" scheme="https://blog.pai233.top/categories/%E6%8E%A8%E8%8D%90/"/>
<category term="Web服务" scheme="https://blog.pai233.top/categories/%E6%8E%A8%E8%8D%90/Web%E6%9C%8D%E5%8A%A1/"/>
<category term="免费" scheme="https://blog.pai233.top/tags/%E5%85%8D%E8%B4%B9/"/>
<category term="白嫖" scheme="https://blog.pai233.top/tags/%E7%99%BD%E5%AB%96/"/>
<category term="部署" scheme="https://blog.pai233.top/tags/%E9%83%A8%E7%BD%B2/"/>
</entry>
<entry>
<title>如何将你的Hexo博客部署到Google Firebase上</title>
<link href="https://blog.pai233.top/20220208/how-to-deploy-your-hexo-blog-on-firebase/"/>
<id>https://blog.pai233.top/20220208/how-to-deploy-your-hexo-blog-on-firebase/</id>
<published>2022-02-08T13:53:34.000Z</published>
<updated>2022-02-09T13:52:58.192Z</updated>
<content type="html"><![CDATA[<p>博主最近在 <s>白嫖万恶的资本</s> 将博客部署到新的CDN上,所以在寻找免费的静态Web应用部署工具,发现了Google Firebase。</p><span id="more"></span><h1 id="google-firebase"><a class="markdownIt-Anchor" href="#google-firebase"></a> Google Firebase</h1><blockquote><p>以下内容摘取自<a href="https://www.wikipedia.org/">Wikipedia</a>。<br />Firebase是Firebase,Inc.在2011年发布的行动和网络应用程序开发者平台,在2014年被Google收购。<br />截至2020年3月,Firebase平台拥有19项产品,它们被超过150万个应用程序采用。</p></blockquote><p>这 <s>万恶资本</s> Google的坑,怎么能不白嫖呢😏</p><p><strong>Tip: 以下内容在中国大陆需要掌握浏览世界的方法(嘘🤫——</strong></p><h1 id="新建项目"><a class="markdownIt-Anchor" href="#新建项目"></a> 新建项目</h1><p>打开<a href="https://firebase.google.com/">Firebase官网</a>,登陆账号并转到控制台。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/zup1nxeh.png" alt="" /></p><p>选择“添加项目”,输入您的项目名称,如果你喜欢,可以编辑您项目的唯一标识符(位于名称框的左下角)</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/8N1PLfg0.png" alt="" /></p><p>点击下一步,到询问是否启用分析页面,这里根据你个人的喜好来吧~</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/N9f6FPMQ.png" alt="" /></p><p>选择完后,项目开始创建(如果您启用了分析,可能还要选择账户)。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/5j0QsL4j.png" alt="" /></p><p>然后会进入到选择计划的页面(由于博主先前已经创建过了,并没有弹出),按照你的喜好来 <s>(不会有人给Google交钱吧)</s>,选择完后整个项目就OK了。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/o1m0xdWC.png" alt="" /></p><h1 id="安装hexo插件"><a class="markdownIt-Anchor" href="#安装hexo插件"></a> 安装Hexo插件</h1><p>因为Hexo在之前并没有将博客发布到Firebase的插件,博主就自己做了一个<a href="https://github.com/pai233/hexo-deployer-firebase">hexo-deployer-firebase</a>,但在使用前,还需要你安装Firebase CLI。</p><h2 id="安装firebase-cli命令行工具"><a class="markdownIt-Anchor" href="#安装firebase-cli命令行工具"></a> 安装Firebase CLI命令行工具</h2><p>Firebase CLI在官网上提供了两种安装方式,分别是安装包安装和<code>npm</code>安装。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/06/ADzfV8Z1.png" alt="" /></p><p>我们既然都用Hexo了,那么肯定装好了npm了吧(</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i -g firebase-tools</span><br></pre></td></tr></table></figure><p>按照你想用的方式安装好,在命令行中运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firebase login</span><br></pre></td></tr></table></figure><p>如果你无权访问<code>localhost</code>(个人电脑应该都可以吧),可以使用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firebase login --no-localhost</span><br></pre></td></tr></table></figure><p>登陆您项目所对应的Google账号,登陆完后,这一步就OK了。</p><h2 id="安装插件"><a class="markdownIt-Anchor" href="#安装插件"></a> 安装插件</h2><p>将命令行切换到您的博客根目录下,运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i hexo-deployer-firebase --save</span><br></pre></td></tr></table></figure><p>安装插件。等待进度条跑完,即安装成功。</p><p><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/dBQv8rdB.png" alt="" /></p><h1 id="配置"><a class="markdownIt-Anchor" href="#配置"></a> 配置</h1><p>打开Hexo的<code>_config.yml</code>文件,在您的<code>deploy</code>处进行配置:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line"> <span class="bullet">-</span> <span class="attr">type:</span> <span class="string">firebase</span></span><br><span class="line"> <span class="attr">id:</span> <span class="comment">#你Firebase项目的标识符</span></span><br></pre></td></tr></table></figure><p>例如博主的是这个样子:<br /><img src= "/img/loading.gif" data-lazy-src="https://img1.imgtp.com/2022/02/08/s4G3udAw.png" alt="" /></p><p>现在,你可以愉快的将博客发布到Google Firebase上啦~</p><h1 id="参考"><a class="markdownIt-Anchor" href="#参考"></a> 参考</h1><ol><li><a href="https://zh.wikipedia.org/wiki/Firebase">Firebase - 维基百科</a></li><li><a href="https://github.com/pai233/hexo-deployer-firebase">hexo-deployer-firebase</a></li></ol><p>能完成这个项目,需要感谢:</p><ol><li><a href="https://github.com/hexojs/hexo-deployer-git">hexo-deployer-git</a></li><li><a href="https://hexo.io/zh-cn/api/">Hexo API</a></li></ol>]]></content>
<summary type="html">
<p>博主最近在 <s>白嫖万恶的资本</s> 将博客部署到新的CDN上,所以在寻找免费的静态Web应用部署工具,发现了Google Firebase。</p>
</summary>
<category term="博客美化" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
<category term="部署" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/%E9%83%A8%E7%BD%B2/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="白嫖" scheme="https://blog.pai233.top/tags/%E7%99%BD%E5%AB%96/"/>
<category term="部署" scheme="https://blog.pai233.top/tags/%E9%83%A8%E7%BD%B2/"/>
<category term="Firebase" scheme="https://blog.pai233.top/tags/Firebase/"/>
</entry>
<entry>
<title>博客正式切换主题到Butterfly!</title>
<link href="https://blog.pai233.top/20220207/change-the-theme-to-butterfly/"/>
<id>https://blog.pai233.top/20220207/change-the-theme-to-butterfly/</id>
<published>2022-02-07T14:40:33.000Z</published>
<updated>2022-02-07T14:56:43.403Z</updated>
<content type="html"><![CDATA[<p>博主的博客从今天起正式切换到Butterfly啦!</p><span id="more"></span><h1 id="新特性"><a class="markdownIt-Anchor" href="#新特性"></a> 新特性</h1><p>更换主题后,在保留原有功能的同时,还增加了许多新功能:</p><ol><li>支持双系统评论!(Twikoo/Gitalk)</li><li>文章结尾支持自动推荐</li><li>新增了“咕言咕语”、“留言板”等栏目</li><li>等你发现 <s>(才不是我不记得了)</s></li></ol><h1 id="新增了几个cdn"><a class="markdownIt-Anchor" href="#新增了几个cdn"></a> 新增了几个CDN</h1><ol><li>Render</li><li>Forge</li><li>Hostman</li><li>Google Firebase</li></ol><h1 id="google-adsense"><a class="markdownIt-Anchor" href="#google-adsense"></a> Google AdSense</h1><p>这个东西的自动广告真的太迷惑了,在调了在调了😅</p><p><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2020/03/09/VBmOqyIPEHSZ2Nl.gif" alt="qwq" /></p><h1 id="the-old-one"><a class="markdownIt-Anchor" href="#the-old-one"></a> The Old One</h1><p>原NexT主题的博客页面已经备份好了:<a href="https://old.blog.pai233.top/">https://old.blog.pai233.top/</a></p><p>但是应该不会再更新了……</p>]]></content>
<summary type="html">
<p>博主的博客从今天起正式切换到Butterfly啦!</p>
</summary>
<category term="咕咕小站" scheme="https://blog.pai233.top/categories/%E5%92%95%E5%92%95%E5%B0%8F%E7%AB%99/"/>
<category term="博客动态" scheme="https://blog.pai233.top/categories/%E5%92%95%E5%92%95%E5%B0%8F%E7%AB%99/%E5%8D%9A%E5%AE%A2%E5%8A%A8%E6%80%81/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
</entry>
<entry>
<title>如何修复具有双BIOS的某G姓主板的BIOS</title>
<link href="https://blog.pai233.top/20220123/how-to-fix-the-bios-of-gigabyte-motherboards-which-has-dual-bios/"/>
<id>https://blog.pai233.top/20220123/how-to-fix-the-bios-of-gigabyte-motherboards-which-has-dual-bios/</id>
<published>2022-01-23T15:09:23.000Z</published>
<updated>2022-01-31T13:38:27.953Z</updated>
<content type="html"><![CDATA[<p>前几天不知道主板抽什么风,BIOS又炸了。</p><span id="more"></span><h1 id="起因"><a class="markdownIt-Anchor" href="#起因"></a> 起因</h1><p>博主现在用着的是一块某G姓品牌的GA-Z77P-D3(如下图,图源网络)</p><p><img src= "/img/loading.gif" data-lazy-src="https://tse2-mm.cn.bing.net/th/id/OIP-C.SFe2Z2eqAyM_RSvWil62igAAAA?pid=ImgDet&rs=1" alt="" /></p><p>这块主板搭载了双BIOS(位于主板右下角SATA接口上),在主BIOS故障时,可以通过Backup BIOS进行恢复。但博主之前不知道,第一次卡BIOS时,还拿出去给奸商大砍30大洋,血一样的教训……</p><p><img src= "/img/loading.gif" data-lazy-src="https://tse1-mm.cn.bing.net/th/id/R-C.d8bdfffe0f30196ce2b3573fde1055dd?rik=KZtUo6qNbIw1pw&riu=http%3a%2f%2fwww.youqu5.net%2fd%2ffile%2f2019-08-09%2fccd1183a06ac60d2241dade12521383e.jpg&ehk=OBd%2buw%2fNdxu0H0hmBpg9cYJWJ%2f1hZo9RKoHFFMKuvhM%3d&risl=&pid=ImgRaw&r=0&sres=1&sresct=1" alt="" /></p><p>现在第二次卡BIOS,终于知道了有双BIOS,这次就直接恢复试试。</p><h1 id="方法"><a class="markdownIt-Anchor" href="#方法"></a> 方法</h1><p>博主没有别人短接BIOS针脚的实力,也没有断电几分钟自动恢复的运气,只能踏踏实实的恢复BIOS。</p><ol><li><p>将计算机关机</p></li><li><p>长按开机键,开机后不要断开</p></li><li><p>等待约10秒后计算机自动断电重启</p></li><li><p>进入BIOS恢复页面等待</p></li></ol><p>Tip:有时候长按开机键后,CPU风扇刚刚起转就断电了,这种情况可能需要多试几次。</p><p>等待进度条跑完,重启,电脑成功启动进入系统。<br /><img src= "/img/loading.gif" data-lazy-src="https://i.bmp.ovh/imgs/2022/01/6db340b7eb1b818b.png" alt="" /></p>]]></content>
<summary type="html">
<p>前几天不知道主板抽什么风,BIOS又炸了。</p>
</summary>
<category term="随笔" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/"/>
<category term="奇淫技巧" scheme="https://blog.pai233.top/categories/%E9%9A%8F%E7%AC%94/%E5%A5%87%E6%B7%AB%E6%8A%80%E5%B7%A7/"/>
<category term="主板" scheme="https://blog.pai233.top/tags/%E4%B8%BB%E6%9D%BF/"/>
<category term="维修" scheme="https://blog.pai233.top/tags/%E7%BB%B4%E4%BF%AE/"/>
<category term="技嘉" scheme="https://blog.pai233.top/tags/%E6%8A%80%E5%98%89/"/>
</entry>
<entry>
<title>给静态博客加入链接安全跳转页</title>
<link href="https://blog.pai233.top/20220109/how-to-use-go-jumper/"/>
<id>https://blog.pai233.top/20220109/how-to-use-go-jumper/</id>
<published>2022-01-09T03:30:00.000Z</published>
<updated>2022-01-31T09:08:56.641Z</updated>
<content type="html"><![CDATA[<p>在逛别人的博客的时候,发现了有一种叫<code>go.php</code>的东西,可以经过自己站点的网页再跳转出去,方便SEO优化。但是像Hexo这类静态博客,想要从源HTML修改链接难度有点大,这里我们采用JavaScript动态修改。</p><span id="more"></span><h1 id="部署go-jumper到github-pages"><a class="markdownIt-Anchor" href="#部署go-jumper到github-pages"></a> 部署Go Jumper到Github Pages</h1><p>博主根据<a href="https://mkblog.cn/701/">这个大佬的博客</a>里的二次跳转,魔改了一个静态版:<a href="https://github.com/pai233/go-jumper">Go Jumper</a><br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/4LTcE2wAXrmvkKZ.png" alt="image.png" /></p><p>所以,现在登陆你的Github账号,Fork这个仓库,选择你的个人账户。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/EblcdQUOof9sBZH.png" alt="image.png" /></p><p>Fork完毕后,点击Settings->Pages,将原分支从<code>none</code>修改为<code>master</code>,目录保持为<code>/(root)</code>,然后Save。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/23sepgmSiFvbhGw.png" alt="image.png" /></p><p>这样,你自己的Go Jumper就成功部署在<code>https://[你的Github用户名].github.io/go-jumper/</code>了。<br /><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/09/5tML3zhxuHOlPfr.png" alt="image.png" /></p><p>当然,你也可以绑定自己的域名,或者部署到其他的平台,这里不展开赘述。</p><h1 id="修改indexjs"><a class="markdownIt-Anchor" href="#修改indexjs"></a> 修改<code>index.js</code></h1><p>为了方便,我们这边直接在线修改:打开<code>https://github.com/[你的Github用户名]/go-jumper/edit/master/js/index.js</code>,修改以下内容:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable language_">document</span>.<span class="title function_">getElementsByClassName</span>(<span class="string">"loading-text"</span>)[<span class="number">0</span>].<span class="property">innerHTML</span> = <span class="string">"参数错误,将跳转至pai233の小窝<dot>...</dot>"</span><span class="comment">//修改为你自己的提示</span></span><br><span class="line"><span class="built_in">setTimeout</span>(<span class="function">()=></span>{</span><br><span class="line"> <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span> = <span class="string">"https://blog.pai233.top/"</span><span class="comment">//修改为你自己的主页</span></span><br><span class="line">},<span class="number">5000</span>)</span><br><span class="line"><span class="string">``</span><span class="string">` </span></span><br><span class="line"><span class="string">`</span><span class="string">``</span>js</span><br><span class="line"><span class="keyword">if</span>(<span class="comment">/*referrer[referrer.length-3]+"."+ 二级域名可选*/</span>referrer[referrer.<span class="property">length</span>-<span class="number">2</span>]+<span class="string">'.'</span>+referrer[referrer.<span class="property">length</span>-<span class="number">1</span>]!=<span class="string">"pai233.top"</span><span class="comment">/*修改为你的博客的根/二级域名,二级域名需要去掉前面的注释*/</span> || <span class="variable language_">document</span>.<span class="property">referrer</span>===<span class="string">""</span>){</span><br><span class="line"> swal.<span class="title function_">fire</span>({</span><br><span class="line"> <span class="attr">title</span>: <span class="string">"确定访问?"</span>,</span><br><span class="line"> <span class="attr">text</span>: <span class="string">"该网址不属于咕咕小站,你确定要打开"</span>+link+<span class="string">"吗?"</span>,<span class="comment">//修改为你自己的提示</span></span><br><span class="line"> <span class="attr">type</span>: <span class="string">"warning"</span>,</span><br><span class="line"> <span class="attr">showCancelButton</span>: <span class="literal">true</span>,</span><br><span class="line"> <span class="attr">confirmButtonColor</span>: <span class="string">"#DD6B55"</span>,</span><br><span class="line"> <span class="attr">confirmButtonText</span>: <span class="string">"确定"</span>,</span><br><span class="line"> <span class="attr">cancelButtonText</span>: <span class="string">"取消"</span>,</span><br><span class="line"> }).<span class="title function_">then</span>(<span class="keyword">function</span>(<span class="params">isConfirm</span>){</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(isConfirm)</span><br><span class="line"> <span class="keyword">if</span> (isConfirm) {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'setTimeout'</span>)</span><br><span class="line"> <span class="built_in">setTimeout</span>(<span class="keyword">function</span>(<span class="params"></span>){</span><br><span class="line"> <span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">href</span> = link</span><br><span class="line"> },<span class="number">3000</span>)</span><br><span class="line"> } </span><br><span class="line"> <span class="keyword">else</span> {</span><br><span class="line"> <span class="variable language_">window</span>.<span class="property">opener</span>=<span class="literal">null</span>;</span><br><span class="line"> <span class="variable language_">window</span>.<span class="title function_">open</span>(<span class="string">''</span>,<span class="string">'_self'</span>);</span><br><span class="line"> <span class="variable language_">window</span>.<span class="title function_">close</span>();</span><br><span class="line"> <span class="comment">/* 微信浏览器关闭 */</span> </span><br><span class="line"> <span class="title class_">WeixinJSBridge</span>.<span class="title function_">call</span>(<span class="string">'closeWindow'</span>);</span><br><span class="line"> }</span><br><span class="line"> })</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>然后直接commit,现在,你可以通过<code>https://[你的Go Jumper部署地址]#[跳转网页的base64编码]</code>来测试一下。</p><h1 id="博客动态修改"><a class="markdownIt-Anchor" href="#博客动态修改"></a> 博客动态修改</h1><p>这里以博主使用的Hexo+NexT主题为例,新建<code>[主题根目录]/source/js/link-checker.js</code>,内容如下:</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">$(<span class="variable language_">document</span>).<span class="title function_">ready</span>(<span class="keyword">function</span>(<span class="params"></span>){</span><br><span class="line"> <span class="title function_">checkLink</span>();</span><br><span class="line">});</span><br><span class="line"><span class="comment">// 若博客启用了Pjax请去掉注释。</span></span><br><span class="line"><span class="comment">// $(document).on('pjax:complete', function () {</span></span><br><span class="line"><span class="comment">// checkLink();</span></span><br><span class="line"><span class="comment">// });</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLink</span>(<span class="params"></span>){</span><br><span class="line"> <span class="keyword">let</span> link = <span class="variable language_">document</span>.<span class="title function_">getElementsByTagName</span>(<span class="string">'a'</span>);</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">var</span> i=<span class="number">0</span>;i<link.<span class="property">length</span>;i++){</span><br><span class="line"> <span class="comment">//如果你的博客添加了Gitter聊天窗,请去掉下方注释</span></span><br><span class="line"> <span class="keyword">if</span>(link[i].<span class="property">href</span>===<span class="string">""</span> <span class="comment">/*|| link[i].className==="gitter-open-chat-button"*/</span>)<span class="keyword">continue</span>;</span><br><span class="line"> <span class="keyword">if</span>(!<span class="keyword">await</span> <span class="title function_">checkLocalSite</span>(link[i].<span class="property">href</span>)){</span><br><span class="line"> link[i].<span class="property">href</span> = <span class="string">"[你的Go Jumper的部署地址]#"</span>+<span class="variable language_">window</span>.<span class="title function_">btoa</span>(link[i].<span class="property">href</span>)</span><br><span class="line"> <span class="comment">//console.log("edit.")</span></span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">checkLocalSite</span>(<span class="params">url</span>){</span><br><span class="line"> <span class="keyword">try</span>{</span><br><span class="line"> <span class="comment">//console.log("check:",url)</span></span><br><span class="line"> <span class="keyword">let</span> reg = <span class="keyword">new</span> <span class="title class_">RegExp</span>(<span class="regexp">/\/\/(.*)\//g</span>)</span><br><span class="line"> <span class="keyword">let</span> domain = reg.<span class="title function_">exec</span>(url)[<span class="number">1</span>].<span class="title function_">split</span>(<span class="string">'/'</span>)[<span class="number">0</span>].<span class="title function_">split</span>(<span class="string">'.'</span>)</span><br><span class="line"> <span class="comment">//console.log(domain,domain[domain.length-2]+'.'+domain[domain.length-1])</span></span><br><span class="line"> domain = {</span><br><span class="line"> <span class="comment">//二级域名请去除下一行的注释</span></span><br><span class="line"> <span class="attr">check</span>: (<span class="comment">/*domain[domain.length-3]+'.'+*/</span>domain[domain.<span class="property">length</span>-<span class="number">2</span>]+<span class="string">'.'</span>+domain[domain.<span class="property">length</span>-<span class="number">1</span>]).<span class="title function_">split</span>(<span class="string">'/'</span>)[<span class="number">0</span>],</span><br><span class="line"> <span class="attr">original</span>: domain</span><br><span class="line"> }</span><br><span class="line"> <span class="comment">//console.log(domain)</span></span><br><span class="line"> <span class="keyword">if</span>(domain.<span class="property">check</span>===<span class="string">"pai233.top"</span> || domain.<span class="property">original</span>[<span class="number">0</span>].<span class="title function_">split</span>(<span class="string">'/'</span>)[<span class="number">0</span>]===<span class="string">"localhost:4000"</span>)<span class="keyword">return</span> <span class="literal">true</span>;<span class="comment">//将domain.check修改为根或二级域名,domain.original[0].split('/')[0]修改为本地测试页面</span></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> }<span class="keyword">catch</span>(err){</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">true</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>最后到<code>[主题根目录]/layout/_layout.swig</code>中,在<code></head></code>标签前加入以下内容:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">src</span>=<span class="string">"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"</span>></span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">src</span>=<span class="string">"/js/link-checker.js"</span>></span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"><<span class="name">script</span> <span class="attr">src</span>=<span class="string">"https://blog.pai233.top/js/sweetalert.js"</span>></span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"><<span class="name">link</span> <span class="attr">rel</span>=<span class="string">"stylesheet"</span> <span class="attr">href</span>=<span class="string">"https://blog.pai233.top/css/sweetalert.css"</span>></span></span><br></pre></td></tr></table></figure><p>这样,当博客加载完毕的时候,博客的全部外链就会被加上二级跳转,但是源HTML里的外链不变。</p><h1 id="注意"><a class="markdownIt-Anchor" href="#注意"></a> 注意</h1><p>在<code>index.html</code>中,博主插入了广告代码,有需要的可自行删除:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag"><<span class="name">div</span> <span class="attr">id</span>=<span class="string">"google-ads"</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">ins</span> <span class="attr">class</span>=<span class="string">"adsbygoogle"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">style</span>=<span class="string">"display:block; text-align:center;"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-layout</span>=<span class="string">"in-article"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-format</span>=<span class="string">"fluid"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-client</span>=<span class="string">"ca-pub-1820088263747150"</span></span></span><br><span class="line"><span class="tag"> <span class="attr">data-ad-slot</span>=<span class="string">"3739765077"</span>></span><span class="tag"></<span class="name">ins</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">script</span>></span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript"> (adsbygoogle = <span class="variable language_">window</span>.<span class="property">adsbygoogle</span> || []).<span class="title function_">push</span>({});</span></span><br><span class="line"><span class="language-javascript"> </span><span class="tag"></<span class="name">script</span>></span></span><br><span class="line"><span class="tag"></<span class="name">div</span>></span></span><br></pre></td></tr></table></figure><h1 id="广告"><a class="markdownIt-Anchor" href="#广告"></a> 广告</h1><p>我的博客即将同步至腾讯云+社区,邀请大家一同入驻:<a href="https://cloud.tencent.com/developer/support-plan?invite_code=j6hm8y2r61ul">点击这里</a></p><p><img src= "/img/loading.gif" data-lazy-src="https://main.qcloudimg.com/raw/64733509acceb4108f98a67fd3166738.jpg" alt="" /></p>]]></content>
<summary type="html">
<p>在逛别人的博客的时候,发现了有一种叫<code>go.php</code>的东西,可以经过自己站点的网页再跳转出去,方便SEO优化。但是像Hexo这类静态博客,想要从源HTML修改链接难度有点大,这里我们采用JavaScript动态修改。</p>
</summary>
<category term="博客美化" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
<category term="功能" scheme="https://blog.pai233.top/categories/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/%E5%8A%9F%E8%83%BD/"/>
<category term="Blog" scheme="https://blog.pai233.top/tags/Blog/"/>
<category term="美化" scheme="https://blog.pai233.top/tags/%E7%BE%8E%E5%8C%96/"/>
<category term="Hexo" scheme="https://blog.pai233.top/tags/Hexo/"/>
<category term="JavaScript" scheme="https://blog.pai233.top/tags/JavaScript/"/>
</entry>
<entry>
<title>【NOIP1999 提高组T4】 靶形数独</title>
<link href="https://blog.pai233.top/20220102/noip2009tg-t4/"/>
<id>https://blog.pai233.top/20220102/noip2009tg-t4/</id>
<published>2022-01-02T03:07:53.000Z</published>
<updated>2022-01-31T09:09:15.241Z</updated>
<content type="html"><![CDATA[<p>一道挺水的DFS。</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p>小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低。但普通的数独对他们来说都过于简单了,于是他们向 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>Z</mi></mrow><annotation encoding="application/x-tex">Z</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.07153em;">Z</span></span></span></span> 博士请教,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>Z</mi></mrow><annotation encoding="application/x-tex">Z</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.07153em;">Z</span></span></span></span> 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目。</p><p>靶形数独的方格同普通数独一样,在 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>9</mn><mo>×</mo><mn>9</mn></mrow><annotation encoding="application/x-tex">9 \times 9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">9</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">9</span></span></span></span> 格高的大九宫格中有 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>9</mn></mrow><annotation encoding="application/x-tex">9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">9</span></span></span></span> 个 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>3</mn><mo>×</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">3 \times 3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">3</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">3</span></span></span></span> 格高的小九宫格(用粗黑色线隔开的)。在这个大九宫格中,有一些数字是已知的,根据这些数字,利用逻辑推理,在其他的空格上填入 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 到 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>9</mn></mrow><annotation encoding="application/x-tex">9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">9</span></span></span></span> 的数字。每个数字在每个小九宫格内不能重复出现,每个数字在每行、每列也不能重复出现。但靶形数独有一点和普通数独不同,即每一个方格都有一个分值,而且如同一个靶子一样,离中心越近则分值越高。(如图)</p><p><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/03/xpVSZs6BokAIgeh.png" alt="image.png" /></p><p>上图具体的分值分布是:最里面一格(黄色区域)为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>10</mn></mrow><annotation encoding="application/x-tex">10</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">0</span></span></span></span> 分,黄色区域外面的一圈(红色区域)每个格子为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>9</mn></mrow><annotation encoding="application/x-tex">9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">9</span></span></span></span> 分,再外面一圈(蓝色区域)每个格子为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>8</mn></mrow><annotation encoding="application/x-tex">8</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">8</span></span></span></span> 分,蓝色区域外面一圈(棕色区域)每个格子为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>7</mn></mrow><annotation encoding="application/x-tex">7</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">7</span></span></span></span> 分,最外面一圈(白色区域)每个格子为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>6</mn></mrow><annotation encoding="application/x-tex">6</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">6</span></span></span></span> 分,如上图所示。比赛的要求是:每个人必须完成一个给定的数独(每个给定数独可能有不同的填法),而且要争取更高的总分数。而这个总分数即每个方格上的分值和完成这个数独时填在相应格上的数字的乘积的总和。如图,在以下的这个已经填完数字的靶形数独游戏中,总分数为 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2829</mn></mrow><annotation encoding="application/x-tex">2829</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">8</span><span class="mord">2</span><span class="mord">9</span></span></span></span> 。游戏规定,将以总分数的高低决出胜负。</p><p><img src= "/img/loading.gif" data-lazy-src="https://s2.loli.net/2022/01/03/1AdOgwQ3oi7UkGS.png" alt="image.png" /></p><p>由于求胜心切,小城找到了善于编程的你,让你帮他求出,对于给定的靶形数独,能够得到的最高分数。</p><h1 id="做法"><a class="markdownIt-Anchor" href="#做法"></a> 做法</h1><p>这道题爆搜肯定不行,所以要像平时做数独时一样,从 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span> 少的地方开始搜索。</p><h1 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="keyword">struct</span> <span class="title class_">countxy</span>{</span><br><span class="line"><span class="type">int</span> rank,sum;</span><br><span class="line">}data[<span class="number">10</span>];</span><br><span class="line"><span class="type">int</span> x[<span class="number">10</span>][<span class="number">10</span>],y[<span class="number">10</span>][<span class="number">10</span>],all[<span class="number">10</span>][<span class="number">10</span>],a[<span class="number">10</span>][<span class="number">10</span>],s[<span class="number">100</span>][<span class="number">4</span>];</span><br><span class="line"><span class="type">int</span> u,maxans=<span class="number">-1</span>,nowscore;</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">getpoint_DJX</span><span class="params">(<span class="type">int</span> i,<span class="type">int</span> j)</span></span>{</span><br><span class="line"><span class="keyword">if</span>(i==<span class="number">1</span> <span class="keyword">or</span> j==<span class="number">1</span> <span class="keyword">or</span> i==<span class="number">9</span> <span class="keyword">or</span> j==<span class="number">9</span>)<span class="keyword">return</span> <span class="number">6</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(i==<span class="number">2</span> <span class="keyword">or</span> j==<span class="number">2</span> <span class="keyword">or</span> i==<span class="number">8</span> <span class="keyword">or</span> j==<span class="number">8</span>)<span class="keyword">return</span> <span class="number">7</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(i==<span class="number">3</span> <span class="keyword">or</span> j==<span class="number">3</span> <span class="keyword">or</span> i==<span class="number">7</span> <span class="keyword">or</span> j==<span class="number">7</span>)<span class="keyword">return</span> <span class="number">8</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(i==<span class="number">4</span> <span class="keyword">or</span> j==<span class="number">4</span> <span class="keyword">or</span> i==<span class="number">6</span> <span class="keyword">or</span> j==<span class="number">6</span>)<span class="keyword">return</span> <span class="number">9</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">return</span> <span class="number">10</span>;</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">bool</span> <span class="title">cmp</span><span class="params">(countxy a,countxy b)</span></span>{</span><br><span class="line"><span class="keyword">return</span> a.sum<b.sum; </span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">getpoint_xy</span><span class="params">(<span class="type">int</span> i,<span class="type">int</span> j)</span></span>{</span><br><span class="line"><span class="keyword">if</span>(i<=<span class="number">3</span>){</span><br><span class="line"><span class="keyword">if</span>(j<=<span class="number">3</span>)<span class="keyword">return</span> <span class="number">1</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(j<=<span class="number">6</span>)<span class="keyword">return</span> <span class="number">2</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">return</span> <span class="number">3</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(i<=<span class="number">6</span>){</span><br><span class="line"><span class="keyword">if</span>(j<=<span class="number">3</span>)<span class="keyword">return</span> <span class="number">4</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(j<=<span class="number">6</span>)<span class="keyword">return</span> <span class="number">5</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">return</span> <span class="number">6</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">else</span>{</span><br><span class="line"><span class="keyword">if</span>(j<=<span class="number">3</span>)<span class="keyword">return</span> <span class="number">7</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">if</span>(j<=<span class="number">6</span>)<span class="keyword">return</span> <span class="number">8</span>;</span><br><span class="line"><span class="keyword">else</span> <span class="keyword">return</span> <span class="number">9</span>;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">dfs</span><span class="params">(<span class="type">int</span> p,<span class="type">int</span> score)</span></span>{</span><br><span class="line"><span class="keyword">if</span>(p==u){</span><br><span class="line"><span class="keyword">if</span>(score>maxans)maxans=score;</span><br><span class="line"><span class="keyword">return</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">9</span>;i++){</span><br><span class="line"><span class="keyword">if</span>(!x[s[p][<span class="number">0</span>]][i] <span class="keyword">and</span> !y[s[p][<span class="number">1</span>]][i] <span class="keyword">and</span> !all[s[p][<span class="number">3</span>]][i]){</span><br><span class="line">x[s[p][<span class="number">0</span>]][i]=y[s[p][<span class="number">1</span>]][i]=all[s[p][<span class="number">3</span>]][i]=<span class="number">1</span>;</span><br><span class="line"><span class="built_in">dfs</span>(p+<span class="number">1</span>,score+(s[p][<span class="number">2</span>]*i));</span><br><span class="line">x[s[p][<span class="number">0</span>]][i]=y[s[p][<span class="number">1</span>]][i]=all[s[p][<span class="number">3</span>]][i]=<span class="number">0</span>;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">Init</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"sudoku.in"</span>,<span class="string">"r"</span>,stdin);</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"sudoku.out"</span>,<span class="string">"w"</span>,stdout);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">9</span>;i++){</span><br><span class="line">data[i].rank=i;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">ReadData</span><span class="params">()</span></span>{</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">9</span>;i++){</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> j=<span class="number">1</span>;j<=<span class="number">9</span>;j++){</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d"</span>,&a[i][j]);</span><br><span class="line"><span class="keyword">if</span>(a[i][j]><span class="number">0</span>){</span><br><span class="line">nowscore+=a[i][j]*<span class="built_in">getpoint_DJX</span>(i,j);</span><br><span class="line">x[i][a[i][j]]=y[j][a[i][j]]=all[<span class="built_in">getpoint_xy</span>(i,j)][a[i][j]]=<span class="number">1</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">else</span> data[i].sum++;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="built_in">sort</span>(data+<span class="number">1</span>,data+<span class="number">10</span>,cmp);</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">OutPutAns</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d"</span>,maxans);</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">Work</span><span class="params">()</span></span>{</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=<span class="number">9</span>;i++){</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> j=<span class="number">1</span>;j<=<span class="number">9</span>;j++){</span><br><span class="line"><span class="keyword">if</span>(a[data[i].rank][j]==<span class="number">0</span>){</span><br><span class="line">s[u][<span class="number">0</span>]=data[i].rank,s[u][<span class="number">1</span>]=j;</span><br><span class="line">s[u][<span class="number">2</span>]=<span class="built_in">getpoint_DJX</span>(data[i].rank,j);</span><br><span class="line">s[u++][<span class="number">3</span>]=<span class="built_in">getpoint_xy</span>(data[i].rank,j);</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">Search</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">dfs</span>(<span class="number">0</span>,nowscore);</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">Init</span>();</span><br><span class="line"><span class="built_in">ReadData</span>();</span><br><span class="line"><span class="built_in">Work</span>();</span><br><span class="line"><span class="built_in">Search</span>();</span><br><span class="line"><span class="built_in">OutPutAns</span>();</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">} </span><br></pre></td></tr></table></figure><h1 id="视频版讲解"><a class="markdownIt-Anchor" href="#视频版讲解"></a> 视频版讲解</h1><iframe src="//player.bilibili.com/player.html?aid=328221966&bvid=BV19A411i7Uo&cid=192930996&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>]]></content>
<summary type="html">
<p>一道挺水的DFS。</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="搜索" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%90%9C%E7%B4%A2/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="NOIP" scheme="https://blog.pai233.top/tags/NOIP/"/>
</entry>
<entry>
<title>【来源未知】电压放大器(amp)</title>
<link href="https://blog.pai233.top/20211219/amp-solution-oi/"/>
<id>https://blog.pai233.top/20211219/amp-solution-oi/</id>
<published>2021-12-19T13:17:05.000Z</published>
<updated>2022-01-31T09:08:13.740Z</updated>
<content type="html"><![CDATA[<p>这道题没认真想,一开始还爆了空间。</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p>西西需要把输入的电压 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 伏通过一系列电压放大器放大成原来的 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span> 倍,然后输出。<br />西西现在手上有两种放大器:<br />第一种能够把X伏的电压放大成 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi>X</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2X-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.76666em;vertical-align:-0.08333em;"></span><span class="mord">2</span><span class="mord mathdefault" style="margin-right:0.07847em;">X</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 伏<br />第二种能够把X伏的电压放大成 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi>X</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2X+1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.76666em;vertical-align:-0.08333em;"></span><span class="mord">2</span><span class="mord mathdefault" style="margin-right:0.07847em;">X</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span> 伏<br />放大器是串联(即按顺序放在一条线路上)的。<br />现在西西手上有用不完的放大器,他希望能组出一个电路,使用数量最少的放大器,使得电压被放大了刚好 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span> 倍。</p><h1 id="方法"><a class="markdownIt-Anchor" href="#方法"></a> 方法</h1><h2 id="bfsre-50分"><a class="markdownIt-Anchor" href="#bfsre-50分"></a> BFS(RE 50分)</h2><h3 id="思路"><a class="markdownIt-Anchor" href="#思路"></a> 思路</h3><p>将两种操作分别添加进队列,找到合适答案后跳出。</p><h3 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="keyword">struct</span> <span class="title class_">data</span>{</span><br><span class="line"><span class="type">unsigned</span> <span class="type">long</span> <span class="type">long</span> which,vol;</span><br><span class="line">data *prev;<span class="comment">//找他的上一个电压放大器</span></span><br><span class="line">}QUEUE[<span class="number">5000005</span>];</span><br><span class="line"><span class="type">int</span> head=<span class="number">0</span>,tail=<span class="number">2</span>;</span><br><span class="line"><span class="type">unsigned</span> <span class="type">long</span> <span class="type">long</span> ANSQUEUE[<span class="number">5000005</span>];</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">GetAnswerQueue</span><span class="params">()</span></span>{<span class="comment">//获取答案</span></span><br><span class="line">data *now=&QUEUE[tail];</span><br><span class="line"><span class="type">int</span> len=<span class="number">0</span>;</span><br><span class="line"><span class="keyword">while</span>(now!=<span class="literal">NULL</span>){</span><br><span class="line">len++;</span><br><span class="line">ANSQUEUE[len]=now->which;<span class="comment">//指针访问</span></span><br><span class="line">now=now->prev;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">return</span> len;</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">void</span> <span class="title">Output</span><span class="params">(<span class="type">int</span> len)</span></span>{<span class="comment">//输出答案</span></span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d\n"</span>,len<span class="number">-1</span>);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=len<span class="number">-1</span>;i>=<span class="number">1</span>;i--){</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%lld "</span>,ANSQUEUE[i]);</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"amp.in"</span>,<span class="string">"r"</span>,stdin);</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"amp.out"</span>,<span class="string">"w"</span>,stdout);</span><br><span class="line"><span class="type">int</span> n;</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line">QUEUE[<span class="number">1</span>].vol=<span class="number">1</span>;</span><br><span class="line">QUEUE[<span class="number">1</span>].which=<span class="number">0</span>;</span><br><span class="line">QUEUE[<span class="number">1</span>].prev=<span class="literal">NULL</span>;<span class="comment">//头结点没有上一个</span></span><br><span class="line"><span class="keyword">while</span>(head<tail){</span><br><span class="line">head++;</span><br><span class="line"><span class="keyword">if</span>(QUEUE[head].vol>n)<span class="keyword">break</span>;<span class="comment">//目前数据超过了N</span></span><br><span class="line">QUEUE[tail].vol=QUEUE[head].vol*<span class="number">2</span><span class="number">-1</span>;</span><br><span class="line">QUEUE[tail].which=<span class="number">1</span>;</span><br><span class="line">QUEUE[tail].prev=&QUEUE[head];</span><br><span class="line"><span class="keyword">if</span>(QUEUE[tail].vol==n){</span><br><span class="line"><span class="type">int</span> len=<span class="built_in">GetAnswerQueue</span>();</span><br><span class="line"><span class="built_in">Output</span>(len);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br><span class="line">tail++;</span><br><span class="line">QUEUE[tail].vol=QUEUE[head].vol*<span class="number">2</span>+<span class="number">1</span>;</span><br><span class="line">QUEUE[tail].which=<span class="number">2</span>;</span><br><span class="line">QUEUE[tail].prev=&QUEUE[head];</span><br><span class="line"><span class="keyword">if</span>(QUEUE[tail].vol==n){</span><br><span class="line"><span class="type">int</span> len=<span class="built_in">GetAnswerQueue</span>();</span><br><span class="line"><span class="built_in">Output</span>(len);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br><span class="line">tail++;</span><br><span class="line">}</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"No solution"</span>);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h2 id="判断奇偶性ac-100分"><a class="markdownIt-Anchor" href="#判断奇偶性ac-100分"></a> 判断奇偶性(AC 100分)</h2><h3 id="思路-2"><a class="markdownIt-Anchor" href="#思路-2"></a> 思路</h3><p>由于能够出现答案的 <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span> 都是奇数,所以提前特判,然后倒推。</p><h3 id="代码-2"><a class="markdownIt-Anchor" href="#代码-2"></a> 代码</h3><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="type">int</span> ans[<span class="number">1008616</span>];</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"amp.in"</span>,<span class="string">"r"</span>,stdin);</span><br><span class="line"><span class="built_in">freopen</span>(<span class="string">"amp.out"</span>,<span class="string">"w"</span>,stdout);</span><br><span class="line"><span class="type">unsigned</span> <span class="type">long</span> <span class="type">long</span> n;</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%lld"</span>,&n);</span><br><span class="line"><span class="keyword">if</span>(n%<span class="number">2</span>==<span class="number">0</span>){</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"No solution"</span>);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">while</span>(n!=<span class="number">1</span>){</span><br><span class="line"><span class="keyword">if</span>(((n<span class="number">-1</span>)/<span class="number">2</span>+<span class="number">1</span>)%<span class="number">2</span>==<span class="number">1</span>)n=(n+<span class="number">1</span>)/<span class="number">2</span>,ans[++ans[<span class="number">0</span>]]=<span class="number">1</span>;</span><br><span class="line"><span class="keyword">else</span> n=(n<span class="number">-1</span>)/<span class="number">2</span>,ans[++ans[<span class="number">0</span>]]=<span class="number">2</span>;</span><br><span class="line">}</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d\n"</span>,ans[<span class="number">0</span>]);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=ans[<span class="number">0</span>];i>=<span class="number">1</span>;i--)<span class="built_in">printf</span>(<span class="string">"%d "</span>,ans[i]);</span><br><span class="line">} </span><br></pre></td></tr></table></figure><p>这道题明显一开始想复杂了,没有细推数据,下次还是要注意。</p>]]></content>
<summary type="html">
<p>这道题没认真想,一开始还爆了空间。</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="数论" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%95%B0%E8%AE%BA/"/>
<category term="来源未知" scheme="https://blog.pai233.top/tags/%E6%9D%A5%E6%BA%90%E6%9C%AA%E7%9F%A5/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
</entry>
<entry>
<title>【NOIP2004 普及组T2】花生采摘</title>
<link href="https://blog.pai233.top/20211114/noip2004pj-t2/"/>
<id>https://blog.pai233.top/20211114/noip2004pj-t2/</id>
<published>2021-11-14T02:35:35.000Z</published>
<updated>2022-01-31T09:09:11.238Z</updated>
<content type="html"><![CDATA[<p>这道题的核心是曼哈顿距离。</p><span id="more"></span><h1 id="题目详情"><a class="markdownIt-Anchor" href="#题目详情"></a> 题目详情</h1><p>鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!”。 鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>)。</p><p>有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”</p><p><img src= "/img/loading.gif" data-lazy-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhsAAAExCAIAAABamvcnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOx9d3wUZf7/MzPbWwpJKNITelNRhByiiKhnQUFAzjsVRPnpFbvCSz2wImI7XqKcdwpiOUDPs8DhCYpIs9CUIjU0gYT0bN+ZnXl+f7y/87yG3U2ym2wSgs/7D17LZvaZZ555nk8vAqWUcHBwcHBwNBpiS0+Ag4ODg+MsAecoHBwcHBzpAecoHBwcHBzpAecoHBwcHBzpgamlJ8DB0ZJIGJkiCELzz4SD4yyAwGO9ODg4ODjSAm714uDg4OBID7jVi+NXgbp18ZY1c3HLG8dZA85ROH69oJSCmoN8MyLOqTkHR8PQTByFe2s4WhYJdyClVNM0xk4opS3CS/jp4DgD0bCzwP0oHL9qCDpiPjfzHAjXkDjOCqQ/1otSqqqqyWSC9MePB8eZD1VVRVEUBEHTNFFsVjGLUhqNRkVRlCSpOe/LwZESZFk2mUyU0ro3apNYvWRZliQJRuqDBw9u3769Ke7CwZE8Eko20WiUEDJ48OCCggL232YWgzRNAxvbuXPnrl27JEmKRqOCIIiiyK1hHC0IQRAURZEkSRTF7OzswsJCURQ1TatH9KFNAE3TVFVVFIVS+sgjjzTXCnBwNASPPPIIpVRRlFAopGlaNBptikNRB1RVpZTOmzevpVeCgyMxLr74YkppMkcj/TpKOBw2m83MdDB69GhJkmw2m6qqab8XB0djIIpiJBIZNWoUIYRSajabVVWNRCIOh6PZ1BRKaTgcdjgcl1xyyaOPPmqxWFRVhZ5EuY7C0aKIRqMOhyMcDg8aNEhVVSjTdR+N9O/aSCQiCILFYolGo16v1+l0Wq3W9N6CgyONUBTF7/e73W6TySTLMqW0OXcsdBRYuvhJ4ThjEQqFbDZbvVav9OsosLsRQsBXoAqxGE0OjhZB/PYTBEFVVZhnzWYzLpAkqZk3qiAIJpOJEBKJRHB2BEGAr567UjhaHGAkqqqazWZKab1xK+nXUWRZBiNBxFckEqGU2my29N6FgyMlJNzngiB4vV5JkpxOZyQSAV+p3/eYboTDYU3THA6HpmmEEIhfPPSLo2URjUYVRbHb7QgeCYfDJpOpXkreJBzFZDKpqopwL8Rl1mt94+BoEcBpIYoidiz+28zUHHqSyWRi06CU8sh7jpYFXPGyLDscDlEUFUVJJsa9SfJR/m9oQxIybaFsZA6OlEANRVla5NYtdXcOjoRgqVpJXs/jSTg4ODg40gNehYWDg4ODIz3gHIWDg4ODIz3gHIWDg4ODIz3gHIWDg4ODIz3gHIWDg4ODIz3gHIWDg+NsA0p1tPQsfo3g0cMcHBxnFYw0jeXDxV/W4Lyf9I52loH3mefg4GjdiCHxTSclY+Q6xud8hXMUDg6OVgxjcw6W3c1qH6BaRxq1CuPtyOkdnTk7IdyPwsHBwcGRLnAdhYODoxWD6QfG4oExH9KoPRhv10S3aNXgnnkODo6zCsl45hvDALhnvg5wjnK2Yd++faqq9ujRw2w2sy/Rkpm33OD4laDeGtJHjx71er09evSw2WxoCYjTwaukNxKco7Q+sANw/Pjxffv2oaeZ2+3u06dPbm5ut27dSktLKysrjS1mQ6EQIcRsNsN1yc8Mx68HgUBg8+bNaGvmdDq7devWuXPnMWPGLF++/NChQ926dWNXRqNRQghaanI0DHztWh8YP/jqq68mT56cn58fjUaPHj360UcfjRs3zm63h8PhN9980+VyZWRk+Hy+rl27XnzxxaqqhsNhq9VKKWWdmzk4znocOnRo5MiRubm57du337Fjx6xZs5544gnIW4sXL+7evbvb7Uanteuvv57r8Y0EJyutDGiLCaaSkZFBCLn//vvvv/9+QkiHDh3WrVt34sQJk8m0ffv29957b+zYsffdd9+uXbsQ7GgymaLRKNfrOX5VAJO49tpr586dSwjp2LHjzz///OOPPxJC9u3bt2LFinHjxk2YMOGnn34ymUzcZtNIcI7SKgGWEA6HCSHoJksI+fvf/3799df/9re/zcnJGTNmzJIlSwghF1544d13341O0ZRSRVEkSeIchePXAzAJlqqyatWqCRMm9OzZs3fv3v379//ggw/MZnPHjh2feuqplp7p2QBu9Wp9iEajiqK4XC78d8mSJbD/Ll68eMqUKX//+987duw4fvz466+/vlOnTnfeeaeqqqxfNKxeXE3h+PVAEASLxbJ169by8nJCyIcffjhixIj3339/7Nixjz/++J49ezIzMx999FFN07gpOA2gHK0NsiwHAgFK6QcffMDe49SpUxctWhQOhymlH374ISHE4/Fs2bKFUhoKhfx+v6qqmqaFw+FoNAp9hYPj14CffvqJHZPf/va3ixYtOn78OKV07dq1nTt3JoQsW7aMUhqNRkOhUEtPttWD8+RWBkqpKIp2u50QMnz48NWrV0+bNo0Qcv3110+ePBn+xjVr1uDi559/fu7cuTabzW63a5omCAJMXlxB4fj1oHv37qtWrXr88ccJIYMHD548efI555xDCNm8eXNlZSUhZPHixffdd58kSVarFeo+R4PBo4dbHzRNI4SIorhp06Y5c+YcPnx479693bp169KlC6xbu3bteu+99zwez9q1a2fPnj148OCpU6dOmTLl/4QIUeTaPcdZDDgLKaWKothstgMHDkyfPv3kyZPff/99hw4dCgoKotGoKIobNmx44403evfuXVRUdPvttw8ZMuTyyy9/+umn+eloDLgfpZWBcQVCyMmTJ5cvX04IEQTh9ttv/+abb7788ktCiMfjeeWVV2w227Fjx2RZbt++/RVXXIHLBEGAssLVFI6zD9FoFHtbURSz2Ywor0Ag8PHHH+OCsWPHRiKRN998kxAiCMK//vUvk8lUXV0tCEI4HL711lu5N6WR4ByllUEQBFEUKaWCICATHjHBvXr1evDBBwsLC7du3frll196PJ5du3aNHz/+6quvfueddxwOB9WziDk74ThbARYiCAKMV2azmVJqzFjs1KnT9OnTI5HIe++9t3jx4qFDh5aVlf3mN78ZNGjQqlWr8vLyWmzqZws4R2l9UFUVagrCvcBXduzY0adPH5PJJAhCnz59XC4XDpLD4XA6naFQSBRFq9Xq9XrtdjtP4+I4W4GoE4vFIooiFA6r1WoymXBqfvzxxz179siyTCnt169fjx49CgoKzGazoih5eXmRSMRisXB5qzHgHKX1ATpKdXX1d999RwihlHbq1Onzzz9fuXLlnj17rFbrJ598cs455xw4cID9BPVXmGYDxtNyT8DB0SRA7Iksy4IgoDqRIAjr1q2DyuJ2u48ePTplypRTp04RQr744guv1+v1etnPzWZzOBxG2AtHw8A5SusDzklRUdH69etHjRolCMLdd989btw4QsiAAQN27dr11ltvEUIQxxIIBAghkiQhetjhcEBA4xyF4+wDglZQI9Xr9ebm5paWli5duvTyyy+PRqPXXnvtgw8+SAiZNGnSkSNHli9fvnr16lAopCgKCt9RSo31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THhTNpuN6FJzYyAIAhi/JEkWiwUvMY2dhtkRxlpJkuT3+30+H/6LDZOq2QPzBDeCvIi7oENMOBwOBAJoUdUYlYsRLswzFAqhFgDeTvz1KW1mHD2TySRJkt1udzgc4CWRSARPxIQz0MN6RkvhsVoOIDRoH4a3jq7DjacCoD5er1cURSTTWq1WVj8OxBr/hVaU/MihUAjEHWo1Gisx6oaupYIguFwuWJOSH9m4NZl8DUnf5XKZzeZIJGI2m61WKzPsJIOET8e0BGaOwAcISpB/QacwgeRvB/IHModVIoQEg0FBEGpqanCwIROl1AYUIgJeq6IoqOCEiXm9XpwKCMJGRt567V0AM7AwdqJpGnY10ZVgrElKiwmhIRAImEwm1l8SuwvLFQ6HrVZrw2TweLAWwjBuQ28Au2okjHODPmc2m0HrrVYr7oWdnNL6KIrCtByi29MY5cWymM1m2DxSWp94UwohxOfzYZ42mw2WNL/fzzQk9nSp3ks0gOjkBauBt6+qKmRuCBP1jJb8jVsQoA7hcHjfvn3/+c9/nnjiiaKionA4nKr8YqQgzDFAKc3IyAgGgx9//PE111wzatSopUuXVldXW61WJv5jAim9J4vFAi0E25dSumPHjpdffvn6669/5JFHfvjhB0EQysrKNE2DuJfSg8RsINALGB/ee++9a665Bladuvt31guIKmVlZV6v12azBYPBe++9t0ePHj169HjmmWdKSkrQ+1lRFDxsSvKvqqoOh4MQgkOI461p2tatW5csWXLFFVf8+9//ttlsqCab0soz2w4IKJjuxIkTBwwY0Ldv3759+55//vk9e/acPHkyWvtpp6PVsRaILJFIBFTA5/MdPXr022+/nTt37q5duyB622w20LiUVhLiFBOAwIO3bds2efLkIUOGvPnmmziGYDYNcGrGACMoivLee++NHj36oYceWrduHd4I83k0Znyq9+uUZXn9+vXjxo1bv349zqbJZGqAVMRmBV0QvDYUCj355JM9e/bs0aPH7bffvnv3brvdnrz6XtvModZD7xFF8eDBgx999NFtt9329NNPQ9qmunc21T3MHlkUxZkzZxYUFPTs2bNnz569evUqKCi45pprjh8/LopiMBjEBqt7tFbDUSilR44cWb169cMPP/z6668LguBwOBqzifECFEXBOVmzZs0DDzywb9++ffv2/elP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ssiKFSs6dOgA3QV0Cv7hKHJD+k12drbf758wYcItt9wil8sff/zxOXPmTJkyBaphIBB47bXX1qxZA6/JnXfe+be//U0URdiXmto8HSvrwK4Ij1FFRcWePXuuu+66oqKiH374wWKxwFiXQLSvD3imHpGK/ZAXJApg96NTR+FPMKs+/fTTOp3O6/WOHj1aLpfPmzevR48e+/fvz8rKOnTo0IsvvnjkyBFBEHQ63QcffJCfn+9yuQwGAwI6ZBIkgxzGGGLGoJumxEETAM2OlZAfRafTkUkQkZ/gZ0kOixW6XC5EvmEQnEm6YhB6oKhRXzIYYBATn/wLws9Eql4j3Uv8sJA2RCm4qVFKj9g0AJSJkifZ7/fbbLYPPvjg5MmTKNLQq1cvmIACgQBcI6jugLQp/n/5hKmlS5dqtVqj0XjkyJFnnnkms2vevXv3E088MWXKFMbYv/71rzfeeOPUqVMZHN/n840fP54xNnny5O3bt3/44YcZHFwUxWXLli1atKigoKBz584nTpx49tlnMzv+zp07L7roIsbY5s2bX3rppbKysgwODn1x9uzZjLFFixb985///OyzzzI4viiKs2bNUigUPXv23LFjx8yZM6P+Gqmnt0IGATalqIlwU4LBYE1Njcfj+de//vXtt9+KojhgwADG2IkTJ0RRRKCd3++HUTRJuO6669atW5fZVxBF0e12z5w5c9q0adipr776atOmTRmfxWaz9e3bN1Oj7du3jzF211138V9eddVV+/bty9QUUTB//vxZs2bx3xQVFRUXF2dq/H379l111VWZGi0WLr/88t27d4t17wVR9QTQfH6Ubdu2de3aNScnB2JLWKo7gsgrmUym1WqdTiecK2TrJF89+Mq0adM++uij7du3v/zyy23btp09e3aUq5lckUkuDDYHeGVNJtOuXbu++OILxtjbb799xRVXvPPOOzabTafTIS4efiAy0DFJYSSthUmyA0UZuVwuZHK43W6dTgff5pYtW7p27apQKP76179CqYIlHVvCJLlGiBfLGCV4EoVSqVQWi2XWrFlI/XvzzTfz8/NnzZoFiSkZ/FBkGjQVURRhAkK38FAolJ2d3aZNm2PHjr388sv9+/f/xz/+gagku90OU5XdbkesHavr+6kP8xqNJhAIIEgMfo5XXnmFMfbRRx+NGzfO4/Fs3rwZHrWo5DhBilSO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PBQKXbp0CcVMX3755Xvvvfe777677bbbbr311qKiIqaCjSib7fF4ZFlevXr1+PHjS0pKfvrppyFDhuzYsUMQBCSTTQuVOCnNWa5dAn+hrYxiroFA4NChQ5Ik5eTkvPjiiy1atDh37txTTz3Vvn17lIDky3kCFNZqtW63+/DhwxcvXnS5XFc970iaYlJao0qe+CiG7du333fffc2aNWvSpEmfPn2WLFkyZcqUJUuW2O12kiWMMbPZjKqF27dvf+yxx+68885z584988wzbrcb8Sx8lESarkhpiXLtEgVxQUhIksQYW7t2bc+ePTt37pyVldW1a9evvvrqo48++tOf/kQZNlHkAPgvY0yW5aKiotGjR//1r39larn1NOR1TVHMkOLK6Kr08NdCOAK43DN37twmTZocPnx4/Pjxly9fNpvNd999d0lJCT0MvAs53xhjdrv9lltu6dSpk9VqRfICKF41mjjrt0dpP8o1TXTxjSqSffTRRwMHDly4cOHcuXN37dpVv359u91eVFSUnZ2NVOcUQIx4IZPJNGvWrPXr17ds2fLIkSM4Kmm6piha/01rxNUj3OyBJPj888/LysqWLVs2ZsyYRx99NBQKDR06tHnz5s8///yJEycY57jCJa127drt3buXMXb+/Pmffvrp5ptvzs3NVdQsf1d3XL8iSkuUa5r49CG4SrJ58+Zdu3aNGzdu4cKFY8eOdbvdw4YN69ix42OPPXb27FmmShRUeQsEAoIg3Hjjje+9997+/ftffvnlqziWNKWppok3vpcsWfL222936dLlqaee6ty5c4cOHURRvPfee3v06IEHyATx+XwmkwkRw5cuXRoxYsT//u//fvrpp7feeqvX600HeiVEadl77RLuVSG9KClKY8aM6datW0lJyfjx45s0aTJ+/Pgvvvhi//79jz322LfffsvUc4I4MYQaP/LII71790ap47S2labfMFE1TMbYjz/+OHr06K+++mrp0qWfffZZ586dCwsLV65cOXr06JtuuompqBdyefj9fq1We+rUKYiTDh06NGrUCEYMhelfzYH9eihto1y7BIULqhMpSqFQaN68ec899xxjrHfv3lOnTl25cuWaNWs2bdq0Zs2aI0eO8PkIeKciJR+8mkNKU5pqkrDVIVfeeOON1q1bl5WVTZs2rWvXrvfcc08wGLz77rvvvvvuUaNGFRQUUI5ISlN74MCBdevW3X///R988EG9evUYYyaTCVlu06pYnJSWKNcuIXKR6iVDVCxYsMBms508eXL69Ol33HFH3759zWZzly5dunTpcuDAgSNHjkByoDYG5U9DEUDG6WVpQz5Nvz2CKQ+HIgLotVptaWnp0qVLx44dW69ePVw6oUx3TA2J1Gq1BQUFCxcuRM6VOXPmlJeXP/vss23btg2FQgjcv7pD+7VQWvBeu4TcD6Io8kWTnE4nYywrK0uW5dmzZ+/evfvy5ct4HkcIMZF03x6lKpnq5KdEk1dnSGlKU00SNjY2vNVqxb8zZ870eDwrV65s3Lgx7P6IiEeER/7yyy//+Mc/QqHQP/7xj7lz57777ruHDx9mjCHp6lUa0K+P0jbKtUt8fg4iyBWHw/H000+///77e/fuHTVqFK954V/kgoR04fOfQ66kbZQ0/SaJEtkxxh5//PGMjIxQKIRTEAqFpk+fLklSOBwuLCxkFW2UYDB41113bdiwAXGVAI3btm2rqJXI01dS4qS0RLl2CRKFstQB9n3wwQcRIC9JklarvXDhwqhRozwejyAIP/74I+PK8qCWBjlg/vznPz/55JPNmze/qmNKU5pqnPR6vVarfeKJJ9q0aYPs9FarFVlYgAMvWLBg/fr1UNdwQGRZdjgcFAbGE36SFidxUjplzbVL2Mcej0en04mi2L179927d3/66ad169aFsDGbzYFAADa7oiiTJ0/+17/+tWvXrlatWrlcLovFkr6DnabfFSGR3cmTJ0OhUIsWLSp77Pjx4x6P54YbbkDWljSlkNIS5dolRVFgsBsMhmAwKElSKBTKycmpTEg4nU7kgjQajbIs+/1+k8mUhoDT9LsiqqnMVFyLiDJypg9FzVFaoly7FAwGZVnGDSxKtV2F2YFYYUVRvF6v2WxGQbq0Fpam3w8hUY0gCC6XC/WBPB4PXPTwIMJlotfry8vLjUZjOsNKyiktUa5dQjp6fEZ6R/jbq6icgSKm+BV0sXQKrzT9figYDCpqXXdBEKBj0f+iZjB8kzHDXtKUPP0/aGyAJQYlJyoAAAAASUVORK5CYII=" alt="" /></p><p>我们假定多多在每个单位时间内,可以做下列四件事情中的一件:</p><blockquote><p>1.从路边跳到最靠近路边(即第一行)的某棵花生植株;</p></blockquote><blockquote><p>2.从一棵植株跳到前后左右与之相邻的另一棵植株;</p></blockquote><blockquote><p>3.采摘一棵植株下的花生;</p></blockquote><blockquote><p>4.从最靠近路边(即第一行)的某棵花生植株跳回路边。</p></blockquote><p>现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?注意可能只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。 例如在图2所示的花生田里,只有位于<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mn>2</mn><mo separator="true">,</mo><mn>5</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mo stretchy="false">(</mo><mn>3</mn><mo separator="true">,</mo><mn>7</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mo stretchy="false">(</mo><mn>4</mn><mo separator="true">,</mo><mn>2</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mo stretchy="false">(</mo><mn>5</mn><mo separator="true">,</mo><mn>4</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(2, 5), (3, 7), (4, 2), (5, 4)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mopen">(</span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">7</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mopen">(</span><span class="mord">4</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mopen">(</span><span class="mord">5</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">4</span><span class="mclose">)</span></span></span></span>的植株下长有花生,个数分别为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>13</mn><mo separator="true">,</mo><mn>7</mn><mo separator="true">,</mo><mn>15</mn><mo separator="true">,</mo><mn>9</mn></mrow><annotation encoding="application/x-tex">13, 7, 15, 9</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="mord">1</span><span class="mord">3</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">7</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">5</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">9</span></span></span></span>。沿着图示的路线,多多在<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>21</mn></mrow><annotation encoding="application/x-tex">21</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">1</span></span></span></span>个单位时间内,最多可以采到<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>37</mn></mrow><annotation encoding="application/x-tex">37</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">3</span><span class="mord">7</span></span></span></span>个花生。</p><h1 id="做法"><a class="markdownIt-Anchor" href="#做法"></a> 做法</h1><p>曼哈顿距离跳到下一植株,同时要注意第<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>步时可以直接跳过去。</p><h1 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="keyword">struct</span> <span class="title class_">peanuts</span>{</span><br><span class="line"><span class="type">int</span> x,y,time,total;</span><br><span class="line">}PEANUTS[<span class="number">1000005</span>];</span><br><span class="line"><span class="function"><span class="type">bool</span> <span class="title">cmp</span><span class="params">(peanuts a,peanuts b)</span></span>{</span><br><span class="line"><span class="keyword">return</span> a.total>b.total;</span><br><span class="line">}</span><br><span class="line"><span class="type">int</span> a[<span class="number">1005</span>][<span class="number">1005</span>],PEANUTS_TOTAL,tmp,ans;</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"><span class="type">int</span> m,n,k;</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d%d%d"</span>,&m,&n,&k);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=m;i++){</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> j=<span class="number">1</span>;j<=n;j++){</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%d"</span>,&a[i][j]);</span><br><span class="line"><span class="keyword">if</span>(a[i][j]><span class="number">0</span>){</span><br><span class="line">PEANUTS_TOTAL++;</span><br><span class="line">PEANUTS[PEANUTS_TOTAL].total=a[i][j];</span><br><span class="line">PEANUTS[PEANUTS_TOTAL].x=i;</span><br><span class="line">PEANUTS[PEANUTS_TOTAL].y=j;</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line">}</span><br><span class="line"><span class="built_in">sort</span>(PEANUTS+<span class="number">1</span>,PEANUTS+PEANUTS_TOTAL+<span class="number">1</span>,cmp);</span><br><span class="line"><span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">1</span>;i<=PEANUTS_TOTAL;i++){</span><br><span class="line">tmp=PEANUTS[i].x;</span><br><span class="line"><span class="keyword">if</span>(i==<span class="number">1</span>)PEANUTS[i].time=PEANUTS[i].x+<span class="number">1</span>;</span><br><span class="line"><span class="keyword">else</span> PEANUTS[i].time=PEANUTS[i<span class="number">-1</span>].time+<span class="built_in">abs</span>(PEANUTS[i].x-PEANUTS[i<span class="number">-1</span>].x)+<span class="built_in">abs</span>(PEANUTS[i].y-PEANUTS[i<span class="number">-1</span>].y)+<span class="number">1</span>;</span><br><span class="line"><span class="keyword">if</span>(PEANUTS[i].time+tmp<=k)ans+=PEANUTS[i].total;</span><br><span class="line">}</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%d"</span>,ans);</span><br><span class="line"><span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>这道题的核心是曼哈顿距离。</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="模拟" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%A8%A1%E6%8B%9F/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="NOIP" scheme="https://blog.pai233.top/tags/NOIP/"/>
</entry>
<entry>
<title>【NOIP1999 普及组T1】 Cantor 表</title>
<link href="https://blog.pai233.top/20211014/noip1999pj-t1/"/>
<id>https://blog.pai233.top/20211014/noip1999pj-t1/</id>
<published>2021-10-14T13:30:52.000Z</published>
<updated>2022-01-31T09:09:08.127Z</updated>
<content type="html"><![CDATA[<p>一道水模拟,可以直接算。但菜鸡不会……</p><span id="more"></span><h1 id="题目大意"><a class="markdownIt-Anchor" href="#题目大意"></a> 题目大意</h1><p>原题导航:<a href="https://www.luogu.com.cn/problem/P1014">https://www.luogu.com.cn/problem/P1014</a></p><p>一个表格:<br /><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mi mathvariant="normal">/</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">1/1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">/</span><span class="mord">1</span></span></span></span> , <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mi mathvariant="normal">/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">1/2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">/</span><span class="mord">2</span></span></span></span> , <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mi mathvariant="normal">/</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">1/3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">/</span><span class="mord">3</span></span></span></span> , <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mi mathvariant="normal">/</mi><mn>4</mn></mrow><annotation encoding="application/x-tex">1/4</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">/</span><span class="mord">4</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn><mi mathvariant="normal">/</mi><mn>5</mn></mrow><annotation encoding="application/x-tex">1/5</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">/</span><span class="mord">5</span></span></span></span> …</p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi mathvariant="normal">/</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">2/1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord">/</span><span class="mord">1</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi mathvariant="normal">/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">2/2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord">/</span><span class="mord">2</span></span></span></span> , <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi mathvariant="normal">/</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">2/3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord">/</span><span class="mord">3</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn><mi mathvariant="normal">/</mi><mn>4</mn></mrow><annotation encoding="application/x-tex">2/4</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord">/</span><span class="mord">4</span></span></span></span>…</p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>3</mn><mi mathvariant="normal">/</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">3/1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">3</span><span class="mord">/</span><span class="mord">1</span></span></span></span> , <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>3</mn><mi mathvariant="normal">/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">3/2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">3</span><span class="mord">/</span><span class="mord">2</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>3</mn><mi mathvariant="normal">/</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">3/3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">3</span><span class="mord">/</span><span class="mord">3</span></span></span></span>…</p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>4</mn><mi mathvariant="normal">/</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">4/1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">4</span><span class="mord">/</span><span class="mord">1</span></span></span></span>, <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>4</mn><mi mathvariant="normal">/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">4/2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">4</span><span class="mord">/</span><span class="mord">2</span></span></span></span>…</p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>5</mn><mi mathvariant="normal">/</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">5/1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">5</span><span class="mord">/</span><span class="mord">1</span></span></span></span>…</p><p>按照Z字型排列,即:</p><p><img src= "/img/loading.gif" data-lazy-src="https://i.loli.net/2021/10/14/mkMv2IXqpuPY6LB.png" alt="image.png" /></p><p>问第<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span>项是什么。</p><h1 id="做法"><a class="markdownIt-Anchor" href="#做法"></a> 做法</h1><p>这样的表格比较难看,我们先把它转换一下:</p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mn>1</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mo separator="true">,</mo><mfrac><mn>2</mn><mn>1</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{2},\frac{2}{1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>3</mn><mn>1</mn></mfrac><mo separator="true">,</mo><mfrac><mn>2</mn><mn>2</mn></mfrac><mo separator="true">,</mo><mfrac><mn>1</mn><mn>3</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{3}{1},\frac{2}{2},\frac{1}{3}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac><mo separator="true">,</mo><mfrac><mn>2</mn><mn>3</mn></mfrac><mo separator="true">,</mo><mfrac><mn>3</mn><mn>2</mn></mfrac><mo separator="true">,</mo><mfrac><mn>4</mn><mn>1</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{4},\frac{2}{3},\frac{3}{2},\frac{4}{1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></p><p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi><mi mathvariant="normal">.</mi></mrow><annotation encoding="application/x-tex">...</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.10556em;vertical-align:0em;"></span><span class="mord">.</span><span class="mord">.</span><span class="mord">.</span></span></span></span></p><p>这样将每一行都分离了出来,可以发现,每行的数的数量形成了等差数列。第一行有<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>个数,第二行有<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>2</mn></mrow><annotation encoding="application/x-tex">2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span></span></span></span>个数……</p><p>那么,我们就要将第<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi></mrow><annotation encoding="application/x-tex">N</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.10903em;">N</span></span></span></span>项所在行找出来:</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> add=<span class="number">1</span>;</span><br><span class="line"><span class="keyword">while</span>(n>add){</span><br><span class="line"> n-=add;<span class="comment">//倒数第几个</span></span><br><span class="line"> add++;<span class="comment">//第几行,也表示当前行有几个</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>当然,这个可以直接算出来,没有必要暴力枚举,但数据太水了,依旧可以过。</p><p>知道它是第几行的,我们就要看他是什么了。不难发现,当<code>add</code>是奇数的时候,<code>add</code>行<strong>分母</strong>依次为从<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>递增到<code>add</code>的数列,<strong>分子</strong>为从<code>add</code>递减至<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>的数列;而当<code>add</code>是偶数的时候,<code>add</code>行<strong>分子</strong>依次为从<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>递增到<code>add</code>的数列,<strong>分母</strong>为从<code>add</code>递减至<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>的数列。</p><p>可以得到以下的代码:</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//add为当前行数的数量,n是倒数第几个,最后别忘了+1</span></span><br><span class="line"><span class="comment">//可以自己算算看看</span></span><br><span class="line"><span class="keyword">if</span>(add%<span class="number">2</span>==<span class="number">1</span>){</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d/%d"</span>,add-n+<span class="number">1</span>,n);</span><br><span class="line">}<span class="keyword">else</span>{</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d/%d"</span>,n,add-n+<span class="number">1</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>完整AC代码:</p><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><bits/stdc++.h></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> std;</span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> <span class="type">int</span> n;</span><br><span class="line"> <span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line"> <span class="type">int</span> add=<span class="number">1</span>;</span><br><span class="line"> <span class="keyword">while</span>(n>add){</span><br><span class="line"> n-=add;</span><br><span class="line"> add++;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span>(add%<span class="number">2</span>==<span class="number">1</span>){</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d/%d"</span>,add-n+<span class="number">1</span>,n);</span><br><span class="line"> }<span class="keyword">else</span>{</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d/%d"</span>,n,add-n+<span class="number">1</span>);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>一道水模拟,可以直接算。但菜鸡不会……</p>
</summary>
<category term="算法学习" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/"/>
<category term="搜索" scheme="https://blog.pai233.top/categories/%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0/%E6%90%9C%E7%B4%A2/"/>
<category term="OI" scheme="https://blog.pai233.top/tags/OI/"/>
<category term="C++" scheme="https://blog.pai233.top/tags/C/"/>
<category term="题解" scheme="https://blog.pai233.top/tags/%E9%A2%98%E8%A7%A3/"/>
<category term="NOIP" scheme="https://blog.pai233.top/tags/NOIP/"/>
</entry>
</feed>