CF 真有 div4了 最近看到了,用刚学的go 语言来打一发div4
A - Division?
// @Title
// @Description
// @Author
// @Update
package main
import (
"fmt"
)
func main() {
var n int
fmt.Scanln(&n)
for i := 0; i < n; i++ {
var st int
fmt.Scanln(&st)
switch {
case st <= 1399:
fmt.Println("Division 4")
case st <= 1599:
fmt.Println("Division 3")
case st <= 1899:
fmt.Println("Division 2")
case st >= 1900:
fmt.Println("Division 1")
}
}
}
B - Triple
// @Title
// @Description
// @Author
// @Update
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
var t int
cin := bufio.NewReader(os.Stdin)
fmt.Fscan(cin, &t)
for l := 1; l <= t; l++ {
var n int
mp := make(map[int]int)
fmt.Fscan(cin, &n)
ans := -1
x := 1
for i := 1; i <= n; i++ {
fmt.Fscan(cin, &x)
mp[x]++
if mp[x] >= 3 {
ans = x
}
}
fmt.Println(ans)
}
}
C - Odd/Even Increments
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var t int
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for l := 1; l <= t; l++ {
n := 1
fmt.Fscan(in, &n)
arr := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &arr[i])
}
flag := true
for i := 3; i < n; i += 2 {
flag = flag && ((arr[i]+arr[i-2])%2 == 0)
}
for i := 2; i < n; i += 2 {
flag = flag && ((arr[i]+arr[i-2])%2 == 0)
}
if flag {
fmt.Println("YES")
}
if !flag {
fmt.Println("NO")
}
}
}
D - Colorful Stamp
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var t int
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for l := 0; l < t; l++ {
n := 1
st := ""
flag := true
fmt.Fscan(in, &n)
fmt.Fscan(in, &st)
r, b := 0, 0
for i := 0; i < n; i++ {
if st[i] == 'W' {
if (r == 0 && b != 0) || (r != 0 && b == 0) {
flag = false
break
}
r, b = 0, 0
} else if st[i] == 'B' {
b++
} else if st[i] == 'R' {
r++
}
}
if (r == 0 && b != 0) || (r != 0 && b == 0) || !flag {
fmt.Println("NO")
} else {
fmt.Println("YES")
}
}
}
E - 2-Letter Strings
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func fun(in *bufio.Reader) {
n := 1
mp := make([][]int64, 12)
for i := 0; i < 12; i++ {
mp[i] = make([]int64, 12)
}
fmt.Fscan(in, &n)
var ans int64 = 0
for i := 0; i < n; i++ {
s := ""
fmt.Fscan(in, &s)
for j := 0; j < 2; j++ {
for c := byte('a'); c <= byte('k'); c++ {
if c == s[j] {
continue
}
a, b := s[0], s[1]
if j == 0 {
a = c
} else {
b = c
}
ans += mp[a-byte('a')][b-byte('a')]
}
}
mp[s[0]-byte('a')][s[1]-byte('a')]++
}
fmt.Println(ans)
}
func main() {
t := 1
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for i := 1; i <= t; i++ {
fun(in)
}
}
F - Eating Candies
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func fun(in *bufio.Reader) {
n := 1
fmt.Fscan(in, &n)
arr := make([]int, n)
l, r := 0, n-1
for i := 0; i < n; i++ {
fmt.Fscan(in, &arr[i])
}
tl, tr := 0, 0
nl, nr := 0, 0
for l <= r {
if nl < nr {
nl += arr[l]
l++
} else if nl > nr {
nr += arr[r]
r--
} else if nl == nr {
tl, tr = l, r
nl += arr[l]
l++
}
}
if nl == nr {
fmt.Println(n)
} else {
fmt.Println(tl + n - 1 - tr)
}
}
func main() {
t := 1
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for i := 1; i <= t; i++ {
fun(in)
}
return
}
G - Fall Down
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func dfs(i, j int, arr [][]rune) {
n := len(arr)
if i != n-1 {
if arr[i+1][j] == '.' {
arr[i+1][j], arr[i][j] = '*', '.'
dfs(i+1, j, arr)
}
}
}
func fun(in *bufio.Reader) {
var n, m int
fmt.Fscan(in, &n, &m)
arr := make([][]rune, n)
for i := 0; i < n; i++ {
arr[i] = make([]rune, m)
s := ""
fmt.Fscan(in, &s)
for j := 0; j < m; j++ {
arr[i][j] = rune(s[j])
}
}
for i := n - 1; i >= 0; i-- {
for j := m - 1; j >= 0; j-- {
if arr[i][j] == '*' {
dfs(i, j, arr)
}
}
}
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
fmt.Printf("%c", arr[i][j])
}
fmt.Print("\n")
}
}
func main() {
t := 1
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for i := 0; i < t; i++ {
fun(in)
}
}
H - Maximal AND
// @Title
// @Description
// @Author
// @Update
package main
import (
"bufio"
"fmt"
"os"
)
func fun(in *bufio.Reader) {
n, k := 1, 1
fmt.Fscan(in, &n, &k)
arr := make([]int, n)
bit := make([]int, 32)
for i := 0; i < n; i++ {
fmt.Fscan(in, &arr[i])
for j := 0; j < 31; j++ {
bit[j] += arr[i] >> j & 1
}
}
ans := 0
for i := 30; i >= 0; i-- {
if bit[i]+k >= n {
if bit[i] < n {
k -= n - bit[i]
}
ans += 1 << i
}
}
fmt.Println(ans)
}
func main() {
t := 1
fmt.Scan(&t)
in := bufio.NewReader(os.Stdin)
for i := 0; i < t; i++ {
fun(in)
}
}