1. ã¯ããã«
ããã«ã¡ã¯ã髿 ¡ 2 幎çã®E869120ã§ãã
ç§ã¯ãããã°ã©ãã³ã°ã®äžã§ãç«¶æããã°ã©ãã³ã° (ç«¶ãã) ã奜ãã§ãAtCoderã»CodeForcesã»åœéæ
å ±ãªãªã³ããã¯ã»ããœã³ã³ç²ååãªã©ã®å皮倧äŒã»ã³ã³ãã¹ãã«åºå ŽããŠããŸãã
ããŠãç«¶ããããã£ãŠãã人ã®äžã§ã¯ã
äœåãããããã©ãåå¿è ãªã®ã§äœåãæ¬åœã«ã§ããã®ãäžå®ã ããã
ãšãã£ãèããã
åé¡ã¯æãã€ãããã©ãäœåã®æ¹æ³ããã¯ããã¯ãåãããªãããäœåã§ããå°ã£ãŠããŸãããã
ãšãã£ãèããè¿å¹Žå€ãèŠåããããŸãã1 ããã«ã€ããŠãã誰ã§ãæ°è»œã«ç«¶ããäœåãã§ããããã«ãããïŒããšæããç§ã¯æ¬èšäºãæžãããšã«ããŸããã
ä»åã¯ãç«¶æããã°ã©ãã³ã°ã®äžçã§ãäœåãšåºé¡æºåãããæ¹æ³ã«ã€ããŠè§£èª¬ããŸããåå¿è ã§ããããããã«è§£èª¬ããŸãã®ã§ãæ¯éãèªã¿ãã ããïŒ
察象ãšããèªè å±€
ãã®èšäºã¯ãç«¶æããã°ã©ãã³ã°ãçµéšããããšãããæ¹ãã¹ãŠã«èªãã§ããã ãããã§ããåœç¶ãç°ã³ãŒããŒããèµ€ã³ãŒããŒãŸã§å šéšå«ããŸããç«¶æããã°ã©ãã³ã°ããŸã ãã£ãããšãç¡ããšããæ¹ã¯ã以äžã® 2 èšäºãèªãã§ãç«¶æããã°ã©ãã³ã°ã仿¥ããå§ããŸãããã
- ç«¶æããã°ã©ãã³ã°ã£ãŠäœïŒ (ã¯ãããŠã®é«æ ¡çåã)
- AtCoder ã«ç»é²ãããæ¬¡ã«ããããš ïœ ããã ãè§£ãã°ååéããïŒéå»åç²Ÿéž 10 å ïœ
æ¬èšäºãçµããæ¬¡ã¯ïŒ
æ¬èšäºãèªã¿çµãã£ããã以äžã®ã³ã³ãã¹ããµã€ãã§äœåãããããšããå§ãããŸãã
yukicoder ã¯ãäœåã®ãã©ãããã©ãŒã ããã£ããæŽåãããŠãããããç°ã³ãŒããŒã»è¶ã³ãŒããŒãªã©ã®åå¿è
ã§ãåºé¡ãã§ããŸããå®éã«ãäœåè
ã®çŽ20%ãç·ã³ãŒããŒä»¥äžã§ããäœåãããã°ãCafeCoderãªã©ã§äœåããããšããå§ãã§ããïŒèšç«ããæ°ãæãªã®ã§ãŸã ãµãŒããŒã¯å®å®ããŠããŸãããïŒ

ç®æ¬¡
| ç« | ã¿ã€ãã« | åè |
|---|---|---|
| 1. | ã¯ããã« | |
| 2. | äœåã®åœ¹å²åæ ãšäœæ¥å·¥çš | äœåã®å šäœã®æµãã«ã€ããŠèª¬æããŸãïŒ |
| 3. | åé¡æäœæ | ããããã£ãããã©ããŒããŸãïŒ |
| 4. | ãã¹ãã±ãŒã¹äœæ | ããããã£ãããã©ããŒããŸãïŒ |
| 5. | ãã®ä»ãäœæ¥ã§ç¢ºèªããŠããã¹ã 6 ã€ã®ãã€ã³ã | 倱æã®åå ãšãªããããŸãæ°ã¥ããªããã€ã³ãã 6 å玹ä»ããŸãïŒ |
| 6. | ãããã« |
2. äœåã®åœ¹å²åæ ãšäœæ¥å·¥çš
ããŠãç«¶æããã°ã©ãã³ã°ã®åé¡ãäœããåºé¡ããããã«ã¯ãã©ã®ãããªå·¥çšãèžãŸãªããã°ãªããªãã®ã§ããããããã®å šäœçãªæµããçè§£ããŠããã ãããã«ããã®ç« ã§ã¯ä»¥äžã® 2 ç¹ã«ã€ããŠèª¬æããŸãã
2-1. 圹å²åæ
ç«¶ããã®äœåã«ã¯ã以äžã® 2 ã€ã®åœ¹å²ã®äººãæºãããŸãã
| åœ¹å² | äœãããã |
|---|---|
| writer | åé¡ã®åæ¡æ åœè ãå顿ã»ãã¹ãããŒã¿ãªã©ã®äœæãè¡ãã |
| tester | writer ã®åé¡ãè§£ããAC ããããããŠå顿ãããŒã¿ãæ¬åœã«æ£ããã確èªãè¡ãã |
| writer ã¯ãåºæ¬çã« 1 ã€ã®åé¡ã«ã€ã 1 åã§ããïŒå ±åäœåã®å Žåã¯äŸå€ã§ãããæ» å€ã«ç¡ãã§ãïŒ | |
| tester ã¯ã1 åã®ããšãå€ãã§ãããAtCoder ã®ã³ã³ãã¹ãçã§ã¯ 2 å以äžä»ãå ŽåããããŸããäŸãã°ãGigaCode 2019 ã®ãã¹ã¿ãŒã®æ°ã¯ 4 åã§ããã |
2-2. äœæ¥ã®æµã
ç«¶ããäœåã®äœæ¥å·¥çšïŒã¹ãããïŒã¯ã以äžã®ããã«ãªããŸãã

