D. Grid Puzzle(cf360)

cf360d题意:给定一个数组,有一个nn的网格。在第i行,从第一个到第ai个都是黑格子,剩下的是白格子。可以进行以下操作:将2×2子网格染白;将整行染白。找出将所有单元格染白的最少操作次数。
分析:如果ai>=5我们会想使用操作2,因为至少需要三个2×2的子网覆盖它,第i-1和i+1行不一定是黑格子,所以有可能浪费了。先考虑ai<=4的情况。
只右三种情况:不受上一行影响;涂前两格:涂后两格。
代码:(贪心)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
    int n;cin>>n;int a[n+10];
    for(int i=1;i<=n;i++)cin>>a[i];
    bool b1=0,b2=0;ll ans=0;
    for(int i=1;i<=n;i++){
        if((!b1)&&(!b2)){
            if(a[i]==0)continue;
            ans++;
            if(a[i]<=2)b1=1;
        }
        else if(b1){
            b1=0;
            if(a[i]<=2)continue;
            ans++;
            if(a[i]<=4)b2=1;
        }
        else{
            b2=0;
            if(a[i]==0)continue;
            ans++;
            if(a[i]<=4)b1=1;
        }
    }
    cout<<ans<<endl;
}
int main(){
    int t;cin>>t;
    while(t--)sol();
    return 0;
}

(dp)
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N],dp[N];
void sol(){
    int n;cin>>n;
    int b[2]={N,N};
    for(int i=1;i<=n;i++)cin>>a[i];
    //b0=N,b1=N就是对下一行无影响
    for(int i=1;i<=n;i++){
        dp[i]=dp[i-1]+1;
        if(a[i]==0)dp[i]=min(dp[i],dp[i-1]);
        if(a[i]<=2)dp[i]=min(dp[i],i+b[1-i%2]);//上一个位置在奇数,现在在偶数,就可以减去1.反之一偶一奇也可以
        if(a[i]<=2)b[i%2]=min(b[i%2],dp[i-1]-i);
        else if(a[i]>4)b[0]=b[1]=N;
    }
    cout<<dp[n]<<endl;
}
int main(){
    int t;cin>>t;
    while(t--)sol();
    return 0;
}

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了一个类似的错误信息,说明在从指定的maven仓库下载构件时发生了错误。该错误可能是由于证书验证失败导致的。引用中也提到了一个类似的问题,指出在传输metadata时出现了问题。为了解决这个问题,可以尝试以下几种方法: 1. 检查网络连接: 确保你的网络连接正常,并且能够正常访问maven仓库。有时候网络问题可能会导致传输失败。 2. 检查仓库地址: 确保你正在使用正确的maven仓库地址。有时候使用错误的地址或者被防火墙阻止的地址可能导致下载失败。 3. 配置信任的证书: 如果错误信息中提到了证书验证失败,可能是因为你的maven配置没有信任该证书。你可以尝试将证书添加到你的maven信任列表中,以解决验证问题。 4. 清除本地仓库: 有时候本地仓库中的一些损坏的文件可能会导致传输失败。你可以尝试清除本地仓库中的相关构件,并重新下载。 5. 更新maven设置: 确保你正在使用最新的maven版本,并检查你的maven设置是否正确配置。有时候旧版本的maven可能会导致一些传输问题。 希望以上方法能够帮助你解决传输构件的问题。如果问题仍然存在,请提供更多的错误信息,以便我们能够提供更具体的帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [报错-新建maven项目Could not transfer artifact......](https://blog.csdn.net/u014692224/article/details/112758493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值