CF Gym 100187B A Lot of Joy (古典概型)

题意:给两个一样的只含有26个小写字母的字符串,然后两个分别做一下排列,问如果对应位置的字母相等那么就愉悦值就加一,问愉悦值的期望是多少?

题解:只考虑两个序列相对的位置,那么就相当于固定一个位置,另外一个序列做排列。对于一个字符,假设是a,然后a有Na个,那么a选第一个序列中a对应的位置,发生这个事件的概率为1*(n-1)!/n!,1是选那个位置,(n-1)!是其他的元素排列,n!是总的情况。(注意,不能因为a可以选多个点就乘上x,因为a不可能同时对应两个位置,所以对答案的贡献只有一次)

学习点:将问题拆分,一个一个考虑对答案的贡献值。

更新:学了概率论第一章以后来看这道题挺简单的,固定一个序列,另外一个序列的样本空间是序列的全排列n!,对于固定序列的i位置上的元素alpha(i),和它相等的事件有cnt[alpha(i)]*(n-1)!个。

答案是sigma(cnt[alpha(i)]*(n-1)!)/n! ,0< i<n-1, 

#include<cstdio>
#include<cstring>
const int maxn = 200000+50;
char str[maxn];
typedef long long ll;

ll cnt[256];

int main()
{
    scanf("%s",str);
    for(char *p = str; *p ; p++){
        cnt[*p]++;
    }
    ll ans = 0;
    int sum = 0;
    for(int i = 'a'; i <= 'z'; i++){
        if(cnt[i]>0){
            sum += cnt[i];
            ans += cnt[i]*cnt[i];
       }
    }
    printf("%.15lf",(double)ans/sum);
    return 0;
}

 

转载于:https://www.cnblogs.com/jerryRey/p/4657932.html

### 显存不足问题的原因分析 在 Legged Gym 中使用 CUDA 时出现显存不足错误(`cuda error: out of memory`),通常是因为 GPU 的内存资源不足以支持当前的任务需求。这种问题可能由以下几个原因引起: 1. **模型复杂度过高**:神经网络模型参数过多或者批量大小过大,导致显存占用超出可用范围[^1]。 2. **GPU 资源被其他进程占用**:如果有多个程序同时运行并共享同一块 GPU,则可能导致显存分配冲突[^3]。 3. **数据预处理不当**:输入张量尺寸过大或未优化的数据加载方式也可能增加显存消耗。 --- ### 解决方案 #### 方法一:降低批量大小 减少训练过程中使用的批量大小(batch size)。较大的 batch size 需要更多的显存来存储中间计算结果和梯度信息。可以通过修改 `train.py` 文件中的相关参数实现这一点。例如,在命令行中指定较小的批次数值: ```bash python legged_gym/scripts/train.py --task=anymal_c_flat --cfg_train="configs/anymal_c/flat.yaml" --num_envs=512 ``` 这里通过设置 `--num_envs` 参数调整环境数量,从而间接控制批量大小[^4]。 #### 方法二:释放多余 GPU 资源 确保没有其他不必要的程序正在使用相同的 GPU 设备。可以利用以下命令查看当前 GPU 使用情况,并终止无关进程: ```bash nvidia-smi kill -9 <PID> ``` 其中 `<PID>` 是需要结束的进程 ID。清理完成后重新启动 Legged Gym 训练脚本。 #### 方法三:启用混合精度训练 (Mixed Precision Training) 采用半精度浮点数 (`float16`) 替代默认的单精度浮点数 (`float32`) 来执行大部分运算操作,这能够显著节省约一半的显存量。具体做法是在 PyTorch 或 TensorFlow 框架下开启自动混合精度功能。对于基于 PyTorch 的项目来说,只需简单引入 `torch.cuda.amp.autocast()` 上下文管理器即可完成转换工作[^2]: ```python from torch.cuda.amp import autocast, GradScaler scaler = GradScaler() for data in dataloader: with autocast(): outputs = model(data) loss = criterion(outputs, labels) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update() ``` #### 方法四:升级硬件设备 当上述方法均无法满足实际需求时,考虑更换更高规格的支持更大容量 VRAM 的图形处理器作为最终手段。 --- ### 总结 针对 Legged Gym 中 CUDA 出现 Out Of Memory 错误的情况,可尝试从减小批次规模、清除额外 GPU 占用、应用混合精度技术等方面入手加以改善;必要情况下还需依赖更强大的计算平台予以支撑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值