http://codeforces.com/contest/1072/problem/B

开始想的只有搜索,时间复杂度$O(4^n)$,明显有问题。

想了半个小时没有思路,然后想到了正难则反,就开始步入正轨。

题目给出了$a[ ]$和$b[ ]$数组,首先与处理,我们枚举每一种情况的$a[i]$和$b[i]$,然后枚举ans[i]表示当为$ans[i]$时下一个数可以填几,预处理完你会发现,有合法的数对的情况只有一种。

预处理时间复杂度$O(4^4)$

接下来我们可以枚举答案序列的第一位填啥,从而可以推出其他的数字填啥。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int f[][][];
int n,a[],b[],ans[];
bool check()
{
for(int i=;i<=n;i++)
{
ans[i]=f[a[i]][b[i]][ans[i-]];
if(ans[i]==-)return ;
}
return ;
}
int main()
{
memset(f,-,sizeof(f));
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=;k++)
{
for(int p=;p<=;p++)
{
int x=p|k,y=p&k;
if(x==i&&y==j)f[i][j][k]=p;
}
}
}
}
bool flag=;
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&b[i]);
for(int i=;i<=;i++)
{
ans[]=i;
if(check())
{
flag=;
break;
}
}
if(!flag)printf("NO");
else
{
printf("YES\n");
for(int i=;i<=n;i++)printf("%d ",ans[i]);
}
}

最新文章

  1. redhat 配置本地yum源163yum源epel 源,无需卸载yum!无须拷贝ISO,愿网上少一点垃圾教程误人子弟
  2. 3分钟干货学会使用node-inspector调试NodeJS代码
  3. oop五大设计原则
  4. 图片上传本地预览。兼容IE7+
  5. Gym 101102A Coins -- 2016 ACM Amman Collegiate Programming Contest(01背包变形)
  6. 使用 ViewPager 和 RadioGroup 封装的一个导航控件
  7. flask中的session对象方法
  8. 从malloc中窥探Linux内存分配策略
  9. [POJ 3735] Training little cats (结构矩阵、矩阵高速功率)
  10. 左右PHP自增力、神秘递减操作
  11. Mongodb for .Net Core 驱动的应用
  12. 【spring源码分析】spring关于循环依赖的问题
  13. 快速创建一个 Servlet 项目(2)
  14. Android开发的16条小经验总结
  15. spring源码开发环境搭建
  16. 1153 Decode Registration Card of PAT (25 分)
  17. mybatis查询缓存
  18. Android 自定义Camera 随笔
  19. msql 综合练习
  20. Hbase和RDBMS(关系数据库管理系统)区别

热门文章

  1. Node.js的安装与使用-Windows系统
  2. 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数
  3. Codeforces Round #564 (Div. 2) B. Nauuo and Chess
  4. 牛客练习赛41E(球的体积并)
  5. CodeForces - 603A-Alternative Thinking (思维题)
  6. CodeForces - 608A-Saitama Destroys Hotel(模拟)
  7. Hive进阶_汇总
  8. Jenkins+Gitlab+Ansible自动化部署(六)
  9. Java_面向对象的 static 和 abstract
  10. Spring Bean的一生