NOI2001 炮兵阵地

编程入门 行业动态 更新时间:2024-10-09 03:19:42

NOI2001 <a href=https://www.elefans.com/category/jswz/34/1765836.html style=炮兵阵地"/>

NOI2001 炮兵阵地

状压金典

dp[i][j][k]表示第i行状态为j,且上一行状态为k的最多放置的炮兵数
优化1:预处理出每行的可能状态

具体看程序了!!!
AC代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#define N 107
#define M 1024
using namespace std;int a[N],k=0,v[67],num[M];int dp[2][M][M];//滚动数组 
void find(int x){//统计当前可行状态的数值 
    int ans=0,f=1;while(f<=x){
        if((f&x)!=0)ans++;f=f<<1;
    }num[x]=ans;
}
void ycl(int c){//预处理出当前m的每行的二进制可能的状态 
    int f=0;while(f<=((1<<c)-1)){
        if((f&(f<<1))==0&&(f&(f<<2))==0){
            k++;v[k]=f;find(f);
        }f++;
    }
}
int main(){
    int i,j,n,m;
    scanf("%d%d",&n,&m);
    for(i=1;i<

更多推荐

NOI2001 炮兵阵地

本文发布于:2024-02-27 20:29:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765851.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:炮兵   阵地

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!