abc134 D - Preparing Boxes

本文针对一道构造特定序列的算法题目进行了解析,介绍了如何通过逆向思维从后向前模拟求解,确保序列满足题目给定的条件。文章提供了完整的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:ABC 134D

题意:给你一个序列a,让你构造一个序列b,序列里面只有数字0和1,满足以下条件:
对于位置i,将所有是i的倍数的下标里的值相加,取余2必须等于ai。

思路:直接从后往前模拟一遍就可以了,因为后面的数会影响前面的数,所以必须先确定后面的数。
那么怎么确定i位置的值是什么呢,只有将它的倍数的值全部加起来(除了一倍),如果取余和ai相等那么bi就是0,否则的话改为1。

代码:

#include<bits/stdc++.h>
#define ULL unsigned long long
#define LL long long
#define Max 100005
#define mem(a,b) memset(a,b,sizeof(a));
#define pb push_back
#define mp make_pair
const LL mod=1e9+7;
const ULL base=131;
const LL LL_MAX=9223372036854775807;
using namespace std;
int a[2*Max],b[2*Max];
vector<int>ans;
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=n;i>=1;i--){
        int sum=0;
        for(int j=i+i;j<=n;j+=i)
            sum+=b[j];
        if(sum%2!=a[i])
            b[i]=1,ans.push_back(i);
    }
    printf("%d\n",ans.size());
    for(int i=0;i<ans.size();i++)
        printf("%d ",ans[i]);
    printf("\n");
    return 0;
}


### 解决 `safetensors` 安装时出现的 `subprocess-exited-with-error` 当尝试使用 `pip install safetensors` 并遇到 `error: subprocess-exited-with-error` 错误时,这通常意味着在准备元数据的过程中发生了某些问题。这类错误可以由多种因素引起,包括但不限于依赖项版本不兼容、环境变量设置不当或网络连接不稳定。 #### 方法一:更新 `setuptools` 和 `pip` 确保使用的 `setuptools` 版本是最新的,有时旧版可能会引发此类型的安装失败。可以通过执行以下命令来升级这两个工具: ```bash pip install --upgrade pip setuptools wheel ``` 如果特定版本的 `setuptools` 能够解决问题,则可考虑回退到该稳定版本,例如: ```bash pip install setuptools==57.5.0 ``` #### 方法二:清理缓存并重试 有时候本地的包索引文件损坏也会造成类似的错误,因此建议清除现有的下载缓存后再重新尝试安装操作: ```bash pip cache purge && pip install safetensors ``` #### 方法三:指定 Python 编译器选项(针对 Windows 用户) 对于Windows平台上的开发者来说,由于缺少必要的编译器支持库而导致无法正常构建扩展模块的情况也较为常见。此时应该先确认已经安装了适用于当前系统的 Microsoft Visual C++ Build Tools 或者 MinGW 工具链,并且将其路径加入到了系统的 PATH 环境变量之中[^4]。 #### 方法四:创建虚拟环境再进行安装 为了避免现有环境中其他软件之间的冲突干扰新包的成功部署,在一个新的隔离空间里单独完成此次任务不失为一种明智的选择: ```bash python -m venv myenv source myenv/bin/activate # Linux/MacOS下激活venv的方式 myenv\Scripts\activate # Windows下激活venv的方式 pip install safetensors ``` 以上几种方式均有助于缓解乃至彻底消除因 `preparing metadata (pyproject.toml)` 步骤而产生的子进程异常终止现象。值得注意的是,实际应用中可能还需要结合具体情况灵活调整策略组合以达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值