hdu 4403 dfs
巨麻烦的模拟题orz。。。。
先确定等号的位置,然后两层dfs,分别算等号前面的和后面的,再比较
话说这题竟然不开long long都能水过
#include <iostream>
#include<cstring>
using namespace std;
int ANS,ansx,ansy,T,l;
string s;
int nx[],ny[],ax[],ay[],a[];
int lx,ly; int calcx()
{
//ax[1..lx-1]
//nx[1..lx]
int tmpn=nx[];
int tmpa=;
for(int i=;i<=lx-;i++)
{
if(ax[i]==)
{
tmpa+=tmpn;
tmpn=nx[i+];
}
else
{
tmpn=tmpn*+nx[i+];
}
}
tmpa+=tmpn;
return tmpa;
} int calcy()
{
//ay[1..ly-1]
//ny[1..ly]
int tmpn=ny[];
int tmpa=;
for(int i=;i<=ly-;i++)
{
if(ay[i]==)
{
tmpa+=tmpn;
tmpn=ny[i+];
}
else
{
tmpn=tmpn*+ny[i+];
}
}
tmpa+=tmpn;
return tmpa;
} void dfsy(int y)
{
if(y==ly)
{
//cout<<nx[1]<<" ";
//for(int i=1;i<=lx-1;i++) cout<<char(ax[i]+'A')<<" "<<nx[i+1]<<" ";
//cout<<"----";
//cout<<ny[1]<<" ";
//for(int i=1;i<=ly-1;i++) cout<<char(ay[i]+'A')<<" "<<ny[i+1]<<" "; ansy=calcy();
//cout<<" "<<ansx<<"=="<<ansy<<" ";
if(ansy==ansx)
{
ANS++;
// cout<<" OK! ";
}
//cout<<endl;
}
else
{
ay[y]=;
dfsy(y+);
ay[y]=;
dfsy(y+);
}
} void dfsx(int x)
{
if(x==lx)
{
ansx=calcx();
dfsy();
}
else
{
ax[x]=; //add a plus after ax[x]
dfsx(x+);
ax[x]=;
dfsx(x+);
}
} int main()
{
while(cin>>s)
{
if(s=="END") break;
l=s.length();
ANS=; ansx=; ansy=;
for(int i=;i<=l;i++)
a[i]=s[i-]-'';
for(int eq=;eq<=l-;eq++) //add equal after a[eq]
{
memset(nx,,sizeof(nx));
memset(ny,,sizeof(ny));
for(int i=;i<=eq;i++) nx[i]=a[i];
lx=eq;
for(int i=eq+;i<=l;i++) ny[i-eq]=a[i];
ly=l-eq;
dfsx();
}
cout<<ANS<<endl;
} return ;
}
hdu 4403 dfs的更多相关文章
- HDU 5143 DFS
分别给出1,2,3,4 a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- HDU 4403 A very hard Aoshu problem(dfs爆搜)
http://acm.hdu.edu.cn/showproblem.php?pid=4403 题意: 给出一串数字,在里面添加一个等号和多个+号,使得等式成立,问有多少种不同的式子. 思路: 数据量比 ...
- HDU 4403 A very hard Aoshu problem(DFS)
A very hard Aoshu problem Problem Description Aoshu is very popular among primary school students. I ...
- HDU 4403 A very hard Aoshu problem (DFS暴力)
题意:给你一个数字字符串.问在字符串中间加'='.'+'使得'='左右两边相等. 1212 : 1+2=1+2, 12=12. 12345666 : 12+3+45+6=66. 1+2+3+4 ...
- HDU 5877 dfs+ 线段树(或+树状树组)
1.HDU 5877 Weak Pair 2.总结:有多种做法,这里写了dfs+线段树(或+树状树组),还可用主席树或平衡树,但还不会这两个 3.思路:利用dfs遍历子节点,同时对于每个子节点au, ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- HDU 1045 (DFS搜索)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:在不是X的地方放O,所有O在没有隔板情况下不能对视(横行和数列),问最多可以放多少个 ...
- HDU 1241 (DFS搜索+染色)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1241 题目大意:求一张地图里的连通块.注意可以斜着连通. 解题思路: 八个方向dfs一遍,一边df ...
随机推荐
- BZOJ 4003 【JLOI2015】城池攻占
Description 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池. 这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖, ...
- Html5 Egret游戏开发 成语大挑战(六)游戏界面构建和设计
本篇将主要讲解游戏界面的构建和设计,会应用到egret.eui的自定义组件,可以很直观的构建一个游戏整体,这里我们仍然只需要使用EgretWing就可以达到目的,本篇可能是篇幅最少的一个,但是涉及自定 ...
- make的控制函数(error,warning)
make的控制函数 make提供了两个控制make运行方式的函数.通常它们用在Makefile中,当make执行过程中检测到某些错误是为用户提供消息,并且可以控制make过程是否继续. 8.11.1 ...
- Android-完全退出当前应用程序的四种方法
Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A.在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方 ...
- 使用 data-* 属性来嵌入自定义数据
1. HTML 实例 <ul> <li data-animal-type="bird">Owl</li> <li data-animal- ...
- JSP 4个域对象-9个内置对象-11个EL隐式对象
一. 四大域对象 1. PageContext :页面范围的数据 2. ServletRequest:请求范围的数据 3. HttpSession:会话范围的数据 4. ServletContext: ...
- 创业这三年¥.NET之尴尬处境
创业这三年#迈出第一步 创业这三年@各种奇遇 之前写的文章有兴趣的大家可以看看. 本来没有打算写这样一篇会遭人拍砖的文章,但是发现大家每天忙于编码,对市场环境..Net生态没有一个真实.多角度的认识, ...
- Ryu
What's Ryu? Ryu is a component-based software defined networking framework. Ryu provides software co ...
- Sublime轻量级编辑器
对于从事计算机的小伙伴,好用的编辑器等效于手里的利器!可说为,砍柴不误,磨刀工! 手有神器,游走四方! sublime,记得好像是支持跨平台的 家乡的情绪 http://pan.baidu.com/s ...
- Android下常见的四种对话框
摘要:在实际开发过程有时为了能够和用户进行很好的交互,需要使用到对话框,在Android中常用的对话框有四种:普通对话框.单选对话框.多选对话框.进度对话框. 一.普度对话框 public void ...