[关闭]
@baobaobear 2020-02-23T11:19:17.000000Z 字数 11662 阅读 218

Contest 16

contest


A hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <string>
  7. #include <queue>
  8. #include <stack>
  9. #include <map>
  10. #include <set>
  11. using namespace std;
  12. #define ll long long
  13. #define endl "\n"
  14. #define INF 0x3f3f3f3f
  15. #define MAX 200010
  16. #define mod 1000000007
  17. int main()
  18. {
  19. ll a, b;
  20. cin >> a >> b;
  21. int ans = 0;
  22. while (a <= b)
  23. {
  24. a *= 3;
  25. b *= 2;
  26. ans++;
  27. }
  28. cout<<ans<<endl;
  29. return 0;
  30. }

B hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <string>
  7. #include <queue>
  8. #include <stack>
  9. #include <map>
  10. #include <set>
  11. using namespace std;
  12. #define ll long long
  13. #define endl "\n"
  14. #define INF 0x3f3f3f3f
  15. #define MAX 200010
  16. #define mod 1000000007
  17. int p[MAX];
  18. int main()
  19. {
  20. int n;
  21. cin >> n;
  22. for (int i = 0; i < n; i++)
  23. cin >> p[i];
  24. sort(p, p + n);
  25. cout << p[n / 2] << endl;
  26. return 0;
  27. }

C hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <string>
  7. #include <queue>
  8. #include <stack>
  9. #include <map>
  10. #include <set>
  11. using namespace std;
  12. #define ll long long
  13. #define endl "\n"
  14. #define INF 0x3f3f3f3f
  15. #define MAX 105
  16. #define mod 1000000007
  17. int p[MAX];
  18. int tong[MAX];
  19. int main()
  20. {
  21. int t;
  22. cin >> t;
  23. while (t--)
  24. {
  25. fill(p, p + MAX, 0);
  26. int n;
  27. cin >> n;
  28. for (int i = 0; i < n; i++)
  29. cin >> p[i];
  30. sort(p, p + n);
  31. int f = 0;
  32. for (int i = 1; i < n; i++)
  33. if (p[i] - p[i - 1] <= 1)
  34. {
  35. f = 1;
  36. break;
  37. }
  38. if (!f)
  39. {
  40. printf("1\n");
  41. continue;
  42. }
  43. else
  44. {
  45. printf("2\n");
  46. }
  47. }
  48. return 0;
  49. }

D 541907230304

  1. //#include<bits/stdc++.h>
  2. #include<cstdio>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. #define ll long long
  8. #define INF 0x7fffffffffff//ffff
  9. #define M 612345
  10. double x[M],y[M],l,h,s,x1, z1, x2, y2, x3, y3, x4, y4;
  11. int main(void){
  12. while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&z1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF){
  13. x[0] = x1; x[1] = x2; x[2] = x3; x[3] = x4;
  14. y[0] = z1; y[1] = y2; y[2] = y3; y[3] = y4;
  15. sort(x, x + 4);
  16. sort(y, y + 4);
  17. l = fabs(x2 - x1) + fabs(x4 - x3) - (x[3] - x[0]);
  18. h = fabs(y2 - z1) + fabs(y4 - y3) - (y[3] - y[0]);
  19. s = l * h;
  20. if (l <= 0 || h <= 0)
  21. s = 0.00;
  22. printf("%.2f\n", s);
  23. }
  24. return 0;
  25. }

E 541907230304

  1. #include<bits/stdc++.h>
  2. #include<cstdio>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. #define ll long long
  8. #define INF 0x7fffffffffff//ffff
  9. #define M 612345
  10. ll t;
  11. double a,b,c,ans,x1,z1,x2,y2;
  12. int main(void){
  13. cin>>t;
  14. while(t--){
  15. cin>>x1>>z1>>x2>>y2;
  16. a = sqrt(x1 *x1 +z1*z1);
  17. b = sqrt(x2*x2+y2*y2);
  18. c = sqrt((x1-x2)*(x1 - x2) +(z1-y2)*(z1-y2));
  19. ans = (a*a+b*b-c*c)/(2*a*b);
  20. ans =acos(ans)*180/3.1415926;
  21. printf("%.2f\n",ans);
  22. }
  23. return 0;
  24. }

