`
java-mans
  • 浏览: 11982518 次
文章分类
社区版块
存档分类
最新评论

POJ 1850 Code

 
阅读更多

虽然有点水,不过做完还是有收获的

#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

    【标题】"POJ1850-Code"是一个关于北京大学在线编程平台POJ(Problem Online Judge)上的一道题目1850的解题报告和解决方案。这道题目涉及了算法设计和编程实践,是计算机科学教育中常见的训练方式,旨在提升学生的...

    poj 1780 Code.md

    poj 1780 Code.md

    POJ Code Submitter V1.2 (Build 1012)(POJ代码提交器)

    POJ Code Submitter V1.2 (Build 1012)版本更新: 1.修复了初次使用报错的问题 2.修复了长时间无操作重新验证身份失败的问题 3.修复了登录界面可以键入非法字符的BUG 4.修复了登录界面键入新用户名时,密码框不清空...

    POJ1837-Balance

    AC代码代表Accepted Code,即通过系统测试的代码,表明代码能够正确解决该问题。 【标签】"POJ 1837 Balance"是这个题目的标识,方便在POJ平台上搜索和分类。"Balance"可能暗示题目涉及到某种平衡状态或操作,例如...

    POJ1416-Shredding Company

    AC代码指的是Acceptance Code,即通过了所有测试用例的正确代码。在这个问题中,AC代码通常会包含对动态规划状态的定义、状态转移方程的建立以及递归或迭代的实现过程。 【标签】"POJ 1416 Shredding Company" 这...

    POJ3295-Tautology

    AC代码指的是Accepted Code,即能够正确解决所有测试案例的代码,表明作者已经成功地解决了这个问题。 【标签】"POJ 3295 Tautology"是这个问题的标识,其中"POJ"代表了题目来源,"3295"是题目在系统中的编号,...

    POJ1020-Anniversary Cake【有技巧的DFS】

    AC代码代表Accepted Code,意味着提交的代码已经通过了系统的所有测试,成功实现了题目所要求的功能。 【标签】"POJ 1020 Anniversary Cake DFS"中,“POJ”是Problem Online Judge的缩写,是中国的一个在线编程...

    POJ3373-Changing Digits【DFS+强剪枝】

    AC代码是指 Accepted Code,意味着提交的代码已经通过了所有测试用例,证明其正确性。 标签“POJ 3373 Changing Digits DFS 强剪枝”进一步强调了问题的来源和关键算法。POJ 3373是问题的唯一标识,"Changing ...

    poj很多难题的源代码...

    "codeblock"可能是用户使用的编程环境,如Code::Blocks,这是一个流行的开源C++集成开发环境,适合进行算法编程。 综合以上信息,这个压缩包可以作为学习和提升算法技能的重要资源。它提供了实际问题的解决方案,...

    北大POJ初级-动态规划

    在这个部分,学员可以通过解题报告和已通过验证(AC,Accepted Code)的代码来深入理解动态规划的原理和应用。 动态规划的核心理念是将复杂问题分解为多个子问题,然后通过求解这些子问题的最优解来构建原问题的最...

    POJ3322.rar_poj33_www.3322.se.c

    在"POJ3322_Code.cpp"这个文件中,很可能包含了实现上述宽搜算法的C++代码。通过阅读和分析这个代码,我们可以了解到如何具体处理矩形方块的移动,如何构建和更新搜索空间,以及如何判断是否到达目标位置等细节。这...

    POJ100题_C++_源码

    【描述】"C + + language learning poj100 question bank and code" 表明这个压缩包包含了100个POJ平台上的问题及其对应的C++解决方案。这些题目涵盖了各种难度和类型的算法问题,包括但不限于排序、搜索、图论、...

    北京大学poj2195源代码

    这是北京大学ACM也就是POJ2195的源代码,用的是最优匹配算法。

    POJ3277.rar_3277 poj_poj3277_多个面积_线段树

    压缩文件中的“POJ3277_Code.txt”很可能是这个问题的参考代码实现,而“www.pudn.com.txt”可能包含更多关于问题来源或者讨论的信息。“POJ3277说明.txt”则可能是对问题的详细解释或者解题思路的说明。 总的来说...

    POJ1002源代码

    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图论题目汇总

    在本篇文章中,我们将深入探讨POJ平台上的一系列经典图论问题,并根据提供的部分内容,总结出每个题目背后所涉及的核心算法和技术点。这些题目不仅考验了参赛者的逻辑思维能力,同时也对数据结构和算法的掌握提出了...

    ACM POJ PKU 最全题目分类

    ### ACM POJ PKU 最全题目分类解析 #### 动态规划(DP) 在计算机科学领域,动态规划(Dynamic Programming, DP)是一种重要的算法思想,主要用于解决多阶段决策过程中的优化问题。它通过将原问题分解成相互重叠的...

    POJ3259--Wormholes(bellman).rar_wormhole code _wormholes

    标题中的“POJ3259--Wormholes(bellman)”是指一个编程竞赛问题,源自POJ(Programming Online Judge)平台。这个问题涉及到利用贝尔曼-福特算法(Bellman-Ford Algorithm)解决“虫洞”(Wormholes)的问题。在...

    poj1433_expedition_pkujudge online

    this is an sample of the pku judge online code. poj 1433

    POJ3006-Dirichlet's Theorem on Arithmetic Progressions

    AC代码则代表Accepted Code,即实现了正确算法并通过所有测试用例的代码。 【标签】"POJ,3006,Dirichlet's Theorem on Arithmetic Progressions"用于标识这个题目在POJ平台上的编号以及其主题。POJ是一个流行的...

Global site tag (gtag.js) - Google Analytics