【NOIP 2004】 虫食算
【题目链接】
https://www.luogu.org/problemnew/show/P1092
【算法】
搜索 + 剪枝
直接搜索显然会超时,考虑剪枝
1 : 优化搜索顺序
2 : 假设我们已经确定了一组(Ai,Bi,Ci),那么,如果(Ai + Bi) mod n 和(Ai + Bi + 1) mod n都不等于Ci,可以剪枝
【代码】
#include<bits/stdc++.h>
using namespace std; int i,n,len;
int a[],ord[];
char A[],B[],C[];
bool used[],vis[];
bool solved; inline bool ok()
{
int i;
for (i = n; i >= ; i--)
{
if (a[A[i]-'A'+] == -) continue;
if (a[B[i]-'A'+] == -) continue;
if (a[C[i]-'A'+] == -) continue;
if ((a[A[i]-'A'+] + a[B[i]-'A'+]) % n == a[C[i]-'A'+]) continue;
if ((a[A[i]-'A'+] + a[B[i]-'A'+] + ) % n == a[C[i]-'A'+]) continue;
return false;
}
return true;
}
inline void print()
{
int i;
for (i = ; i <= n; i++) printf("%d ",a[i]);
printf("\n");
}
inline bool check()
{
int t,b = ;
for (i = n; i >= ; i--)
{
t = (a[A[i]-'A'+] + a[B[i]-'A'+] + b) % n;
if (a[A[i]-'A'+] + a[B[i]-'A'+] + b >= n) b = ;
else b = ;
if (a[C[i]-'A'+] == t) continue;
else return false;
}
if (b) return false;
else return true;
}
inline void dfs(int dep)
{
int i;
if (dep > n)
{
if (check())
{
solved = true;
print();
}
return;
}
if (!ok()) return;
for (i = n - ; i >= ; i--)
{
if (!used[i])
{
a[ord[dep]] = i;
used[i] = true;
dfs(dep+);
if (solved) return;
used[i] = false;
a[ord[dep]] = -;
}
}
} int main()
{ memset(a,,sizeof(a));
scanf("%d%s%s%s",&n,A+,B+,C+);
for (i = n; i >= ; i--)
{
if (!vis[A[i]-'A'+])
{
ord[++len] = A[i] - 'A' + ;
vis[A[i]-'A'+] = true;
}
if (!vis[B[i]-'A'+])
{
ord[++len] = B[i] - 'A' + ;
vis[B[i]-'A'+] = true;
}
if (!vis[C[i]-'A'+])
{
ord[++len] = C[i] - 'A' + ;
vis[C[i]-'A'+] = true;
}
}
dfs(); return ; }
【NOIP 2004】 虫食算的更多相关文章
- NOIP 2004 虫食算题解
问题 E: [Noip2004]虫食算 时间限制: 1 Sec 内存限制: 128 MB 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一 ...
- Codevs 1064 虫食算 2004年NOIP全国联赛提高组
1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 所谓虫食算,就是原先的算式 ...
- 虫食算 2004年NOIP全国联赛提高组(dfs)
1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- 深度优先搜索 codevs 1064 虫食算
codevs 1064 虫食算 2004年NOIP全国联赛提高组 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 所 ...
- 洛谷 P1092 虫食算 Label:dfs
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- codevs1064 虫食算
题目描述 Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 + 8468#6 ...
- NOIP2004 虫食算
描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子:43#9865#045+ 8468#6633= 44445506678其中#号代表 ...
- Luogu P1092 虫食算
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- 【NOIP2004】【CJOJ1703】【洛谷1092】虫食算
题面 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 ...
- 【NOIP2004】虫食算
Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +. 8468#6633 444455 ...
随机推荐
- KVO的使用及底层实现
1.概念 KVO(Key-Value-Observer)也就是观察者模式,是苹果提供的一套事件通知机制.允许对象监听另一个对象特定属性的改变,并在改变时接收到事件,一般继承自NSObject的对象都默 ...
- vegas pro 15解决导入的视频和音频有噪声问题,亲测可行
中文步骤: 按住Shift->点击选项->首选项,松开Shift 点击右上角"内部"选项卡,在最下面的搜索栏输入SO4 找到第二项Enable So4 Compound ...
- OpenCV:Adaboost训练时数据扩增
更准确的模型需要更多的数据,对于传统非神经网络机器学习方法,不同的特征需要有各自相符合的数据扩增方法. 1. 在使用opencv_traincascade.exe 过程中,图像读取在 classi ...
- Gartner2017年数据科学领域最酷供应商出炉,实至名归
文 | 帆软数据应用研究院 水手哥 更多大数据资讯和企业案例可关注 :知乎专栏<帆软数据应用研究院> 近日,Gartner公布了2017年度数据科学和机器学习领域的最酷供应商,清一色的美国 ...
- 将 GNOME 默认的界面切换动画功能关闭
gsettings set org.gnome.desktop.interface enable-animations false
- PAT_A1015#Reversible Primes
Source: PAT A1015 Reversible Primes (20 分) Description: A reversible prime in any number system is a ...
- Python笔记(29)----进程
目录: 一.进程 多任务的概念 创建子进程----fork[Linux] 全局变量在多个进程中不共享 多次fork() 创建进程----multiprocessing[windows] 二.线程 一. ...
- softmax回归---sigmoid(1)
介绍softmax之前先讲讲sigmoid: 逻辑回归模型常用的函数:sigmoid函数(用来做二分类) 表达式:f(x)=L/(1+exp-k(x-x0)) 其图像: 本质:将一个真值映射到(0,1 ...
- swift UITableViewCell 中的单选控制样式
我昨天在网上找了一晚上的资料,但是大多都是OC得语法,swift资料实在是太少了,使得我这个刚入门swift的彩笔好不吃力,后面一直各种翻阅资料,终于让我找到了 visibleCells 这个方法,直 ...
- 类型转换、分支(day05)
如果表达式里包含多个不同类型的数字就必须 首先把它们转换成同一个类型然后才能 计算 这个转换过程叫做隐式类型转换,完全由 计算机完成 隐式类型转换过程中一定把占地小的类型转换 成占地大的类型 如果不同 ...