F 541907230304

  1. #include<bits/stdc++.h>
  2. #include<cstdio>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. #define ll long long
  8. #define INF 0x7fffffffffff//ffff
  9. #define M 112300
  10. ll a[M],ans = 0,n,m;
  11. bool check(ll x){
  12. if(x==2)
  13. return true;
  14. for(ll i = 2;i*i <=x;i++){
  15. if(x %i==0)
  16. return false;
  17. }
  18. return true;
  19. }
  20. int main(void){
  21. cin>>n>>m;
  22. if(n < m)
  23. swap(n,m);
  24. ll j = 0;
  25. for(ll i = 1;i *i <= m;i++){
  26. if(m %i==0){
  27. a[j] = i;
  28. j++;
  29. if(i*i!=m){
  30. a[j] = m/i;
  31. j++;
  32. }
  33. }
  34. }
  35. for(ll i = 0;i < j;i++){
  36. if(n % a[i]==0&&check(a[i]))
  37. ans++;
  38. }
  39. cout<<ans<<endl;
  40. return 0;
  41. }

G 541907190117

  1. #include<set>
  2. #include<map>
  3. #include<stack>
  4. #include<queue>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cctype>
  8. #include<string>
  9. #include<vector>
  10. #include<climits>
  11. #include<cstring>
  12. #include<cstdlib>
  13. #include<iostream>
  14. #include<algorithm>
  15. #define endl '\n'
  16. #define max(a, b) (a > b ? a : b)
  17. #define min(a, b) (a < b ? a : b)
  18. #define zero(a) memset(a, 0, sizeof(a))
  19. #define INF(a) memset(a, 0x3f, sizeof(a))
  20. #define IOS ios::sync_with_stdio(false)
  21. #define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
  22. using namespace std;
  23. typedef long long ll;
  24. typedef pair<ll, ll> P;
  25. typedef pair<ll, ll> P2;
  26. const double pi = acos(-1.0);
  27. const double eps = 1e-7;
  28. const ll MOD = 1000000007LL;
  29. const int INF = 0x3f3f3f3f;
  30. const int _NAN = -0x3f3f3f3f;
  31. const double EULC = 0.5772156649015328;
  32. const int NIL = -1;
  33. template<typename T> void read(T &x){
  34. x = 0;char ch = getchar();ll f = 1;
  35. while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
  36. while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
  37. }
  38. const int maxn = 1e5+10;
  39. ll arr[maxn];
  40. int main(void) {
  41. ll n, m;
  42. scanf("%lld%lld", &n, &m);
  43. ll t, num;
  44. for (int i = 0; i<n; ++i) {
  45. scanf("%lld", &arr[i]);
  46. if (!i)
  47. t = arr[i]/2;
  48. else
  49. t = arr[i]/2/(__gcd(arr[i]/2, t))*t;
  50. }
  51. for (int i = 0; i<n; ++i)
  52. if (!(t%arr[i])) {
  53. printf("0\n");
  54. return 0;
  55. }
  56. t = m/t;
  57. if (t&1)
  58. ++t;
  59. printf("%lld\n", t/2);
  60. return 0;
  61. }

