poj1850 Code

题意:输出若干个给定的字符串($length<=10$)在字典序中的位置,字符串中的字母必须严格递增。

读取到非法字符串时,输出“0”,终止程序。(poj1496:继续读取)

我们分成2种情况讨论字典序小于给定字符串的字符串个数

1.长度比给定字符串小

其实长度为$i$的字符串的个数就是$C(26,i)$

因为我们随机选取$i$个字符后,从小到大依次取出,是可以保证字符串是有序的。

2.长度等于给定字符串

我们枚举每一位,计算从该位开始小于给定字符串的个数,同样可以用组合数计算。

预处理组合数一下........

 #include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
char a[];
int C[][];
int main(){
for(int i=;i<=;++i)
for(int j=;j<=i;++j)//组合数预处理
C[i][j]=(!j||i==j)?:C[i-][j]+C[i-][j-];
while(cin>>a){//用scanf就OLE(大雾)
int len=strlen(a),ans=; bool flag=;
for(int i=;i<len;++i)
if(a[i]<=a[i-]){
printf("0\n");
flag=; break;
}
if(flag) continue;//1850改为return 0;
for(int i=;i<len;++i) ans+=C[][i];//长度<len
for(int i=;i<len;++i){//长度==len,字典序排名在给定串前,枚举每一位
for(char ch=i?a[i-]+:'a';ch<a[i];++ch)//枚举每个小于a[i]的字母
ans+=C['z'-ch][len-i-];
}printf("%d\n",ans);
}return ;
}

poj1496/poj1850 Code

poj1496 Word Index / poj1850 Code(组合数学)的更多相关文章

  1. POJ1850——Code(组合数学)

    Code DescriptionTransmitting and memorizing information is a task that requires different coding sys ...

  2. POJ 1496 Word Index

    组合数学....和上一题是一样的.... Word Index Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4303 Acce ...

  3. poj1850 Code【组合数学】By cellur925

    题意: * 按照字典序的顺序从小写字母 a 开始按顺序给出序列 (序列中都为升序字符串)* a - 1* b - 2* ...* z - 26* ab - 27* ...* az - 51* bc - ...

  4. Code(组合数学)

    Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8766 Accepted: 4168 Description Tran ...

  5. poj1850 Code

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10059   Accepted: 4816 Description ...

  6. POJ 1850:Code 组合数学

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8710   Accepted: 4141 Description ...

  7. Discuz! x3.1 /utility/convert/index.php Code Execution Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Discuz! x3.1的插件/utility/convert/inde ...

  8. poj:1850 Code(组合数学?数位dp!)

    题目大意:字符的字典序依次递增才是合法的字符串,将字符串依次标号如:a-1 b-2 ... z-26 ab-27 bc-52. 为什么题解都是组合数学的...我觉得数位dp很好写啊(逃 f[pos][ ...

  9. POJ1850 Code(组合+康托展开)

    题目问一个合法字符串的字典序是第几个,合法的字符串是指里面的字符严格递增. 先判断合不合法,然后用类似康托展开的过程去求.大概过程就是用组合数算出某长度某前缀有几个,累加起来. 真难一遍写对.. #i ...

随机推荐

  1. 《C++ Primer Plus》10.2 抽象和类 学习笔记

    10.2.1 类型是什么基本类型完成了下面的三项工作:* 决定数据对象需要的内存数量:* 决定如何解释内存中的位(long和float在内存中占用的位数相同,但是将它们转换为数值的方法不同):* 决定 ...

  2. Linux命令之type - 显示命令的类型

    用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令 ...

  3. android基础---->发送和接收短信

    收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.今天我们开始自己创建一个简单的发送和接收短 ...

  4. hibernate实现有两种配置,xml配置与注释配置。<转>

    <注意:在配置时hibernate的下载的版本一定确保正确,因为不同版本导入的jar包可能不一样,所以会导致出现一些错误> hibernate实现有两种配置,xml配置与注释配置. (1) ...

  5. vim命令删除后重新安装

    个人原创博客,转载请注明,否则追究法律责任 2017-09-30-09:51:20 1,删除vim命令.模拟错误 [root@localhost ~]# which vim/usr/bin/vim[r ...

  6. Android在ArrayAdapter<>里如何得到List<>的Items

    public class ItemAdapter extends ArrayAdapter<DemoModel> { private final List<DemoModel> ...

  7. 三维凸包求凸包表面的个数(HDU3662)

    3D Convex Hull Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. mysql 一对多,多对多

    一对多 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 班级表(一表) 名称 教室 总人数 学科 PHP141115 A814 53 PHP PHP140925 ...

  9. Javascript一(变量,数据类型,正则表达式,数据,语句)

    本文章适合具有一定程序编程语言基础的人士阅读,最好学完Java基础再来阅读本文章更容易理解语言初学者会看起来比较费劲,不易理解 一.导入脚本 在html导入Javascript的格式是: <sc ...

  10. Lucene.net之解决锁的问题

    public sealed class SearchIndexManager { private static readonly SearchIndexManager searchManager=ne ...