HDU 4731 找规律,打表
http://acm.hust.edu.cn/vjudge/contest/126262#problem/D
分为3种情况,n=1,n=2,n>=3
其中需要注意的是n=2的情况,通过打表找规律
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <cctype>
#include <vector>
#include <iterator>
#include <set>
#include <map>
#include <sstream>
using namespace std; #define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define spf sprintf
#define pb push_back
#define debug printf("!\n")
#define MAXN 100000 +5
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define pqueue priority_queue
#define INF 0x3f3f3f3f #define ls (rt<<1)
#define rs (rt<<1|1) int n,m; char a[MAXN]; int main()
{
int t,kase=,i,j,k;
sf("%d",&t);
while(t--)
{
sf("%d%d",&n,&m);
pf("Case #%d: ",kase++);
if(n==)
{
for(i=;i<m;i++) pf("a");
}
else if(n==)
{
if(m == ) pf("a");
else if(m==) pf("ab");
else if(m==) pf("aab");
else if(m==) pf("aabb");
else if(m==) pf("aaaba");
else if(m==) pf("aaabab");
else if(m==) pf("aaababb");
else if(m==) pf("aaababbb");
else
{
int v = ;
char tmp[] = "aababb";
pf("aa");
for(i=;i<m-;i++)
{
pf("%c",tmp[v++]);
v%=;
}
}
}
if(n>=)
{
int z = ;
char tmp[] = "abc";
for(i=;i<m;i++)
{
pf("%c",tmp[z++]);
z%=;
}
}
blank;
}
return ; }
题目很简单,所以我觉得这题最重要的是打表,我把自己打的表贴一下:
思路是用二进制的0和1代替a,b,因为要字典序最小,所以从1111...一直遍历到0就行
int n,m; char a[]; bool isp(int x,int y)
{
while(x<y)
{
if(a[x]!=a[y]) return false;
x++;y--;
}
return true;
} int gt()
{
int len = strlen(a);
int ans = ;
for(int i =;i<len;i++)
{
for(int j = i;j<len;j++)
{
if(isp(i,j))
{
ans = max(ans,j-i+);
}
}
}
return ans;
} void get(int v)
{
mem(a,);
int k = ;
int tmp = v;
while(tmp)
{
tmp>>=;
k++;
}
while(v)
{
a[--k] = 'a' + -(v&);
v>>=;
}
} int main()
{
int t,kase=,i,j,k;
for(i=;i>=;i--)
{
int ans,cnt=;
int mx = pow(,i);
int mxx = pow(,i+);
while(mx<mxx)
{
get(mxx);
//pf("%s %d\n",a,gt());
int tmp = gt();
if(cnt>tmp)
{
ans = mxx;
cnt = tmp;
}
mxx--;
}
get(ans);
pf("%s %d\n",a,cnt);
blank;
}
return ;
}
HDU 4731 找规律,打表的更多相关文章
- HDU 4731 Minimum palindrome 打表找规律
http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...
- hdu 5051 找规律?+大trick
http://acm.hdu.edu.cn/showproblem.php?pid=5051 打表找规律 据说是http://zh.wikipedia.org/wiki/%E6%9C%AC%E7%A6 ...
- 汉诺塔问题hdu 2065——找规律
这类题目就是纸上模拟,找规律. 问题描述:在一块铜板上有三根杆,目的是将最左边杆上的盘全部移到右边的杆上,条件是不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允 ...
- hdu 5229 找规律
假设选择了字符串a和b: 假设两人都按照最聪明的策略,那么观察一下可以找出规律:当a和b的字符串长度之和为奇数的时候zcc会败. 另外当a==b的时候zcc也会败(当时做的时候忘了这个了T^T) 接下 ...
- UVA 10706 Number Sequence (找规律 + 打表 + 查找)
Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...
- HDU 2147 找规律博弈
题目大意: 从右上角出发一直到左下角,每次左移,下移或者左下移,到达左下角的人获胜 到达左下角为必胜态,那么到达它的所有点都为必败态,每个点的局势都跟左,下,左下三个点有关 开始写了一个把所有情况都计 ...
- CF468A | 24 Game 找规律+打表
(翻译版本来自 Luogu by lonelysir ) 题目描述 小X一直很喜欢一个纸牌游戏:"24点",但最近他发现这个游戏太简单了,所以他发明了一个新游戏. 你有一个整数序列 ...
- ACM-ICPC 2018 南京赛区网络预赛 - J. Sum (找规律+打表)
题意:\(f(i):i\)能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子.每次给出n,求\(\sum_{i=1}^{n}f(i)\) 分析:\(1 \le n \le 2e7\) ...
- HDU 1564 找规律博弈
题目大意是: 从n*n的方格角落的一个起点出发,每次移到上下左右一个未曾到达过的位置,谁不能走了谁就输了 想了好久都想不出,看了大神的题解 Orz了 果然博弈不是脑残的游戏啊... 这里从起点出发,将 ...
随机推荐
- 【BZOJ1853】[Scoi2010]幸运数字 容斥原理+搜索
Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,88 ...
- [Swift]八大排序算法(五):插入排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- I/O(输入/输出)---File类
File:表示文件与目录.用它来对文件或目录进行基本操作,它可以查出文件的基本相关信息,比如:名称.最后的修改日期.文件大小. 使用File类操作文件和目录属性步骤: 1.引入File类 import ...
- sticky footer布局
一.什么是sticky footer 在网页设计中,Sticky footers设计是最古老和最常见的效果之一.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块 ...
- mysql的时区错误问题,The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one
在使用springboot整合ssm和druid的时候出现数据库一个问题 org.springframework.web.util.NestedServletException: Request pr ...
- 【转】intellij idea使用指南—— 导入Eclipse的Web项目
通常一个团队中可能有人用eclipse,有人用intelliJ,那么经常会出现需要导入别人用eclipse建好的web项目.而IntelliJ提供了多种项目类型的导入方式,其中就有eclipse. 在 ...
- Android 日历视图(Calendarview)
1.介绍 2.常用属性 3.xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...
- LeetCode记录之27——Remove Element
这道题跟26题很类似,并且有官方的答案.看了官方的答案之后发现写得特别巧,自己做的题太少思路太窄.有意思的是我的算法的时间复杂度是O(N^2),官方的是O(N),我的实际运行时间还少了2ms. ive ...
- JavaScript 中this 初步理解笔记
Javascript中函数中的this通常指向的是函数的拥有者,这个拥有者就是上下文执行对象:另外一点需要注意,this只能在javascript函数内部使用.
- 【算法笔记】B1016 部分A+B
1016 部分A+B (15 分) 正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A ...