H 541907230304

  1. #include<bits/stdc++.h>
  2. #include<cstdio>
  3. #include<string.h>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. #define ll long long
  8. #define INF 0x7fffffffffff//ffff
  9. #define M 112300
  10. ll a[20][M],maxx,n,x,t;
  11. int main(void){
  12. while(cin>>n&&n){
  13. memset(a,0,sizeof(a));
  14. maxx = 0;
  15. for(ll i = 0;i < n;i++){
  16. cin>>x>>t;
  17. a[x][t]++;
  18. maxx = max(maxx,t);
  19. }
  20. for(ll j = maxx - 1;j >= 0;j--){
  21. a[0][j] +=max(a[0][j+1],a[1][j+1]);
  22. for(ll i = 1;i < 11;i++)
  23. a[i][j] +=max(max(a[i][j+1],a[i-1][j+1]),a[i+1][j+1]);
  24. }
  25. cout<<a[5][0]<<endl;
  26. }
  27. return 0;
  28. }

I 541907190117

  1. #include<set>
  2. #include<map>
  3. #include<stack>
  4. #include<queue>
  5. #include<cmath>
  6. #include<cstdio>
  7. #include<cctype>
  8. #include<string>
  9. #include<vector>
  10. #include<climits>
  11. #include<cstring>
  12. #include<cstdlib>
  13. #include<iostream>
  14. #include<algorithm>
  15. #define endl '\n'
  16. #define max(a, b) (a > b ? a : b)
  17. #define min(a, b) (a < b ? a : b)
  18. #define zero(a) memset(a, 0, sizeof(a))
  19. #define INF(a) memset(a, 0x3f, sizeof(a))
  20. #define IOS ios::sync_with_stdio(false)
  21. #define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
  22. using namespace std;
  23. typedef long long ll;
  24. typedef pair<ll, ll> P;
  25. typedef pair<ll, ll> P2;
  26. const double pi = acos(-1.0);
  27. const double eps = 1e-7;
  28. const ll MOD = 1000000007LL;
  29. const int INF = 0x3f3f3f3f;
  30. const int _NAN = -0x3f3f3f3f;
  31. const double EULC = 0.5772156649015328;
  32. const int NIL = -1;
  33. template<typename T> void read(T &x){
  34. x = 0;char ch = getchar();ll f = 1;
  35. while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
  36. while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
  37. }
  38. const int maxn = 1e6+10;
  39. queue<int> pos, clears;
  40. char str[maxn];
  41. int main(void) {
  42. ll t, n, k;
  43. scanf("%lld", &t);
  44. while(t--) {
  45. scanf("%lld%lld%s", &n, &k, str);
  46. int cnt = 0, pos = -1;
  47. for (int i = 0; i<n && k; ++i) {
  48. if (str[i] == '0') {
  49. if (i-cnt <= k) {
  50. k -= i-cnt;
  51. str[i] = '1';
  52. }
  53. else {
  54. pos = i-k;
  55. str[i] = '1';
  56. break;
  57. }
  58. ++cnt;
  59. }
  60. }
  61. for (int i = 0; i<n; ++i) {
  62. if (cnt) {
  63. --cnt;
  64. putchar('0');
  65. }
  66. else if (i == pos)
  67. putchar('0');
  68. else
  69. putchar(str[i]);
  70. }
  71. putchar(endl);
  72. }
  73. return 0;
  74. }