æ¬èšäºã§ã¯ã䞻㫠writer åŽãé¢ããäœæ¥ã«ã€ããŠèª¬æããŸãã
- 3 ç« ã§ã¯ãåé¡æäœæ (writer)
- 4 ç« ã§ã¯ããã¹ãããŒã¿äœæ (writer)
- 5 ç« ã§ã¯ãæçµç¢ºèªãšãã®ä»ã®ãã¯ãã㯠(writer/tester)
ã§è§£èª¬ããŸããæ¹æ³ãšãã¯ããã¯çãå«ãããã¹ãŠè§£èª¬ããŸãã
3. åé¡æäœæ
ç«¶ããã®ã³ã³ãã¹ãã«åºé¡ããããã«ã¯ããŸãåé¡æãæžãå¿ èŠããããŸããå顿ã¯ã
- ãèªåãçè§£ã§ãããã®ãã§ã¯ãªãããã»ãšãã© (95%以äž) ã®åå è ã«çè§£ã§ãããã®ã
ã§ããå¿ èŠããããŸãããã®ãããå顿ã¯åããããããªããã°ãªããŸãããã§ãäœåæªçµéšã®äººã¯ãã©ã®ãããªåé¡æãæžãã°ããã®ãããããªããšæããŸããããã§ã以äžã® 6 ç¹ã«åããŠèª¬æããããšæããŸãã
- å顿ã«å ¥ããã¹ãé ç®ãïŒãå顿
- å顿ã«å ¥ããã¹ãé ç®ãïŒãå¶çŽ
- å顿ã«å ¥ããã¹ãé ç®ãïŒãå ¥å
- å顿ã«å ¥ããã¹ãé ç®ãïŒãåºå
- å顿ã«å ¥ããã¹ãé ç®ãïŒãå ¥åäŸã»åºåäŸ
- åé¡æäœæã§ç¹ã«æ°ãä»ããã¹ã 7 ã€ã®ãã€ã³ã
3-1. å顿ã«å ¥ããã¹ãé ç®ãïœãå顿ãç·šïœ
å顿ã¯åºæ¬çã«ãæç« ãçãæ¹ããåå è ãçè§£ã«èŠããã確çãæžããããšãã§ããŸããç®å®ãšããŠã¯ã200 æå以å ã§ããå®éã«ãçŽè¿ 10 åã® AtCoder Beginner Contest ã§åºé¡ãããåé¡ã® 75% 以äžãã200 æå以å ã®å顿ãã§ã§ããŠããŸãããã®ããã«ãæ°åŒãªã©ãçšããŠãåãããšãéèŠã§ããé·ããªã£ãŠããŸãå Žåã¯ãããç®æ¡æžããªã©ãçšããŠããåãããããããããšãå¯èœã§ããè¯ãäŸãšããŠã¯ã
- AtCoder Beginner Contest 146 D - Coloring Edges on Tree â æç« ãå¿ èŠæå°éã«ãŸãšããããŠãã
- AtCoder Beginner Contest 143 D - Triangles â ç®æ¡æžãã广çã«äœ¿ãããŠãã
- 第6å ãã¯ã³ãŽããã®ææŠç¶ äºéž C - Cookie Distribution â æ°åŒã广çã«äœ¿ãããŠãã
åé¡ã«ã¹ããŒãªãŒçãä»ãããå Žåã¯ããå顿ããšããé ç®ã«ã¯å ¥ããããã¹ããŒãªãŒããšããå¥ã®é ç®ã«å ¥ããŸãããã
ãã ãããå®ç掻ã«å³ããå顿ã«ãããããå°åŠçã«ãçè§£ã§ãããããªåé¡æãæžãããããªã©ãšãã£ãçç±ã§ãã©ãããŠãé·ããªã£ãŠããŸãå ŽåããããŸããäŸãã°ã
- GigaCode 2019 H - è«çåè·¯ã®æ§æ
- ãç å宿2019ã第3æ¥ããç æ¯2019ã E - 倧ããªã¯ãªã¹ãã¹ãã¬ãŒã³ã
ãã®å Žåã¯ç¡çã«åãå¿ èŠããããŸããããã®ãããªé·ãå顿ã¯ããç®æ¡æžãã«ããããâ ã»â¡ã»â¢ã»âŠ ãšããããã«å ŽååãããŠæžãããå顿ãå ¥åäŸã«å³ãå ¥ããããªã©ãšããææ³ã䜿ããšãæ Œæ®µã«åããããããªããŸãã
3-2. å顿ã«å ¥ããã¹ãé ç®ãïœãå¶çŽãç·šïœ
å šãŠã®å ¥åããŒã¿ãå¶çŽæ¡ä»¶ãæºããããã«ããã£ããå¶çŽãä»ããŸããããç¹ã«ä»¥äžã® 3 ç¹ã«æ°ãä»ããŸãããã
- ã$N$ ãå¶æ°ã§ããããªã©ãšããç¹æ®ãªå¶çŽãå ¥ãå¿ããªã
- $0 \leq N$ã$1 \leq N$ã$2 \leq N$ ã®ã©ãã§ããããééããªã
- å ¥åãå šéšæŽæ°ã®å Žåããå ¥åã¯ãã¹ãп޿°ã§ããããæžãå¿ããªãïŒããã§ãªãå Žåããã$a, b, c$ ã¯å šéšæŽæ°ã§ããããªã©ãæžãïŒ
3-3. å顿ã«å ¥ããã¹ãé ç®ãïœãå ¥åãç·šïœ
以äžã®åœ¢åŒã«åããããšç°¡åã§ãã詳ããã¯ãéå»ã® AtCoder å ¬åŒã³ã³ãã¹ããªã©ã®åé¡ãèŠãããšã§ããããšæããŸãã
å ¥åã¯ä»¥äžã®åœ¢åŒã§æšæºå ¥åããäžããããã
(pre ã¿ã°ã䜿ããå ¥å圢åŒãæžã) â»HTMLã§åé¡æãæžãå Žå
3-4. å顿ã«å ¥ããã¹ãé ç®ãïœãåºåãç·šïœ
AtCoder 以å€ã§ã¯ãåºåã 1 è¡ã®å Žåã«ãæåŸã®æ¹è¡ãå¿ããªãããšããæžãã®ãå¿ããªãããã«ããŸããããäŸãã°ã以äžã®æç« ã¯å®åæã§ãã
åºåã 1 è¡ã®å Žå
1 è¡ã«ããããããããåºåããŠãã ããã
æåŸã«æ¹è¡ããŠãã ããã
åºåã 2 è¡ä»¥äžã®å Žå
$N$ (ãããã¯ãã®ä»ã®æ°åŒ) è¡ã«æž¡ã£ãŠåºåããŠãã ããã
$i$ è¡ç®ã«ããããããããåºåããŠãã ããã
ãªããAtCoder ã§ã¯åºæ¬çã«ã空çœåºåãã»æ¹è¡åºåãã®éãããç¡é§ãªç©ºçœæ¹è¡ãããŠãæ£è§£ãšå€å®ãããŸãããã®ããããæåŸã®æ¹è¡ãå¿ããªãããšããå顿äžã«æèšãããŠããªãå Žåãå€ãã§ãã
3-5. å顿ã«å ¥ããã¹ãé ç®ãïœãå ¥åºåäŸãç·šïœ
å ¥åºåäŸã®ç®çã®ãã¡äžã€ã¯ããç«¶æè ãåé¡ãçè§£ããå©ãã«ãªããããšã§ãããã®ãããå ¥åºåäŸã¯
- åºæ¬çã« 3 ã€ä»¥äžçšæãã¹ã
- ãã¡ 1 ã€ã¯å ¥åºåäŸã«å¯Ÿãã説æãæžãã¹ã
ã ãšæããŸããå®éã«ãçŽè¿ 10 åã® AtCoder Beginner Contest ã® CïœF åé¡ã®ãã¡ãå ¥åäŸã 3 ã€ä»¥äžããå²å㯠çŽ98% ã§ãããã®äžæ¹ã§ãå ¥åäŸã®æ°ãå€ããšãè§£æ³ãæšæž¬ãããŠããŸããããåé¡ããããŸããäŸãã°ã
ãã®åé¡ã¯ãçãã $\frac{N(N-1)}{2}$ ã§ããéåžžã«åçŽã§ãããããå€ãã®å ¥åäŸããããšãè§£æ³ãå ¥åäŸããæšæž¬ã§ãã人ãå€ãåºãŠããŸããŸãããã®ãããªå Žåã¯å ¥åäŸã®æ°ãå°ãªãããã®ãæã§ãã
3-6. ç¹ã«æ°ãä»ããã¹ã 7 ã€ã®ãã€ã³ã
æåŸã«ãåé¡æäœæäœæ¥ã«ãããŠãwriter / tester ã§ãæ°ã¥ããªããã©äžåã®åå ã«ãªããããïŒããšãããšãããäžäœ 7 é ç®ã玹ä»ããããšæããŸããå顿ã確èªããæã«ã以äžã® 7 ã€ã®é ç®ïŒç¹ã«äžäœ 4 é ç®ïŒãèŠããšãå€§å¹ ã«åãããããå顿ãã§ãããšæããŸãã
| é äœ | å 容 |
|---|---|
| 1äœ | å¶çŽã®ãšããã«ãå ¥åã¯ãã¹ãп޿°ããæèšããã |
| 2äœ | å顿ã»å¶çŽã»å ¥åºåäŸäžã®å€æ°ãééã£ãŠãªãã確èªãããäŸãã°ã$N$ ã $Q$ ã«ãªã£ãŠãªãããšãã$A_i$ ã $a_i$ ã«ãªã£ãŠãªãããšããå šéšç¢ºèªããã |
| 3äœ | å¶çŽãæ¬åœã«åã£ãŠãããã©ãã確èªããã$0 \leq N$ ã $1 \leq N$ ãã¯ãã¡ãããã³ã³ãã¹ãçŽåã«çªç¶å¶çŽã倿Žãããå Žåã¯ç¹ã«æ³šæã |
| 4äœ | ã§ããŸã調ïŒã§ãã調ãçµ±äžãããŠããã確èªããã |
| 5äœ | å ¥åäŸã«ååãªèª¬æãã€ããŠããã確èªããã |
| 6äœ | å¥èªç¹ãå顿äžã§çµ±äžãããŠããã確èªãããäŸãã°ããããããïŒïŒãã,.ãã® 3 éããæ··åšããŠããå Žåãããã |
| 7äœ | é·ãå顿ã«ã¯ãååãªå³ãä»ããŠããã確èªããã |
4. ãã¹ãã±ãŒã¹äœæ
ç«¶ããã®ã³ã³ãã¹ãã«åºé¡ããããã«ã¯ããã¹ãã±ãŒã¹ãäœãå¿ èŠããããŸãããã¹ãã±ãŒã¹ã¯ã倧ããåããŠãå ¥åããŒã¿ããåºåããŒã¿ãã® 2 çš®é¡ããããããããäœãå¿ èŠããããŸããä»åã¯ãåå¿è ã§ãç°¡åã«ãã¹ãã±ãŒã¹ãäœããããã«ã以äžã® 5 ç¹ã«åããŠèª¬æããããšæããŸãã
- å ¥åããŒã¿ã®äœãæ¹
- åºåããŒã¿ã®äœãæ¹
- ã©ã®ãããªãã¹ãã±ãŒã¹ãäœãã°ããã®ãïŒ
- ãã¹ãã±ãŒã¹äœæã§å°ããã¡ãª 5 ã€ã®ãã€ã³ã
- å ¥åããŒã¿ã»åºåããŒã¿ãçæã³ãŒãäŸ
4-1. å ¥åããŒã¿ã®äœãæ¹
åºæ¬çã«ãä¹±æ°ãªã©ãçšããŠãã¹ãã±ãŒã¹ãäœãããšãæšå¥šãããŸãã
äŸãã°ã©ã³ãã ãªãã¹ãã±ãŒã¹ãäœããããšããC++ ã®å Žå rand 颿° ã以äžã®ã³ãŒãããã«äœ¿ãããšãã§ããŸããïŒãªããrand 颿°ã¯ Visual Studio ã®å Žå $0$ ïœ $32767$ ãŸã§ã®å€ããåºãŠããªãã®ã§æ³šæãïŒ
// #include <ctime> ããã
srand((unsigned)time(NULL)); // å®è¡ããšã«åãä¹±æ°ãåºãªãããã«ããããŸããªã
int x = rand();
ãŸããçæãããå ¥åããŒã¿ããã¡ãã¡ã³ããŒã㊠txt 圢åŒã«è²Œãä»ããã®ã¯é¢åã ãšæãã®ã§ãC++ ã®å Žåããã¡ã€ã«å ¥åºåãšãããã®ããå§ãããŸããïŒä»¥äžã®ããã«ã§ããŸãïŒ
FILE *in = freopen("in1.txt", "w", stdout);
äžã®ãããªã³ãŒãã main 颿°å ã®å é ã«æžããšãcout ã§åºåããããã®ãå šéš in1.txt ã«æžã蟌ãŸããŸãããããããã¹ãã±ãŒã¹æ°ãšåãåæ°å®è¡ããã°ãå šéšã®å ¥åããŒã¿ãäœããŸããïŒfor æãåããŠäžæ°ã«æ°åã±ãŒã¹çæããæ¹æ³ãããã§ãããåæåãšãã®é¢ä¿ã§åå¿è ã«ã¯ããŸãå®å šã§ã¯ãªãã§ãïŒè©³ããã¯ãçæã³ãŒãäŸãã芧ãã ããã
4-2. åºåããŒã¿ã®äœãæ¹
ã¹ããã 1
ãŸããæ³å®è§£ãœãŒã¹ã³ãŒããäœããŸãããã
ã¹ããã 2
次ã«ãæ³å®è§£ãœãŒã¹ã³ãŒããšåãéå±€ã«ãin ãšãããã©ã«ããš out ãšãããã©ã«ããäœããin ã«å
šå
¥åããŒã¿ãã³ããŒããŸããããïŒäŸãã°äžã®å³ã ãšãmain.cpp ãšåãé局㫠in ãã©ã«ããš out ãã©ã«ãããããin ãã©ã«ãã«å
šå
¥åããŒã¿ãå
¥ã£ãŠããŸãïŒ

