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了 果然博弈不是脑残的游戏啊... 这里从起点出发,将 ...
随机推荐
- 【BZOJ 1877】 [SDOI2009]晨跑(费用流)
题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...
- 190221协程与IO模型
一.协程 又称微线程 协程是一种用户态的轻量级的线程 在单线程下实现的并发,例如:yield 优点: 无需线程上下文切换的开销 无需原子操作锁定及同步的开销 方便切换控制流,简化编程模型 高并发,高扩 ...
- flex弹性布局,好用
一直不太喜欢自己布局前端页面,都是扒别人的页面 ,最近在练习小程序,页面无处可扒,只有自己布局 发现flex弹性布局真好用,布局起来很简单,实现的效果也很好,赞 以后可以自己写一点前端了,哈哈
- 记一个SpringBoot中属性注入失败的问题Consider defining a bean of type ''' in your configuration
今天遇到的一个问题: 代码检查了好几次,都没有错误,但是启动时就会报错Consider defining a bean of type ''' in your configuration. 启动类在c ...
- Little Elephant and Magic Square
Little Elephant loves magic squares very much. A magic square is a 3 × 3 table, each cell contains s ...
- pyc和pycodeobject
Python是一个先编译再解释的语言. 执行过程:先寻找pyc文件,找到则载入,没找到则把编译的结果保存在pycodeobject中,运行结束则写到pyc文件中
- windows_study_1
描述:win8/windows server 设置用户登陆密码永不过期 解决: 第一步:打开控制面板,点击系统和安全第二部:管理工具第三步:本地安全组策略第四步:看图 第五步:把密码过期天数,改成0 ...
- 关于去掉输入一定数字n,在n后写入n个字符串的问题
在输入数字n后要用一个getchar 去吃掉数字n后面跟着的回车符号,从而保证输入的字符串数是和n是保持一致的 具体实例代码如下: #include<stdio.h> #include&l ...
- 1152 Google Recruitment (20 分)
In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the p ...
- [转] 利用shell创建文本菜单与窗口部件的方法
[From] http://www.jb51.net/article/129460.htm 前言 创建交互式shell脚本最常用的方法是使用菜单.提供各种选项可以帮助脚本用户了解脚本能做什么,不能做什 ...