J rubbish_is_me

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<sstream>
  5. #include<string>
  6. #include<string.h>
  7. #include<cmath>
  8. #include<stack>
  9. #include<vector>
  10. #include<map>
  11. #include<queue>
  12. #define E (2.71828182)
  13. #define PI (3.1415926535898)
  14. #define mem(a,b) memset(a,b,sizeof(a))
  15. #define mod 1000000007
  16. #include<set>
  17. #define gc getchar
  18. #define debug(a) cout << "*" << a << "*" << endl
  19. using namespace std;
  20. typedef long long ll;
  21. typedef unsigned long long ull;
  22. typedef pair<float, int> P;
  23. const int N = 1000000;
  24. const long long MAX_V = 5005, INF = 2147483647, MOD = 998244353;
  25. int n, m, gt[100005], tot, dis[1000005], a, b;
  26. char op;
  27. set<int> st;
  28. int find(int x)
  29. {
  30. return x == dis[x] ? x : dis[x] = find(dis[x]);
  31. }
  32. void uni(int x, int y)
  33. {
  34. int xx = find(x);
  35. int yy = find(y);
  36. if (xx != yy)
  37. {
  38. dis[xx] = yy;
  39. }
  40. }
  41. int main()
  42. {
  43. int t = 1;
  44. while (~scanf("%d%d", &n, &m) && (n || m))
  45. {
  46. st.clear();
  47. tot = n;
  48. for (int i = 0; i < 100000; i++) gt[i] = i;
  49. for (int i = 0; i < 1000000; i++) dis[i] = i;
  50. for (int i = 0; i < m; i++)
  51. {
  52. scanf(" %c", &op);
  53. if (op == 'M')
  54. {
  55. scanf("%d%d", &a, &b);
  56. uni(gt[a], gt[b]);
  57. }
  58. else
  59. {
  60. scanf("%d", &a);
  61. gt[a] = tot++;
  62. }
  63. }
  64. for (int i = 0; i < n; i++)
  65. {
  66. st.insert(find(gt[i]));
  67. }
  68. printf("Case #%d: %d\n", t, st.size());
  69. t++;
  70. }
  71. }

K rubbish_is_me

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<sstream>
  5. #include<string>
  6. #include<string.h>
  7. #include<cmath>
  8. #include<stack>
  9. #include<vector>
  10. #include<map>
  11. #include<queue>
  12. #define ls (k << 1)
  13. #define rs (k << 1 | 1)
  14. #define E (2.71828182)
  15. #define PI (3.1415926535898)
  16. #define mem(a,b) memset(a,b,sizeof(a))
  17. #define mod 1000000007
  18. #include<set>
  19. #define gc getchar
  20. #define debug(a) cout << "*" << a << "*" << endl
  21. using namespace std;
  22. typedef long long ll;
  23. typedef unsigned long long ull;
  24. typedef pair<float, int> P;
  25. const int N = 1000000;
  26. const long long MAX_V = 5005, INF = 2147483647, MOD = 998244353;
  27. struct seg_tree{
  28. int l, r, mark, mx;
  29. }tk[4000005];
  30. struct node{
  31. int l, r, od;
  32. friend bool operator < (node a, node b)
  33. {
  34. if (a.r != b.r) return a.r < b.r;
  35. return a.l > b.l;
  36. }
  37. }seg[1000005];
  38. int n, k, d[1000005], tot;
  39. void push_up(int k)
  40. {
  41. tk[k].mx = max(tk[ls].mx, tk[rs].mx);
  42. }
  43. void push_down(int k)
  44. {
  45. if (tk[k].mark)
  46. {
  47. tk[ls].mark += tk[k].mark;
  48. tk[rs].mark += tk[k].mark;
  49. tk[ls].mx += tk[k].mark;
  50. tk[rs].mx += tk[k].mark;
  51. tk[k].mark = 0;
  52. }
  53. }
  54. void build(int k, int l, int r)
  55. {
  56. tk[k].l = l, tk[k].r = r;
  57. tk[k].mark = 0;
  58. if (l == r)
  59. {
  60. tk[k].mx = 0;
  61. return;
  62. }
  63. int mid = l + r >> 1;
  64. build(ls, l, mid);
  65. build(rs, mid + 1, r);
  66. push_up(k);
  67. }
  68. void update(int k, int l, int r, int d)
  69. {
  70. if (l <= tk[k].l && tk[k].r <= r)
  71. {
  72. tk[k].mark += d;
  73. tk[k].mx += d;
  74. return ;
  75. }
  76. push_down(k);
  77. int mid = tk[k].l + tk[k].r >> 1;
  78. if (l <= mid) update(ls, l, r, d);
  79. if (r > mid) update(rs, l, r, d);
  80. push_up(k);
  81. }
  82. int query(int k, int l, int r)
  83. {
  84. if (l <= tk[k].l && tk[k].r <= r)
  85. {
  86. return tk[k].mx;
  87. }
  88. push_down(k);
  89. int mid = tk[k].l + tk[k].r >> 1;
  90. int resl = 0, resr = 0;
  91. if (l <= mid) resl = query(ls, l, r);
  92. if (r > mid) resr = query(rs, l, r);
  93. return max(resl, resr);
  94. }
  95. int main()
  96. {
  97. scanf("%d%d", &n, &k);
  98. build(1, 1, 1000000);
  99. for (int i = 0; i < n; i++)
  100. {
  101. scanf("%d%d", &seg[i].l, &seg[i].r);
  102. seg[i].od = i + 1;
  103. }
  104. sort(seg, seg + n);
  105. for (int i = 0; i < n; i++)
  106. {
  107. if (query(1, seg[i].l, seg[i].r) < k)
  108. {
  109. update(1, seg[i].l, seg[i].r, 1);
  110. }
  111. else
  112. {
  113. d[tot++] = seg[i].od;
  114. }
  115. }
  116. printf("%d\n", tot);
  117. for (int i = 0; i < tot; i++)
  118. printf("%d%c", d[i], i == tot - 1 ? '\n' : ' ');
  119. }

