AtCoder Beginner Contest 331
ย - Last update: 2023-12-02

ABC 331 Upsolving

์ €๋ฒˆ์ฃผ ABC์—์„œ E๋ฒˆ์„ 1๋ถ„์ฐจ๋กœ ์ œ์ถœ ๋ชปํ•œ ์ดํ›„๋กœ ๋˜ ๊ณ ์งˆ๋ณ‘(๊ฒฝ๊ณ„์„ ์„ ๋ชป๋„˜๋Š” ๋ณ‘)์ด ๋„์ง€๋‚˜ ํ–ˆ๋Š”๋ฐ, ๋‹คํ–‰ํžˆ ๊ทธ๋ฆฐ์— ์•ˆ์ฐฉํ–ˆ๋‹ค.

  • ๋Œ€ํšŒ ์ฐธ๊ฐ€ ์œ ๋ฌด: Y
  • ์ตœ์ข… Performance: 1353 (Rank: 1461 / 10520)
  • Round ๋งํฌ: Top / Tasks
  • ๋ฌธ์ œ๋ณ„ ๊ฒฐ๊ณผ
ABCDEFG
AC
AC
AC
AC
AC
--

C ์—์„œ upper_bound ์‚ฌ์šฉ์‹œ end check๋ฅผ ํ•˜์ง€ ์•Š์•„์„œ 3ํ‹€์„ ํ–ˆ๋‹ค. CPH๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋™์ž‘ํ•˜์ง€ ์•Š์•„์„œ ์ข€ ๋ฉ˜๋ถ•์ด์—ˆ๋Š”๋ฐ, ๊ทธ๋Ÿฐ๊ฑฐ ์น˜๊ณ  ์ž˜ ์ณค๋‹ค๋Š” ๊ฐœ์ธ์ ์ธ ํ‰๊ฐ€.

A - Tomorrow

ํ•˜๋ฃจ ๋’ค์˜ ๋‚ ์งœ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ. ๋‹ค์Œ ๋‹ฌ๋กœ ๋„˜์–ด๊ฐ€๋Š” case, ๋‹ค์Œ ํ•ด๋กœ ๋„˜์–ด๊ฐ€๋Š” case ๋ชจ๋‘ ๋นผ๋จน์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

B - Buy One Carton of Milk

์ •ํ•ด๋Š” O(100โˆ—100โˆ—100)O(100*100*100)์˜ ๋ธŒ๋ฃจํŠธํฌ์Šค. ๋‚˜๋Š” ์•„๋ž˜ ํ˜•ํƒœ์˜ DP๋กœ ํ’€์—ˆ๋‹ค. (Knapsack)

int dp[200];
memset(dp, 0x3F, sizeof(int) * 200);
dp[0] = 0;
for(int i = 1; i <= 6; ++i) dp[i] = S;
for(int i = 6; i <= 100; ++i) {
if (i >= 6) {
dp[i] = min(dp[i], dp[i - 6] + S);
}
if (i >= 8) {
dp[i] = min(dp[i], dp[i - 8] + M);
}
if (i >= 12) {
dp[i] = min(dp[i], dp[i - 12] + L);
}
}
int ans = 0x7FFFFFFF;
for(int i = N; i <= N + 12; ++i) {
if (dp[i] < ans) ans = dp[i];
}
printf("%d\n", ans);

C - Sum of Numbers Greater Than Me

์—ฌ๊ธฐ์„œ ๊ตฌํ˜„ ์ด์Šˆ๋กœ 3ํ‹€์„ ํ–ˆ๋‹ค. upper_bound ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ ์—†์œผ๋ฉด, end() iterator๋กœ ์œ„์น˜ํ•˜๊ณ , ์—ฌ๊ธฐ์—๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์Œ์— ์œ ์˜ํ•˜๋„๋ก ํ•˜์ž.

D - Tile Pattern

์ •ํ•ด๋Š” 2์ฐจ์› Prefix Sum + Case work ์˜€๋‹ค. ๋‚˜๋Š” 2D Fenwick ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์ค‘๊ฐ„์— board๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ•ด๊ฐ€ ๋” ์ข‹์•„๋ณด์ธ๋‹ค. ํƒ€์ผ์ด ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๊ฒƒ์ด ๊ตฌํ˜„์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ๋”ฐ์ ธ์•ผํ•  ์ผ€์ด์Šค๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, D๋ฅผ ๊ฑด๋„ˆ๋›ด ์‚ฌ๋žŒ๋“ค๋„ ๋งŽ์ด ๋ณด์˜€๊ณ , ๊ฒฐ๋ก ๋งŒ ๋†“๊ณ  ๋ณด๋ฉด D ํ’€ ์‹œ๊ฐ„์— E์™€ F๋ฅผ ํ‘ธ๋Š” ๊ฒƒ์ด ์ •๋ฐฐ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹คํ–‰ํžˆ ์‹œ๊ฐ„ ๋‚ด์— AC๋ฅผ ๋ฐ›์•„์„œ ๋‹คํ–‰์ด์ง€๋งŒ, ๋งŒ์•ฝ ๊ตฌํ˜„ํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ–ˆ๋‹ค๋ฉด ์ €๋ฒˆ์ฃผ์˜ ์•…๋ชฝ์ด ๋˜ํ’€์ด ๋˜์—ˆ์„ ๋“ฏ..

๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๊ตฌํ˜„ ์—ฐ์Šต์— ์ƒ๋‹นํžˆ ๋„์›€์ด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‹ค์Œ์— ๋น„์Šทํ•œ ์œ ํ˜•์ด ๋‚˜์˜ค๋ฉด ์ข€ ๋” ๋นจ๋ฆฌ ํ’€ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ..

E - Set Meal

์ •ํ•ด๋Š” ์ด๊ฒƒ์ €๊ฒƒ ์ฒดํฌํ•˜๋ฉด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋งŽ์ด ์ค„์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ(O(L(logโกN+logโกL)+N+MlogโกM)O(L(\log N + \log L) + N + M \log M)), ๋‚˜๋Š” ๊ทธ๋ƒฅ O(NM)O(NM) ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์— ์ •๋ ฌ ํ›„ ์ ๋‹นํ•œ ์ปคํŒ…์„ ๋ถ™์—ฌ์„œ ํ†ต๊ณผ์‹œ์ผฐ๊ณ , ์ด ๋ฐฉ๋ฒ•์ด ๋” ๊ฐ„๋‹จํ•œ๋“ฏ ํ•˜๋‹ค. ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ O(1010)O(10^{10}) ์ •๋„ ๋˜๋Š” ์†”๋ฃจ์…˜์˜ ๊ฒฝ์šฐ์—๋Š” ์ฃผ๋กœ ์ปคํŒ…์„ ํ•˜๋ฉด ์‹œ๊ฐ„ ๋‚ด์— ์ž˜ ๋“ค์–ด์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

F - Palindrome Query (To be upsolved...)

Segment Tree๋ฅผ ํ™œ์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ถ”ํ›„ ๋‹ค์‹œ ํ’€์–ด๋ณผ ์˜ˆ์ •.

G

Skip

๐Ÿท๏ธ ์ฃผ์ œ ๋ชฉ๋ก: