CodeForces 379 D. New Year Letter
枚举开头结尾的字母,枚举ac的个数,总AC个数就是两个Fibonacci数列的和。。。。。
1 second
256 megabytes
standard input
standard output
Many countries have such a New Year or Christmas tradition as writing a letter to Santa including a wish list for presents. Vasya is an ordinary programmer boy. Like all ordinary boys, he is going to write the letter to Santa on the New Year Eve (we Russians actually expect Santa for the New Year, not for Christmas).
Vasya has come up with an algorithm he will follow while writing a letter. First he chooses two strings, s1 anf s2, consisting of uppercase English letters. Then the boy makes string sk, using a recurrent equation sn = sn - 2 + sn - 1, operation '+' means a concatenation (that is, the sequential record) of strings in the given order. Then Vasya writes down string sk on a piece of paper, puts it in the envelope and sends in to Santa.
Vasya is absolutely sure that Santa will bring him the best present if the resulting string sk has exactly x occurrences of substring AC (the short-cut reminds him оf accepted problems). Besides, Vasya decided that string s1 should have length n, and string s2 should have length m. Vasya hasn't decided anything else.
At the moment Vasya's got urgent New Year business, so he asks you to choose two strings for him, s1 and s2 in the required manner. Help Vasya.
The first line contains four integers k, x, n, m (3 ≤ k ≤ 50; 0 ≤ x ≤ 109; 1 ≤ n, m ≤ 100).
In the first line print string s1, consisting of n uppercase English letters. In the second line print string s2, consisting of m uppercase English letters. If there are multiple valid strings, print any of them.
If the required pair of strings doesn't exist, print "Happy new year!" without the quotes.
3 2 2 2
AC
AC
3 3 2 2
Happy new year!
3 0 2 2
AA
AA
4 3 2 1
Happy new year!
4 2 2 1
Happy new year!
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; int dp[120];
char sa[12000],sb[12000];
long long int fib[120]; int getMAX(char s,char e,int l)
{
if(l==1)
{
return 0;
}
if(l==2)
{
if(s=='A'&&e=='C') return 1;
else return 0;
}
if(l==3)
{
if(s=='A'||e=='C') return 1;
else return 0;
}
if(l>=4)
{
if(s=='A'&&e=='C') return (l-4)/2+2;
else if((s!='A'&&e=='C')||(s=='A'&&e!='C')) return (l-3)/2+1;
else return (l-2)/2;
}
} long long int getfibK(int a,int b,int x)
{
fib[0]=0;fib[1]=a;fib[2]=b;
for(int i=3;i<=x;i++)
{
fib[i]=fib[i-1]+fib[i-2];
}
if(fib[x]>1e9) return -1;
return fib[x];
} int main()
{
int k,x,n,m;
scanf("%d%d%d%d",&k,&x,&n,&m);
char s1,e1,s2,e2;
for(s1='A';s1<='C';s1++)
{
for(e1='A';e1<='C';e1++)
{
if(n==1&&s1!=e1) continue;
for(s2='A';s2<='C';s2++)
{
for(e2='A';e2<='C';e2++)
{
if(m==1&&s2!=e2) continue;
memset(dp,0,sizeof(dp));
char ls1=s1,le1=e1,ls2=s2,le2=e2;
for(int i=3;i<=k;i++)
{
dp[i]=dp[i-2]+(le1=='A'&&ls2=='C')+dp[i-1];
char ts=ls2;
ls2=ls1;
ls1=ts;le1=le2;
}
long long int tx=dp[k];
if(tx>x) continue;
int MaxS1=getMAX(s1,e1,n),MaxS2=getMAX(s2,e2,m);
for(int i=0;i<=MaxS1;i++)
{
for(int j=0;j<=MaxS2;j++)
{
long long int ty=getfibK(i,j,k);
if(ty<0) continue;
if(tx+ty==(long long int )x)
{
int posA=i,posB=j;
int cnta=1,cntb=1;
sa[0]=s1;sa[n-1]=e1;
sb[0]=s2;sb[m-1]=e2;
if(n!=1)
{
while(posA--)
{
if(cnta==1&&sa[0]=='A')
{
sa[cnta++]='C';
}
else
{
sa[cnta++]='A';
sa[cnta++]='C';
}
}
for(int ck=cnta;ck<n-1;ck++)
{
sa[ck]='B';
}
}
if(m!=1)
{
while(posB--)
{
if(cntb==1&&sb[0]=='A')
{
sb[cntb++]='C';
}
else
{
sb[cntb++]='A';
sb[cntb++]='C';
}
}
for(int ck=cntb;ck<m-1;ck++)
{
sb[ck]='B';
}
}
printf("%s\n",sa);
printf("%s\n",sb);
return 0;
}
}
}
}
}
}
}
printf("Happy new year!\n");
return 0;
}
CodeForces 379 D. New Year Letter的更多相关文章
- Codeforces 379 F. New Year Tree
\(>Codeforces \space 379 F. New Year Tree<\) 题目大意 : 有一棵有 \(4\) 个节点个树,有连边 \((1,2) (1,3) (1,4)\) ...
- 【codeforces 379D】New Year Letter
[题目链接]:http://codeforces.com/contest/379/problem/D [题意] 让你构造出两个长度分别为n和m的字符串s[1]和s[2] 然后按照连接的规则,顺序连接s ...
- Codeforces Round #370 - #379 (Div. 2)
题意: 思路: Codeforces Round #370(Solved: 4 out of 5) A - Memory and Crow 题意:有一个序列,然后对每一个进行ai = bi - bi ...
- codeforces Good Bye 2013 379D New Year Letter
题目链接:http://codeforces.com/problemset/problem/379/D [题目大意] 告诉你初始字符串S1.S2的长度和递推次数k, 使用类似斐波纳契数列的字符串合并的 ...
- Codeforces 379D - New Year Letter
原题地址:http://codeforces.com/contest/379/problem/D 题目大意:给出一种生成字符串的方法 s[k] = s[k - 2] + s[k - 1],其中加法意为 ...
- Codeforces Round #116 (Div. 2, ACM-ICPC Rules) C. Letter 暴力
C. Letter Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/180/problem/C D ...
- Codeforces Beta Round #14 (Div. 2) A. Letter 水题
A. Letter 题目连接: http://www.codeforces.com/contest/14/problem/A Description A boy Bob likes to draw. ...
- Codeforces Round #379 (Div. 2) E. Anton and Tree 缩点 直径
E. Anton and Tree 题目连接: http://codeforces.com/contest/734/problem/E Description Anton is growing a t ...
- Codeforces Round #379 (Div. 2) D. Anton and Chess 水题
D. Anton and Chess 题目连接: http://codeforces.com/contest/734/problem/D Description Anton likes to play ...
随机推荐
- 小心ThreadLocal的陷阱
ThreadLocal用在多线程时保存线程级的局部变量,当我们需要在线程内共享数据时,ThreadLocal屡试不爽,但是ThreadLocal也会有一个问题,当你使用线程池时,线程可能会被重用,所以 ...
- VS单元测试入门实践教程
摘要:本教程不会介绍单元测试的基本理论知识,也不会和大家讨论在实际项目中是否需要写单元测试代码的问题.但是如果你此时想使用VS中的单元测试的工具来测试某个方法是否正确,可你又从来没真正实践过,那么本教 ...
- Android学习之简单的数据存储
在Android中,数据存储是开发人员不可以避免的.Android为开发者提供了很多的存储方法,在前面的博客中,已经讲述了sqlite存储数据.今天将介绍用SharedPreferences来存储数据 ...
- Web QQ自动强制加好友代码
也许见过强行聊天的代码: tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com&Menu=yes 但是你应该不知 ...
- css动画,css过度,js动画
1jQuery动画 语法a$(selector).animate(styles,options) 语法b$(selector).animate(styles,speed,easing,callback ...
- Python中字符串切片操作
一:取字符串中第几个字符 print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符 二: ...
- 在Linux手动把文件转码的方法,防止乱码出现
iconv -f utf-8 -t gb2312 report.html > report_test.html
- os模块实现遍历文件
使用OS模块中的walk实现文件遍历. walk(top, topdown=True, onerror=None, followlinks=False) 从官方提供的doc中看到有四个参数 1> ...
- tracker-store and tracker-miner-fs eating up my CPU on every startup
Tracker is a synergy of technologies that are designed to provide a highly sophisticated, innovative ...
- floodlight 学习(一)
其实这个控制器应该没有多少人用了吧,一年多都没更新了,鉴于最近无论如何都要用这个,将学习笔记贴出来吧. 1.FloodlightProvider(Dev) 1.1简介:FloodlightProvid ...