L lnkkerst

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <cstring>
  4. #include <queue>
  5. #include <iostream>
  6. using namespace std;
  7. int read() {
  8. int ret, fl = 1;
  9. char ch;
  10. while(!isdigit(ch = getchar())) (ch == '-') && (fl = -1);
  11. for(ret = ch - '0'; isdigit(ch = getchar()); ret *= 10, ret += ch - '0');
  12. return ret * fl;
  13. }
  14. void print(int x) {
  15. if(x < 0) { putchar('-'); x *= -1; }
  16. if(x > 9) { print(x / 10); }
  17. putchar(x % 10 + '0');
  18. }
  19. struct Trie {
  20. int go[26], end, fail;
  21. } trie[500010];
  22. char s[1000010];
  23. int cnt = 0;
  24. void insert(char *str) {
  25. int l = strlen(s);
  26. int x = 0;
  27. for(int i = 0; i < l; i++) {
  28. int k = str[i] - 'a';
  29. if(!trie[x].go[k])
  30. trie[x].go[k] = ++cnt;
  31. x = trie[x].go[k];
  32. }
  33. ++trie[x].end;
  34. }
  35. void init_fail() {
  36. trie[0].fail = 0;
  37. queue<int > q;
  38. for(int i = 0; i < 26; ++i)
  39. if(trie[0].go[i]) {
  40. trie[trie[0].go[i]].fail = 0;
  41. q.push(trie[0].go[i]);
  42. }
  43. while(!q.empty()) {
  44. int u = q.front();
  45. q.pop();
  46. for(int i = 0; i < 26; ++i) {
  47. if(trie[u].go[i]) {
  48. trie[trie[u].go[i]].fail = trie[trie[u].fail].go[i];
  49. q.push(trie[u].go[i]);
  50. }
  51. else trie[u].go[i] = trie[trie[u].fail].go[i];
  52. }
  53. }
  54. }
  55. int query(char *s) {
  56. int l = strlen(s);
  57. int now = 0, ret = 0;
  58. for(int i = 0; i < l; ++i) {
  59. now = trie[now].go[s[i] - 'a'];
  60. for(int t = now; t && trie[t].end != -1; t = trie[t].fail) {
  61. ret += trie[t].end;
  62. trie[t].end = -1;
  63. }
  64. }
  65. return ret;
  66. }
  67. int solve() {
  68. memset(trie, 0, sizeof(trie));
  69. for(int n = read(); n--; scanf("%s", s), insert(s));
  70. scanf("%s", s);
  71. init_fail();
  72. cout << query(s) << endl;
  73. return 0;
  74. }
  75. int main() {
  76. int t = read();
  77. while(t--) solve();
  78. return 0;
  79. }