ã¹ããã 3
in1.txt ã«å¯Ÿããåºåãçæãããå Žåã¯ãæ³å®è§£ãœãŒã¹ã³ãŒãã® main 颿°ã®å
é ã«ã以äžã®ã³ãŒããæžããŸãããã
FILE *in = freopen("in\\in1.txt", "r", stdin);
FILE *out = freopen("out\\in1.txt", "w", stdout);
ãããå®è¡ãããšãout ãã©ã«ãã« in1.txt ãšãããã¡ã€ã«ãçæãããå ¥åããŒã¿ã«å¯Ÿããçããæžã蟌ãŸããŸããå®ã¯ freopen ã䜿ããšããã¹ãŠã® cin ã«å¯ŸããŠãã¡ã€ã«èªã¿èŸŒã¿ãã§ãããã¹ãŠã® cout ã«å¯ŸããŠãã¡ã€ã«æžã蟌ã¿ãã§ããã®ã§ããšãŠã䟿å©ã§ãã
ããã§ã¯ in1.txt ã§ã®åºåçææ¹æ³ã説æããŸããããããããã¹ãŠã®å ¥åããŒã¿ã«å¯ŸããŠè¡ãã°ãå šãã¹ãã±ãŒã¹ã«å¯ŸããåºåããŒã¿ãçæããããšãã§ããŸãã20 ã±ãŒã¹ä»¥äžããå Žåå°ãæéãããããããããŸãããããã®æ¹æ³ãæãå®å šã§ãã詳ããã¯ãçæã³ãŒãäŸãã芧ãã ããã
4-3. ã©ã®ãããªãã¹ãã±ãŒã¹ãäœãã°ããã®ãïŒ
ãã¹ãã±ãŒã¹ã匱ããšãæ¬åœã«ç°¡åãªåè§£æ³ãéã£ãŠããŸãå¯èœæ§ããããŸããã§ããã以äžã® 6 é ç®ãå«ããšãåè§£æ³ãéãå¯èœæ§ãå€§å¹ ã«æžããŸãã
[1] æå°ã±ãŒã¹
$N = 1$ ãªã©ã®ãå¶çŽæ¡ä»¶ãæºããäžã§æå°ã®ã±ãŒã¹ã¯å¿
ãçšæãã¹ãã§ãã
ã$N = 1$ ã®å Žååããå¿ããŠãŠ WA ããããšãã£ãã±ãŒã¹ã¯æ±ºããŠçãããããŸããã
[2] æå°ã±ãŒã¹ã«æºãããã®
$N = 2, 3, 4$ ãªã©ã®ã±ãŒã¹ãå
¥ããã¹ãã§ãã
å®éã«ãã$N = 2$ ã®ç¹å®ã®ã±ãŒã¹ã®ã¿ã§èª€è§£çãšãªãããšããã±ãŒã¹ãçãããªãã§ããéãæ°ãå°ãªãå Žåã¯ã$N$ ãäžå®ããå°ãããã¹ãã±ãŒã¹ãå
šéãïŒãããã¯å
šãã¿ãŒã³ïŒå
¥ããã®ãæã§ãã
[3] æå€§ã±ãŒã¹
$N \leq 10^{5}$ ã«å¯Ÿã㊠$80000$ ãšãã§ã¯ãªããæ¬åœã«æå€§ã®ã±ãŒã¹ã§ãã倧ããå
¥åããŒã¿ã¯ãå®è¡æéå¶éè¶
éïŒTLEïŒã®åå ãšãªãã®ã§ãå¿
ãå
¥ããã¹ãã§ãããªããæå€§ã±ãŒã¹ã«ã¯ã以äžã® 3 çš®é¡ãå
¥ããããšããªã¹ã¹ã¡ã§ãã
- ã©ã³ãã ã±ãŒã¹ïŒã©ã³ãã ã§èšç®æéãæãé·ããªãã®ã¯çãããªãïŒ
- $A_i, B_i$ ãªã©åçš®å€ãæå€§ãšãªã£ãŠããã±ãŒã¹
- å®è¡æéãæå€§ãšãªããããªã³ãŒããŒã±ãŒã¹ïŒæãä»ãã°ïŒ
[4] æå€§ã«è¿ãã©ã³ãã ã±ãŒã¹
$N \leq 10^{5}$ ãšãã«å¯Ÿã㊠$99999$ ãšã $98230$ ãšãã®ãæå€§ã«è¿ãã©ã³ãã ã±ãŒã¹ãå
¥ããã¹ãã§ããç¹ã«ä»¥äžã® 2 ã€ã®ãã¿ãŒã³ã®å Žåã¯å¿
é ã§ãã
- 1 ã€ã®å€ããå ¥åããªãåé¡ã®å ŽåïŒåã蟌ã¿ã§éãããå¯èœæ§ããããŸãïŒ
- $N$ ã®å€ãªã©ã®å¶å¥ã§ãå®è£ ã®æ¹éãå€ããå Žå
[5] <äžå¿> äžãããã®ã±ãŒã¹
ããäœããã°ããã£ãæ¹ãè¯ãã§ããç¡ããŠã圱é¿ã¯å°ãªãã§ãã
[6] <äžå¿> ã³ãŒããŒã±ãŒã¹
äœãã®ã¯é£ããã§ãããã³ãŒããŒã±ãŒã¹ãå
¥ãããšãåè§£æ³ãèœãšããããã§ããç¡ããŠã圱é¿ãå°ãªãããšãå€ãã§ããããã£ãæ¹ãè¯ãã§ããã³ãŒããŒã±ãŒã¹ã®äŸãšããŠã以äžã® 4 çš®é¡ãèããããŸãã
- $A_i$ ãªã©ãåçš®å€ãå šéš $1$ ã®ãã¹ãã±ãŒã¹
- $A_i$ ãªã©ãåçš®å€ãå šéš $0$ ã®ãã¹ãã±ãŒã¹
- $A_i$ ãªã©ã®å€ãå šéšç°ãªããã¹ãã±ãŒã¹ïŒçšã« TLE ã®åå ãšãªãããšããããŸãïŒ
- ãã®ä»ãtester ãæ³å®ããåè§£æ³ãèœãšããã¹ãã±ãŒã¹
4-4. ãã¹ãã±ãŒã¹äœæã§å°ããã¡ãª 5 ã€ã®ãã€ã³ã
ãã€ã³ã 1 ïœãã¹ãã±ãŒã¹ã®åæ°ïœ
ãã¹ãã±ãŒã¹ã®åæ°ã¯ãåºæ¬çã« 20ïœ30 åçšåºŠãæšå¥šãããŸããçšã« 200 å以äžäœã人ãããŸããããããããšãžã£ããžã«ãããæéãããã£ãŠããŸããyukicoder ãªã©ã®å Žåãžã£ããžãã¥ãŒãè©°ãŸãå¯èœæ§ããããŸããã³ãŒããŒã±ãŒã¹çãå€ããŠãã50ïœ70åçšåºŠãé床ãšããŸãããã2
ãã€ã³ã 2 ïœå
¥åºåããŒã¿ã®ãã¡ã€ã«åïœ
åºæ¬çã«ãå
¥åããŒã¿ãšåºåããŒã¿ã®ãã¡ã€ã«åã¯äžèŽããŠããªããã°ãªããªãããšãå€ãã§ããäŸãã°ãå
¥åãã¡ã€ã« in1.txt ã«å¯Ÿå¿ããåºåãã¡ã€ã«ã®åå㯠in1.txt ã§ããå¿
èŠããããŸããAtCoderã»yukicoder äž¡æ¹ããã§ãã
äžæ¹ã§ãHackerRank ã§åé¡ãäœãéã®ã¿äŸå€ã§ããHackerRank ã®å Žåã¯ãå
¥åãã¹ãã±ãŒã¹ãé ã« input00ãinput01ãinput02ã⊠åºåãã¹ãã±ãŒã¹ãé ã« output00ãoutput01ãoutput02ã⊠ãšãªã£ãŠããå¿
èŠãããã®ã§ã泚æããŠãã ããã
ãã€ã³ã 3 ïœãã¡ã€ã«å
¥åºåã Visual Studio ã§ãããšãïœ
ããããã¡ã€ã«å
¥åºåã Visual Studio ã§ãããïŒããšæã£ããšãã以äžã®ãããªãšã©ãŒãåºãããšããããŸãã
ãšã©ãŒ C4996 'freopen': This function or variable may be unsafe. Consider using freopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
ãã®ãšã©ãŒã解決ããããã«ã¯ãmain 颿°ã®åïŒinclude ããããããã£ãŠãããšããïŒã«ã以äžã®äžæã远å ããŸãããããããããšãæ£åžžã«ããã°ã©ã ãå®è¡ããããã¹ãã±ãŒã¹ãäœæãããŸãã
# pragma warning (disable: 4996)
ãã€ã³ã 4 ïœVisual Studio ã«ãããä¹±æ°ã«ã€ããŠïœ
C++ ã®æšæºã®ç°å¢ (GCC) ãçšãããšãrand() 颿°ã¯ $0$ ä»¥äž $2^{31}-1$ 以äžã®å€ãè¿ããŸããäžæ¹ã§ãVisual Studio ã®å Žåãrand() 颿°ã¯ $0$ ä»¥äž $32767$ 以äžã®å€ããè¿ããªãã®ã§ããäž¡æ¹ã®ç°å¢ã§æ£åžžã« $2^{31}-1$ çšåºŠä»¥äžã®ä¹±æ°ãçæããããã«ã¯ã以äžã®ãããªã³ãŒãã䜿ããŸããããïŒä»¥äžã®ã³ãŒãã§ã¯ $0$ ä»¥äž $2^{30}-1$ 以äžã®ä¹±æ°ãçæããŸãïŒ
int Rand() {
return (rand() % 32768) * 32768 + (rand() % 32768);
}
ãã€ã³ã 5 ïœå
¥åããŒã¿ã®çææ¹æ³ãæ®ãã¹ãïœ
çªç¶ãå¶çŽã tester ã®æèŠã«ããå€ããããªã©ãšããããšã¯äœåæºåã«ãããŠããèµ·ããããšã§ãããã®ãããå¶çŽã倿ŽãããŠããã察å¿ã§ããããã«ãäºãå
¥åããŒã¿ãçæãã颿°ãäœã£ãŠããã¹ãã§ãã詳ããã¯ãçæã³ãŒãäŸãåç
§ãããšåããããããšæããŸãã
4-5. å ¥åããŒã¿ã»åºåããŒã¿ãçæã³ãŒãäŸ
5. ãã®ä»ã確èªããŠããã¹ã 6 ã€ã®ãã€ã³ã
æåŸã«ãã³ã³ãã¹ããéå¬ãããšãã«ãåé¡ã®äžåãèµ·ããå¯èœæ§ãæžããããã«ã確èªããŠããã¹ããã€ã³ãã 6 åã玹ä»ããŸããå šéšãããšçžåœãªè² æ ã«ãªãã®ã§ãå šéšããå¿ èŠã¯ãããŸããããå€ãããã°ããã»ã©æå確çãäžãããŸãã
5-1. è§£æ³ããã¡ããšèšŒæããããš
è§£æ³ã¯ãã£ãã蚌æããŠããåºããŸãããã
蚌æã«äžå®ãããã®ãªãã°ã匷ã testerïŒç®å®ã¯éè²ä»¥äžïŒã«å³å¯ãªèšŒæãé Œãã®ã倧äºã§ãã
5-2. writer ãå¶çŽãã§ãã¯ãããããš
writer ãçæããã±ãŒã¹ãå®ã¯å¶çŽã«éåããŠãããããããŸããããšããããæåã«çæããå ¥åããŒã¿ã®å¶çŽéåã¯ããªãå€ããç«¶ããã®äœåã 3 幎ãã£ãŠããç§ã§ã 20% çšåºŠã®ç¢ºçã§ã±ãŒã¹çæãééããŸãããŸããAtCoder Beginner Contest 150 ã§ããD åé¡ã®äžéšã®ãã¹ãã±ãŒã¹ãå¶çŽãæºãããŠããªãã£ããããunrated ãšãªããŸããã
ãã®ãããwriter/tester äž¡æ¹ããå šãã¹ãã±ãŒã¹ãå¶çŽã®æ¡ä»¶ãæºãããŠããããããã§ãã¯ããããšãæšå¥šãããŸããæ¹æ³ã¯ãšãŠãç°¡åã§ãã
ã¹ããã1
å
šãã¹ãã±ãŒã¹ãã³ã³ãã¹ããµã€ãã« upload ããã
ã¹ããã2
å¶çŽéåã 1 ç®æã§ãããã°ã©ã³ã¿ã€ã ãšã©ãŒïŒREïŒãšãªãããã«ãæ³å®è§£ã«ä»¥äžã®ãããªãœãŒã¹ã³ãŒãïŒassert 颿°ïŒããã¹ãŠã®å¶çŽã«ã€ããŠè¿œå ããã
// äŸ 1. N > 400 ã®å Žåã©ã³ã¿ã€ã ãšã©ãŒãèµ·ãã
assert(N <= 400)
// äŸ 2. A[i] ã [1, 100] ã®ç¯å²ã«å
¥ã£ãŠããªãå Žåã©ã³ã¿ã€ã ãšã©ãŒãèµ·ãã
for (int i = 1; i <= N; i++) assert(1 <= A[i] && A[i] <= 100);
ã¹ããã3
ã¹ããã2ã§è¿œå ããããœãŒã¹ã³ãŒããæåºããACãåºãããã¹ãã±ãŒã¹ã®å¶çŽéåã«åé¡ãªããREãåºãããã¹ãã±ãŒã¹ã®å¶çŽéåã«åé¡ããã
5-3. ã¹ãã¬ã¹ãã¹ããããããšïŒäžçŽè 以äžåãïŒ
- writer ã®æ³å®è§£ãœãŒã¹ã³ãŒãããã°ã£ãŠããŸããtester ãåããã°ãèžãã
- writer ã®æ³å®è§£ãœãŒã¹ã³ãŒãããã°ã£ãŠããŸããtester ã®ç¢ºèªãã³ã³ãã¹ãã«éã«åããªãã£ã
- å®ã¯è§£æ³ã®èšŒæãééã£ãŠãã
ãªã©ãšãã£ãã±ãŒã¹ãå€ãèŠåããããŸããåå¿è ã«ã¯é£ãããããããŸããããå šæ¢çŽ¢ã $O(N^2)$ è§£æ³ãªã©ãèšç®æéãé ãå®è£ ã軜ãã¢ã«ãŽãªãºã ãæžãã$N=2ïœ20$ çšåºŠã®å°ããã©ã³ãã ã±ãŒã¹ïŒæ°äžã±ãŒã¹ïŒã§æ¯èŒãå šéšäžèŽããã調ã¹ãããšãã£ãææ³ã䜿ããšãç¢ºå®æ§ãäžãããŸãããããã¹ãã¬ã¹ãã¹ããšãããŸãã
ãªãã$N = 20$ ãšãããç¹å®ã® $N$ ã«ã€ããŠèª¿ã¹ãã®ã ãã§ã¯é§ç®ã§ããã$N = 2$ ã®ç¹å®ã®ã±ãŒã¹ã ã誀解çãšãªãããªã©ã¯ã¶ã©ã«ãããŸãããã®ããã$N = 1, 2, 3, 4, 6, 8, 10, 12, 15, 20, ...$ ãšãã£ãè€æ°ã® $N$ ã«å¯ŸããŠã¹ãã¬ã¹ãã¹ãããããããšãæšå¥šãããŸãã
5-4. åè§£æ³ãèœãšãããšïŒäžçŽè 以äžåãïŒ
åºæ¬çã«ãAtCoder 以å€ã®æ¥æ¬åœå
ã³ã³ãã¹ããµã€ãã§åºé¡ããå Žåã¯ãåè§£æ³ã AC ããããšã¯æ¯èŒçæ°ã«ãããªãå Žåãå€ãã§ãã
äžæ¹ã§ããå€ãã®äººãåè§£æ³ã§ AC ããã確çãæžããã«ã¯ã
- é©åœãªè²ªæ¬²ãªã©ã tester ãšååããŠæãã€ãã
- æãã€ããåè§£æ³ããã¹ãã¬ã¹ãã¹ããšåçãªææ³ãçšããŠæ¢çŽ¢ããããããèœãšãã±ãŒã¹ã 1 å以äžå ¥ããã
ãšããã®ãæã§ããïŒãªããå®ã¯åè§£æ³ã ãšæã£ãŠããè§£æ³ããã©ããªå ¥åããŒã¿ã«å¯ŸããŠãæ£ããåçãè¿ãããšãããã®ã§ã泚æããŸãããïŒ
5-5. å ¥åããŒã¿ã«ç¡é§ãªç©ºçœæ¹è¡ãç¡ãã®ã確ãããããšïŒã§ããã°ïŒ
- å®ã¯å ¥åããŒã¿ã®æåŸã®è¡ã«æ¹è¡ããªãã£ã
- å ¥åããŒã¿ã®äžéšã«ãç¡é§ãªç©ºçœããã£ã
ãªã©ãšãã£ãå ŽåãC++ ãªã©ã®ç«¶æããã°ã©ãã³ã°ã«ãããã¡ãžã£ãŒãªèšèªã§ã¯åé¡ãªãè§£ãããšãã§ããŸãããå€ãã®ãã€ããŒãªèšèªã§ã¯ãç©ºçœæ¹è¡ã®ãã¹ã®ããã§å
¥åãæ£ããèªã¿åãããWA ãªã©ã«ãªã£ãŠããŸãããšããããŸããå®éã« æè¡å®€å¥¥ããã°ã©ãã³ã°ã³ã³ãã¹ã #4 Day1 ã§ã¯ããã®åœ±é¿ã§ 3 åã«äžåãçºçããŸããã
AtCoder ã§ã¯ testlib.h ãªã©ãšãã䟿å©ãªããŒã«ãå©çšããŠããŸãããåå¿è äžçŽè ã«ã¯ïŒç°å¢æ§ç¯ããïŒããé£ãããšæãã®ã§ãæåã§ãå ¥åäŸããšããã®ä»æ°ã±ãŒã¹ã®äžã®äžéšåãããã§ãã¯ããã ãã§ãããã§ããããã ãã§ããã¹ãèµ·ãã確çã¯å€§å¹ ã«æžããŸããïŒAtCoder ã® writer ããããšã㯠testlib.h ã䜿ããŸãããïŒ3
5-6. 匷ã tester ã«é Œãããš
æ¢ã« AtCoder ã yukicoder ãªã©ã§äœåãçµéšããŠãã人ã¯ããã¯ããã®ãããªäœåæºåã«ãæ
£ããŠããŸãããã®ãããwriter ã®äœæ¥ã«äžå®ãããã°ãçµéšè
ã匷ã人ã«çžè«ããããšããå§ãããŸããçžè«ãããšãåé¡ã«äžåãèµ·ãã確çãæžãããã ãã§ãªããwriter äœæ¥ãã©ãé²ããŠããããªã©ã®ã¢ããã€ã¹ãããã ããå Žåãå€ãã§ãã
6. ãããã«
äœåã¯ãç«¶ããåå¿è
ã§ãããããšãã§ããŸãã
çããã®äžã«ããèå³ãããã°ãyukicoderãªã©ã®ã³ã³ãã¹ããµã€ãã§äœåãããããšããå§ãããŸãã仿¥ããã§ãã§ããŸããåé¡ãæãã€ãããããæºåããŠåºé¡ããã®ããªã¹ã¹ã¡ã§ãã
æåŸã«ãæ¬èšäºãå°ãã§ããç«¶ããäœåããããïŒããšããæ¹ã®åœ¹ã«ç«ã¡ãäœåè ãäžäººã§ãå¢ããããšãã§ãããªãã°ããããŠå°æ¥çã«ã¯ AtCoder ã® writer ãå¢ããããšãã§ãããªãã°ããšãŠãå¬ããæ°æã¡ã§ãã髿 ¡çãæžãèšäºã§ãã®ã§åããã«ããéšåãå€ãã£ãããšæãããŸãããæåŸãŸã§ãèªã¿ããã ãããããšãããããŸããã
-
æ¬èšäºã¯ããã®ãããªæèŠãæã€äººããèŠæãåãããããäœæãããŸãããäŸãã° @aoharu514 ããã® ãã€ãŒã ãªã©ã â©
-
çšã«ãAtCoder ã§ã¯ãã¹ãã±ãŒã¹ã 100 å以äžããåé¡ããããŸãããã ããã®ãããªåé¡ã®å€ãã¯ãé£æåºŠãé«ããå®è¡æéã 1 ïœ 2 ç§ãšçãã§ãããŸããäŸå€çã«ãæ¥æ¬æ å ±ãªãªã³ããã¯ã®åé¡ã¯ãã¹ãã±ãŒã¹æ°ãéåžžã«å€ããMountain Rescue Team ãªã©ãã¹ãã±ãŒã¹ 232 åãšãã£ãåé¡ããããŸãã â©
-
å®éã«ãAtCoder å ¬åŒã³ã³ãã¹ãã§ã¯ testlib.h ãçšããŠå¶çŽãã§ãã¯ããããšã矩ååãããŠããŸãããä»åã®èšäºã¯åå¿è 察象ãªã®ã§ãããŸã§ã¯æ±ããªãããšã«ããŠããŸãã â©