Gravatar
hsl_beat
积分:186
提交:22 / 31
这题题意真的清楚么

题目 3719 有n种物品
2025-10-01 12:11:13
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
\frac{3}{2}\sum_{\alpha=0}^3\sum_{\beta=0}^3 g^{\alpha\beta}\partial_\mu\partial_\nu g_{\alpha\beta} = \frac{3}{2}\left(g^{00}\partial_\mu\partial_\nu g_{00} + g^{01}\partial_\mu\partial_\nu g_{01} + g^{02}\partial_\mu\partial_\nu g_{02} + g^{03}\partial_\mu\partial_\nu g_{03} + g^{10}\partial_\mu\partial_\nu g_{10} + \cdots + g^{33}\partial_\mu\partial_\nu g_{33}\right)

页面 19 MathJax基础语法
2025-09-29 23:55:58
Gravatar
baory
积分:13
提交:6 / 7
简单描述
公式使用两个美元符号扩起来,对于独占单行的公式,则需要两边各有两个美元符号包裹起来。
下标使用下划线表示,如:
$a_i+b_j=c_k$
显示为:
ai+bj=ck
上标使用向上的箭头(C 语言中的异或符号)表示,如:
$y=ax^2+bx+c$
显示为:
y=ax2+bx+c
除此之外,还有一些常见的使用方法,如:
$\frac{-b\pm\sqrt{b^2-4ac}}{2a}$
显示为:
−b±b2−4ac√2a

页面 19 MathJax基础语法
2025-09-25 20:27:40
Gravatar
PigFlies
积分:5
提交:6 / 15
格式问题
题目描述第10行,“我们按上述算法得到的排列顺序将它们从 0∼2(上标n-1)编号”中,“2(上标n-1)”应该为“$2^n-1$”。

题目 3289 [CSP 2019S]格雷码
2025-09-25 19:47:15
Gravatar
hsl_beat
积分:186
提交:22 / 31
人品-=114514

页面 99 2025开训指南
2025-09-25 19:17:19
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
回复 @dustsans :
膜拜大佬,能写出来全靠您这讲解了 一开始就没敢写五重循环

Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
S组最温柔的一道第一题,也是唯一一个我认为 不用去网上搜相关内容就能写的了

题目 4053 [CSP 2024 S]决斗
2025-09-24 22:05:13
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("duel.in", "r", stdin);
freopen("duel.out", "w", stdout);
int n;
cin >> n;
int a[100005];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
int ans = n;
int j = 0;
for (int i =0;i<n;i++) {
while (j<n&&a[j]<=a[i]) {
j++;
}
if (j < n) {
ans--;
j++;
}
}
cout << ans << endl;
return 0;

题目 4053 [CSP 2024 S]决斗
2025-09-24 22:03:40
Gravatar
hsl_beat
积分:186
提交:22 / 31
不懂就问 结论猜到了不会证明该怎么办

Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287

#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("2019code.in","r",stdin);
freopen("2019code.out","w",stdout);
unsigned long long n,k;
cin>>n>>k;
char da[65];
for(int i=n;i>=1;i--){
unsigned long long zj=(1ULL<<(i-1));
if(k<zj){
da[n-i]='0';
}else{
da[n-i]='1';
k=(1ULL<<i)-1-k;
}
}
da[n]='\0';
cout<<da;
return 0;
}

题目 3289 [CSP 2019S]格雷码
2025-09-23 20:11:21
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
#转自ChatGPT 5-high
对于方格取数问题,定义状态 $dp[j][i]$ 表示走到第 $j$ 列第 $i$ 行时能获得的最大和。
## 初始条件
$$dp[0][0] = a[0][0]$$
$$dp[0][i] = dp[0][i-1] + a[i][0], \quad 1 \leq i < n$$
## 状态转移方程
$$dp[j][i] = \max_{0 \leq k < n} \left(dp[j-1][k] + \sum_{l=\min(i,k)}^{\max(i,k)} a[l][j]\right), \quad 1 \leq j < m, 0 \leq i < n$$
## 最终答案
$$answer = dp[m-1][n-1]$$
其中:
- $n$ 为行数,$m$ 为列数
- $a[i][j]$ 表示第 $i$ 行第 $j$ 列的值
- $\min(i,k)$ 和 $\max(i,k)$ 分别表示 $i$ 和 $k$ 中的较小值和较大值
- 求和项表示在第 $j$ 列中从第 $k$ 行走到第 $i$ 行所经过的所有格子的值之和

Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
#include <iostream>
using namespace std;
int main() {
freopen("csp2020pj_power.in", "r", stdin);
freopen("csp2020pj_power.out", "w", stdout);
int n;
cin >> n;
if (n % 2 != 0) {
cout << -1;
} else {
for (int i = 23; i >= 1; i--) {
if (n & (1 << i)) {
cout << (1 << i) << " ";
}
}
}
}
转成2进制就可以了,但是手动转太麻烦了,由于我是懒狗,所以直接位运算判断一位是啥就可以了,挺好写的

Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
去网上找点位运算之类的东西会好做点,从最高位开始,逐位确定格雷码的每一位是0还是1,然后每次判断k是否小于中间值,如果k小于中间值,这一位就是0;否则这一位就是1,并且需要把k翻转一下,(1ULL << (i-1)) - 计算中间值,(1ULL << i) - 1 - k - 翻转k值

题目 3289 [CSP 2019S]格雷码
2025-09-23 12:58:20
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
666,我还以为是个搜索,要不然记忆化要不然剪枝,结果你告诉我是dp?改了半天搜索就30分结果回家一问chatgpt是动规?

Gravatar
陆晨洗
积分:373
提交:96 / 199
注意!N最大为63,不是60!

Gravatar
bowen
积分:46
提交:28 / 97
回复 @yrtiop : 我感觉作者就是那个考零分的

题目 4124 最后一课
2025-08-29 11:47:20
Gravatar
flyfree
积分:1248
提交:104 / 382
回复 @DESTRUCT :
哇ssy还有月计人(

Gravatar
左清源
积分:657
提交:72 / 124
不保证 b<=n

题目 3066 [POJ 1201]区间
2025-08-12 09:32:59
Gravatar
陆晨洗
积分:373
提交:96 / 199
好题,没有想象的那么简单

题目 3793 [POI 2012]Salaries
2025-08-11 09:51:09
Gravatar
金牌教师王艳芳
积分:114
提交:44 / 287
状压DP?不像学生出的,背后必有高人指点