Codeforces 517 #B
2024-09-04 16:10:59
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]);
}
}
最新文章
- redhat 配置本地yum源163yum源epel 源,无需卸载yum!无须拷贝ISO,愿网上少一点垃圾教程误人子弟
- 3分钟干货学会使用node-inspector调试NodeJS代码
- oop五大设计原则
- 图片上传本地预览。兼容IE7+
- Gym 101102A Coins -- 2016 ACM Amman Collegiate Programming Contest(01背包变形)
- 使用 ViewPager 和 RadioGroup 封装的一个导航控件
- flask中的session对象方法
- 从malloc中窥探Linux内存分配策略
- [POJ 3735] Training little cats (结构矩阵、矩阵高速功率)
- 左右PHP自增力、神秘递减操作
- Mongodb for .Net Core 驱动的应用
- 【spring源码分析】spring关于循环依赖的问题
- 快速创建一个 Servlet 项目(2)
- Android开发的16条小经验总结
- spring源码开发环境搭建
- 1153 Decode Registration Card of PAT (25 分)
- mybatis查询缓存
- Android 自定义Camera 随笔
- msql 综合练习
- Hbase和RDBMS(关系数据库管理系统)区别
热门文章
- Node.js的安装与使用-Windows系统
- 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数
- Codeforces Round #564 (Div. 2) B. Nauuo and Chess
- 牛客练习赛41E(球的体积并)
- CodeForces - 603A-Alternative Thinking (思维题)
- CodeForces - 608A-Saitama Destroys Hotel(模拟)
- Hive进阶_汇总
- Jenkins+Gitlab+Ansible自动化部署(六)
- Java_面向对象的 static 和 abstract
- Spring Bean的一生