HDU 4662 MU Puzzle 简单找规律
没有任何变换(III变U和删UU操作)之前,I 的个数一定是2^x个(也就是2的整数次幂)
若仅考虑III变U,那么设U的个数为k,I 的个数变为2^x-3*k
再加上删除UU操作,假设我们删除了2*n个U,设实际U的个数为cntU, 则k=cntU+2*n
设 I 的实际个数为cntI,cntI = 2^x - 3*(cntU+2*n), n有解的情况为:
( 2^x - 3*cntU - cntI ) % 6 == 0
只要找到一个x满足这个条件即可,不过要注意( 2^x - 3*cntU - cntI )>=0,因为 -6%6 = 0,之前没有判断这里,WA的很惨……
#include <cstdio>
#include <cstring>
#include <cstdlib>
#define LL long long int using namespace std; const int MAXN = ; LL cnt[];
char str[MAXN];
LL bit[]; bool check()
{
LL I = cnt[ 'I' - 'A' ];
LL U = cnt[ 'U' - 'A' ]; for ( int i = ; i < ; ++i )
{
if ( bit[i] - * U - I >= )
{
if ( ( bit[i] - * U - I ) % == )
return true;
}
}
return false;
} void init()
{
bit[] = ;
for ( int i = ; i < ; ++i )
bit[i] = ( bit[i - ] << );
return;
} int main()
{
init();
int T;
scanf( "%d", &T );
while ( T-- )
{
scanf( "%s", str );
int len = strlen(str);
memset( cnt, , sizeof(cnt) );
for ( int i = ; i < len; ++i )
++cnt[ str[i] - 'A' ];
if ( str[] != 'M' || cnt[ 'M' - 'A' ] != )
{
puts("No");
continue;
}
if ( check() ) puts("Yes");
else puts("No");
}
return ;
}
HDU 4662 MU Puzzle 简单找规律的更多相关文章
- HDU 4662 MU Puzzle(找规律)
题意:问是否能把MI通过以下规则转换成给定的字符串s. 1.使M之后的任何字符串加倍(即,将Mx更改为Mxx). 例如:MIU到MIUIU.2.用U替换任何III.例如:MUIIIU至MUUU.3.去 ...
- HDU 4662 MU Puzzle:找规律
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 题意: 初始字符串为"MI". 有三个操作: (1)将'M'之后的所有字符翻 ...
- hdu 4662 MU Puzzle
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 MU Puzzle Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 4662 MU Puzzle (2013多校6 1008 水题)
MU Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 【找规律】HDU 4662——MU Puzzle
来源:点击打开链接 这个题目的来源是人工智能领域MU猜想.比赛的时候也参考了相关资料,可是最后差一点没有把规律推出来. 注意到以下几个性质.第一,MI怎么变换M永远只能在第一位.第二,因为变换时只能在 ...
- HDU 4662 MU Puzzle 数论或者水题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4662 题目是问目标串能否由MI得到,我们可以逆向思维,目标串能否反过来处理得到MI,所以,首先排除M ...
- HDU 4662 MU Puzzle 2013 Multi-University Training Contest 6
现在有一个字符串"MI",这个字符串可以遵循以下规则进行转换: 1.Mx 可以转换成 Mxx ,即 M 之后的所有字符全部复制一遍(MUI –> MUIUI) 2.III 可 ...
- HDU 3032 multi-sg 打表找规律
普通NIM规则加上一条可以分解为两堆,标准的Multi-SG游戏 一般Multi-SG就是根据拓扑图计算SG函数,这题打表后还能发现规律 sg(1)=1 sg(2)=2 sg(3)=mex{0,1,2 ...
- HDU 5703 Desert 水题 找规律
已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...
随机推荐
- Asp.Net 操作word 第二篇[推荐]
引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示 ...
- 最小二乘法(least squares method)
一.背景 号到北大去听hulu的讲座<推荐系统和计算广告在视频行业应用>,想到能见到传说中的项亮大神,特地拿了本<推荐系统实践>求签名.讲座开始,主讲人先问了下哪些同学有机器学 ...
- asp.net动态添加GridView的模板列,并获取列值
一.动态添加模板列: 1.建立模板列样式: 说明:下边代码可以直接写在aspx文件中,也可以单独建立cs文件:另外,我没有写button.linkButton等控件,意思差不多,不过当需要添加事件时, ...
- Learning Java language Fundamentals
Chapter 2 Learning Java language fundamentals exercises: 1.What is Unicode? Unicode is a computing ...
- 【转】C#通过Expression获取指定属性的名称
原文:http://www.cnblogs.com/powerwu/articles/3393582.html 大家所熟悉的是通过对象属性来访问该属性的值,或是由字符串通过反射来获取属性,并取值.今天 ...
- Java获取项目中的路径 分类: Java Game 2014-08-14 10:17 122人阅读 评论(0) 收藏
在项目中经常需要获取某个文件的路径: 在这里提供一些获取路径的方法.. 1.此种方式获取的路径,是当前类所在的路径: UserDAOTest.class.getResource("UserD ...
- linux下安装vsftp
1. yum安装vsftp # yum install vsftpd 2. 配置Vsftpd 安装完之后我们要对它进行配置,才能正常使用.编辑vsftpd的配置文件vi /etc/vsftpd/vsf ...
- C#中实现VB中的CreateObject方法
经常看到有些VB的例子中直接用个CreateObject就可调用系统功能(大多是COM对象),像用户设定,网络设定等等.虽然C#中可以通过使用VB的命名空间的方法来调用CreateObject函数,但 ...
- RMQ(st)
int dp[1111][12]; int a[1111]; int n; void RMQ_init() { for(int i=1;i<=n;i++) { d ...
- (转)Fibonacci Tilings
Fibonacci numbers {Fn, n ≥ 0} satisfy the recurrence relation (1) Fn+2 = Fn+1 + Fn, along with the i ...