M _Wallace_

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. using namespace std;
  5. namespace fastIO_int{
  6. int get_int()
  7. {
  8. int x=0,f=1;char c=getchar();
  9. while(c<'0'||c>'9')
  10. {
  11. if(c=='-')f=-1;
  12. c=getchar();
  13. }
  14. while(c>='0'&&c<='9')
  15. x=x*10+c-'0',c=getchar();
  16. return f*x;
  17. }
  18. void read(){}
  19. template<class T1,class ...T2>
  20. void read(T1 &i,T2&... rest)
  21. {
  22. i=get_int();
  23. read(rest...);
  24. }
  25. void put_int(int x)
  26. {
  27. if(x<0)putchar('-'),x=-x;
  28. if(x>9)put_int(x/10);
  29. putchar(x%10+'0');
  30. }
  31. void write(){}
  32. template<class T1,class ...T2>
  33. void write(T1 i,T2... rest)
  34. {
  35. put_int(i),putchar(' ');
  36. write(rest...);
  37. }
  38. };
  39. const int N=2e4+5;
  40. int T[N<<5],L[N<<5],R[N<<5];
  41. int father[N<<5],depth[N<<5];
  42. int total=0;
  43. #define mid ((l+r)>>1)
  44. int n,m;
  45. int build(int l,int r)
  46. {
  47. int rt=++total;
  48. if(l==r)
  49. return father[rt]=l,rt;
  50. L[rt]=build(l,mid);
  51. R[rt]=build(mid+1,r);
  52. return rt;
  53. }
  54. int mrg(int pre,int l,int r,int x,int f)
  55. {
  56. int rt=++total;
  57. L[rt]=L[pre],R[rt]=R[pre];
  58. if(l==r)
  59. {
  60. father[rt]=f,depth[rt]=depth[pre];
  61. return rt;
  62. }
  63. if(x<=mid) L[rt]=mrg(L[pre],l,mid,x,f);
  64. else R[rt]=mrg(R[pre],mid+1,r,x,f);
  65. return rt;
  66. }
  67. void inc(int rt,int l,int r,int p)
  68. {
  69. if(l==r) {depth[rt]++;return;}
  70. if(p<=mid) inc(L[rt],l,mid,p);
  71. else inc(R[rt],mid+1,r,p);
  72. }
  73. int qry(int rt,int l,int r,int p)
  74. {
  75. if(l==r) return rt;
  76. if(p<=mid) return qry(L[rt],l,mid,p);
  77. else return qry(R[rt],mid+1,r,p);
  78. }
  79. int find(int ver,int x)
  80. {
  81. int fa=qry(ver,1,n,x);
  82. if(x==father[fa]) return fa;
  83. return find(ver,father[fa]);
  84. }
  85. signed main()
  86. {
  87. using namespace fastIO_int;
  88. while(scanf("%d%d",&n,&m)!=EOF)
  89. {
  90. memset(T,0,sizeof(T));
  91. memset(L,0,sizeof(L));
  92. memset(R,0,sizeof(R));
  93. T[0]=build(1,n);
  94. for(register int i=1;i<=m;i++)
  95. {
  96. int op,x,y;
  97. int px,py;
  98. read(op);
  99. if(op==1)
  100. {
  101. read(x,y),T[i]=T[i-1];
  102. px=find(T[i],x),py=find(T[i],y);
  103. if(father[px]!=father[py])
  104. {
  105. if(depth[px]>depth[py]) swap(px,py);
  106. T[i]=mrg(T[i-1],1,n,father[px],father[py]);
  107. if(depth[px]==depth[py])
  108. inc(T[i],1,n,father[py]);
  109. }
  110. }
  111. if(op==2)
  112. {
  113. read(x);
  114. T[i]=T[x];
  115. }
  116. if(op==3)
  117. {
  118. read(x,y),T[i]=T[i-1];
  119. px=find(T[i],x),py=find(T[i],y);
  120. if(father[px]==father[py])
  121. puts("1");
  122. else puts("0");
  123. }
  124. }
  125. }
  126. return 0;
  127. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注