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 找规律,打表的更多相关文章

  1. HDU 4731 Minimum palindrome 打表找规律

    http://acm.hdu.edu.cn/showproblem.php?pid=4731 就做了两道...也就这题还能发博客了...虽然也是水题 先暴力DFS打表找规律...发现4个一组循环节.. ...

  2. hdu 5051 找规律?+大trick

    http://acm.hdu.edu.cn/showproblem.php?pid=5051 打表找规律 据说是http://zh.wikipedia.org/wiki/%E6%9C%AC%E7%A6 ...

  3. 汉诺塔问题hdu 2065——找规律

    这类题目就是纸上模拟,找规律. 问题描述:在一块铜板上有三根杆,目的是将最左边杆上的盘全部移到右边的杆上,条件是不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允 ...

  4. hdu 5229 找规律

    假设选择了字符串a和b: 假设两人都按照最聪明的策略,那么观察一下可以找出规律:当a和b的字符串长度之和为奇数的时候zcc会败. 另外当a==b的时候zcc也会败(当时做的时候忘了这个了T^T) 接下 ...

  5. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

  6. HDU 2147 找规律博弈

    题目大意: 从右上角出发一直到左下角,每次左移,下移或者左下移,到达左下角的人获胜 到达左下角为必胜态,那么到达它的所有点都为必败态,每个点的局势都跟左,下,左下三个点有关 开始写了一个把所有情况都计 ...

  7. CF468A | 24 Game 找规律+打表

    (翻译版本来自 Luogu by lonelysir ) 题目描述 小X一直很喜欢一个纸牌游戏:"24点",但最近他发现这个游戏太简单了,所以他发明了一个新游戏. 你有一个整数序列 ...

  8. ACM-ICPC 2018 南京赛区网络预赛 - J. Sum (找规律+打表)

    题意:\(f(i):i\)能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子.每次给出n,求\(\sum_{i=1}^{n}f(i)\) 分析:\(1 \le n \le 2e7\) ...

  9. HDU 1564 找规律博弈

    题目大意是: 从n*n的方格角落的一个起点出发,每次移到上下左右一个未曾到达过的位置,谁不能走了谁就输了 想了好久都想不出,看了大神的题解 Orz了 果然博弈不是脑残的游戏啊... 这里从起点出发,将 ...

随机推荐

  1. GN算法---《Community structure in social and biological networks》这篇论文讲了什么?

    用中文记下这篇论文的大致意思,以防止忘了.好记性不如烂笔头! 摘要:最近的一些研究在研究社交网络或WWW.研究者都集中于研究网络的“小世界性”,“幂率分布特性”,“网络传递性”(聚类性吧).本文提出网 ...

  2. python3+Django1.11+mysql5.7 MySQL DB API Drivers

    The Python Database API is described in PEP 249. MySQL has three prominent drivers that implement th ...

  3. 【BZOJ 2679】[Usaco2012 Open]Balanced Cow Subsets(折半搜索+双指针)

    [Usaco2012 Open]Balanced Cow Subsets 题目描述 给出\(N(1≤N≤20)\)个数\(M(i) (1 <= M(i) <= 100,000,000)\) ...

  4. webpack(二)解析es6并打包

    一.前言 ECMAScript 6(ES6)的发展速度非常之快,但现代浏览器对ES6新特性支持度不高,所以要想在浏览器中直接使用ES6的新特性就得借助别的工具来实现.Babel是一个广泛使用的转码器, ...

  5. ubuntu16.04 chromium浏览器无法启动

    点击浏览器不能启动,在终端输入: chromium -browser %U 错误如下: [/)] NSS_VersionCheck("3.26") failed. NSS > ...

  6. 基于linux内核包过滤技术的应用网关

    目录 基于linux内核包过滤技术的应用网关 硬件形态 基本原理 应用场景 主要功能 其他功能 客户定制 基于linux内核包过滤技术的应用网关 硬件形态 基本原理 应用场景 媒体内容过滤和深度识别 ...

  7. QDU_组队训练(ABEFGHKL)

    A - Accurately Say "CocaCola"! In a party held by CocaCola company, several students stand ...

  8. P1077

    f[i][j]:i种花放j盆的方案数 #include<bits/stdc++.h> using namespace std; const int maxn = 3e2+11; const ...

  9. apache 2.4 访问权限配置

    在apache 2.4里,访问权限配置与2.2不同,如果设置不对,则会报403错误,日志中会报 AH01630: client denied by server configuration.   [S ...

  10. 用淘宝镜像安装electron的方法

    在网友那里看到的,命令如下,亲测安装electron 1.7.9 成功,关键是几秒钟就搞定了.今天是 11 Dec 2017. ELECTRON_MIRROR=http://npm.taobao.or ...