Git Bash 中文乱码

在使用 Git 对中文文件进行操作时,经常出现乱码

$ git status
Refresh index: 100% (545/545), done.
ddOn branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   Codeforces/[Codeforces 1119B] Alyona and a Narrow Fridge.cpp
        modified:   "Luogu/[Luogu P1972] [SDOI2009]HH\347\232\204\351\241\271\351\223\276.cpp"

原因

  1. Windows 默认使用 GB2312 来处理文件名和内容,但 Git 默认使用 UTF-8
  2. Git 命令在输出 log 的时候会使用 less 这个工具,默认和 Windows 的编码格式不兼容
  3. 不同的命令行工具(终端)对环境变量的处理方式不同

CF 264C Choosing Balls(DP)

题目链接

题目描述

有一个序列,每个元素有一个颜色 $c_i$ 和权值 $v_i$,你需要从中选出一些元素,不改变相对顺序的组成一个新序列,使得整个序列的总分最高。

新序列的分数是这样计算的:

对于每个你选出的元素:

如果这个元素和新序列中上一个元素颜色相同,就在总分里加上 $v_i \cdot a$,否则加上 $v_i \cdot b$

$n \times q \le 5 \times 10^7$

BZOJ 3653 谈笑风生(主席树)

题目链接

题目描述

给定一棵 $n$ 个节点的有根树,有 $q$ 组询问

每次询问给出 $(a,k)$,求有多少个三元组 $(a,b,c)$,满足 $a,b$ 都是 $c$ 的祖先,并且 $a,b$ 之间的距离不超过 $k$

$n,q \le 3 \times 10^5$