警示后人(D题)

D题如果你wa了#2和#21

注意全1的情况,此时计划数p为0,而不是输出-1

附上本人代码(码风不好见谅)

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define N 10
#define ll long long
#define INF 0x7fffffff
#define endl '\n'
int n,m,q;
int a[N][N];
int plan[N][N][N];
int tmp[N][N];
bool check()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(tmp[i][j]==0) return 0;
        }
    }
    return 1;
}
void solve()
{
    cin>>n>>m>>q;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            char c;
            cin>>c;
            a[i][j]=c-'0';
        }
    }
    for(int i=0;i<q;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=m;k++)
            {
                char c;
                cin>>c;
                plan[i][j][k]=c-'0';
            }
        }
    }
    vector<int> ans;
    int minn=10;
    for(int i=0;i<=(1<<q)-1;i++)
    {
        memset(tmp,0,sizeof(tmp));
        vector<int> v;
        for(int j=0;j<q;j++)
        {
            if(i&(1<<j))
            {
                v.push_back(j+1);
                for(int i1=1;i1<=n;i1++)
                {
                    for(int j1=1;j1<=m;j1++)
                    {
                        tmp[i1][j1]|=plan[j][i1][j1];
                    }
                }
            }
        }
        for(int i1=1;i1<=n;i1++)
        {
            for(int j1=1;j1<=m;j1++)
            {
                tmp[i1][j1]^=a[i1][j1];
            }
        }
        if(i==0&&check())
        {
            cout<<0;
            return;
        }//特判
        if(check())
        {
            if(v.size()<minn)
            {
                minn=v.size();
                ans=v;
            }
        }
    }
    if(ans.size()==0)
    {
        cout<<-1;
    }
    else 
    {
        cout<<ans.size()<<endl;
        for(auto x:ans)
        {
            cout<<x<<" ";
        }
    }
}
int main(){
    IOS;
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

全部评论
点赞 回复 分享
发布于 2024-11-25 20:25 江西

相关推荐

肥肠椒绿:双非本可不就犯天条了,双非本就应该打入无间地狱
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务