虽然有点水,不过做完还是有收获的
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<cmath>
#include<cassert>
#include<cstring>
#include<iomanip>
using namespace std;
#ifdef _WIN32
#define i64 __int64
#define out64 "%I64d\n"
#define in64 "%I64d"
#else
#define i64 long long
#define out64 "%lld\n"
#define in64 "%lld"
#endif
/************ for topcoder by zz1215 *******************/
#define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++)
#define FFF(i,a) for( int i = 0 ; i < (a) ; i ++)
#define FFD(i,a,b) for( int i = (a) ; i >= (b) ; i --)
#define S64(a) scanf(in64,&a)
#define SS(a) scanf("%d",&a)
#define LL(a) ((a)<<1)
#define RR(a) (((a)<<1)+1)
#define pb push_back
#define CL(Q) while(!Q.empty())Q.pop()
#define MM(name,what) memset(name,what,sizeof(name))
#define MC(a,b) memcpy(a,b,sizeof(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define read freopen("in.txt","r",stdin)
#define write freopen("out.txt","w",stdout)
const int inf = 0x3f3f3f3f;
const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL;
const double oo = 10e9;
const double eps = 10e-9;
const double pi = acos(-1.0);
const int maxc = 27;
const int maxn = 11;
i64 c[maxc][maxc];
i64 dp[maxn][maxc];
i64 f[maxn];
string s;
void init()
{
MM(c,0);
for(int i=0;i<maxc;i++)
{
c[i][0]=1;
c[i][i]=1;
}
for(int i=1;i<maxc;i++)
{
for(int j=1;j<i;j++)
{
c[i][j]=c[i-1][j-1]+c[i-1][j];
}
}
MM(dp,0);
for(int i=1;i<maxn;i++)
{
dp[i][0]=0;
}
for(int i=1;i<maxn;i++)
{
for(int j=1;j<26;j++)
{
dp[i][j]=c[26-j][i-1];
}
}
MM(f,0);
for(int i=1;i<maxn;i++)
{
f[i]=c[26][i];
}
for(int i=1;i<maxn;i++)
{
f[i]+=f[i-1];
}
return ;
}
i64 start()
{
int len = s.length();
int pre,now,pos;
i64 ans=1;
for(int i=len-1;i>=1;i--)
{
pos = len - i;
pre = s[i-1]-'a';
now = s[i]-'a';
for(int x=now;x>pre+1;x--)
{
ans+=dp[pos][x];
}
}
now = s[0]-'a';
for(int i=now;i>=1;i--)
{
ans+=dp[len][i];
}
ans+=f[len-1];
return ans;
}
bool can()
{
int temp=-inf;
for(int i=0;i<s.length();i++)
{
if(s[i]>temp && s[i]>='a' && s[i]<='z')
{
temp = s[i];
}
else
{
return false;
}
}
return true;
}
int main()
{
init();
while(cin>>s)
{
if(can())
{
cout<<start()<<endl;
}
else
{
cout<<"0"<<endl;
}
}
return 0;
}
分享到:
相关推荐
【标题】"POJ1850-Code"是一个关于北京大学在线编程平台POJ(Problem Online Judge)上的一道题目1850的解题报告和解决方案。这道题目涉及了算法设计和编程实践,是计算机科学教育中常见的训练方式,旨在提升学生的...
poj 1780 Code.md
POJ Code Submitter V1.2 (Build 1012)版本更新: 1.修复了初次使用报错的问题 2.修复了长时间无操作重新验证身份失败的问题 3.修复了登录界面可以键入非法字符的BUG 4.修复了登录界面键入新用户名时,密码框不清空...
AC代码代表Accepted Code,即通过系统测试的代码,表明代码能够正确解决该问题。 【标签】"POJ 1837 Balance"是这个题目的标识,方便在POJ平台上搜索和分类。"Balance"可能暗示题目涉及到某种平衡状态或操作,例如...
AC代码指的是Acceptance Code,即通过了所有测试用例的正确代码。在这个问题中,AC代码通常会包含对动态规划状态的定义、状态转移方程的建立以及递归或迭代的实现过程。 【标签】"POJ 1416 Shredding Company" 这...
AC代码指的是Accepted Code,即能够正确解决所有测试案例的代码,表明作者已经成功地解决了这个问题。 【标签】"POJ 3295 Tautology"是这个问题的标识,其中"POJ"代表了题目来源,"3295"是题目在系统中的编号,...
AC代码代表Accepted Code,意味着提交的代码已经通过了系统的所有测试,成功实现了题目所要求的功能。 【标签】"POJ 1020 Anniversary Cake DFS"中,“POJ”是Problem Online Judge的缩写,是中国的一个在线编程...
AC代码是指 Accepted Code,意味着提交的代码已经通过了所有测试用例,证明其正确性。 标签“POJ 3373 Changing Digits DFS 强剪枝”进一步强调了问题的来源和关键算法。POJ 3373是问题的唯一标识,"Changing ...
"codeblock"可能是用户使用的编程环境,如Code::Blocks,这是一个流行的开源C++集成开发环境,适合进行算法编程。 综合以上信息,这个压缩包可以作为学习和提升算法技能的重要资源。它提供了实际问题的解决方案,...
在这个部分,学员可以通过解题报告和已通过验证(AC,Accepted Code)的代码来深入理解动态规划的原理和应用。 动态规划的核心理念是将复杂问题分解为多个子问题,然后通过求解这些子问题的最优解来构建原问题的最...
在"POJ3322_Code.cpp"这个文件中,很可能包含了实现上述宽搜算法的C++代码。通过阅读和分析这个代码,我们可以了解到如何具体处理矩形方块的移动,如何构建和更新搜索空间,以及如何判断是否到达目标位置等细节。这...
【描述】"C + + language learning poj100 question bank and code" 表明这个压缩包包含了100个POJ平台上的问题及其对应的C++解决方案。这些题目涵盖了各种难度和类型的算法问题,包括但不限于排序、搜索、图论、...
这是北京大学ACM也就是POJ2195的源代码,用的是最优匹配算法。
压缩文件中的“POJ3277_Code.txt”很可能是这个问题的参考代码实现,而“www.pudn.com.txt”可能包含更多关于问题来源或者讨论的信息。“POJ3277说明.txt”则可能是对问题的详细解释或者解题思路的说明。 总的来说...
poj1002 source code input: The input will consist of one case. The first line of the input specifies the number of telephone numbers in the directory (up to 100,000) as a positive integer alone on ...
在本篇文章中,我们将深入探讨POJ平台上的一系列经典图论问题,并根据提供的部分内容,总结出每个题目背后所涉及的核心算法和技术点。这些题目不仅考验了参赛者的逻辑思维能力,同时也对数据结构和算法的掌握提出了...
### ACM POJ PKU 最全题目分类解析 #### 动态规划(DP) 在计算机科学领域,动态规划(Dynamic Programming, DP)是一种重要的算法思想,主要用于解决多阶段决策过程中的优化问题。它通过将原问题分解成相互重叠的...
标题中的“POJ3259--Wormholes(bellman)”是指一个编程竞赛问题,源自POJ(Programming Online Judge)平台。这个问题涉及到利用贝尔曼-福特算法(Bellman-Ford Algorithm)解决“虫洞”(Wormholes)的问题。在...
this is an sample of the pku judge online code. poj 1433
AC代码则代表Accepted Code,即实现了正确算法并通过所有测试用例的代码。 【标签】"POJ,3006,Dirichlet's Theorem on Arithmetic Progressions"用于标识这个题目在POJ平台上的编号以及其主题。POJ是一个流行的...