题目链接:点击查看

题目大意:给出定义函数h(s,t),其值等于字符串s和字符串t中相同字符的位置的个数,再给出一个函数p(s,t),简单来说就是一个二重循环,每次让字符串的第一个元素移到最后一个元素,现有s和t两个字符串然后共有n*n种匹配情况的函数h,现在给出一个字符串s,问有能构造出多少种t,满足p(s,t)达到最大值

题目分析:这个题目的题意比较难读懂,读懂了之后也不好想。。最后我是看网上的题解才勉强能想出这个题的

我们在已知字符串s的情况下,设在t中构造了一个字符‘A’,那么字符‘A’在函数p(s,t)种的贡献是 (A在s中的数量)*n

则为了让p(s,t)尽量大,因为n是不能改变的,所以我们需要用s中出现最多的字符来补全字符串t,若只有一种字符出现的次数最多,那么字符串t的每个位置都可以有1种方式补全,那么答案就是,若有两种字符出现的次数都是最多的,那么字符串t的每个位置都可以有两种方式补全,那么答案就是,依次类推,我们只需要计算出有多少种出现次数最多的字符即可

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e6+100;const int mod=1e9+7;int cnt[30]={0};LL q_pow(LL a,LL b)
{LL ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}int main()
{
//  freopen("input.txt","r",stdin);int n;scanf("%d",&n);string s;cin>>s;int mmax=-inf;for(int i=0;i<s.size();i++)cnt[s[i]-'A']++;for(int i=0;i<26;i++)mmax=max(mmax,cnt[i]);int num=0;for(int i=0;i<26;i++)if(mmax==cnt[i])num++;printf("%lld\n",q_pow(num,n));return 0;
}

CodeForces - 520C DNA Alignment(思维)相关推荐

  1. CodeForces 828E DNA Evolution(树状数组)题解

    题意:给你一个串k,进行两个操作: "1 a b":把a位置的字母换成b "2 l r s":求l到r有多少个字母和s匹配,匹配的条件是这样:从l开始无限循环s ...

  2. 【CodeForces - 520C】DNA Alignment (快速幂,思维)

    题干: Vasya became interested in bioinformatics. He's going to write an article about similar cyclic D ...

  3. DNA Alignment

    http://codeforces.com/problemset/problem/520/C 题解:思维+数学+快速幂 /* *@Author: STZG *@Language: C++ */ #in ...

  4. 【人生杂谈】生命DNA/理性思维/天才神经病

    [荒郊野岭里的一副眼镜] 你和你的朋友在一个人迹罕至的荒郊野岭旅游.突然你们看见了地上有一副眼镜?,很简单,两个镜片一个框.   你说,天哪,看看千百年的沧海桑田,居然自然生成了这个神奇的玩意儿.你的 ...

  5. CodeForces - 1593G Changing Brackets(思维)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的括号序列,其中包含了 {(,),[,]}\{(,),[,]\}{(,),[,]} 四种括号,现在可以进行两种操作: 将括号反转,代价为 000, ...

  6. CodeForces - 1567C Carrying Conundrum(思维/状压)

    题目链接:点击查看 题目大意:规定加法中使用隔项进位,问给定的 nnn 有多少种方案可以通过 "隔项进位加法" 得到 题目分析:隔项进位意味着奇偶位置的数字互不影响,所以将奇偶位置 ...

  7. CodeForces - 1535C Unstable String(思维)

    题目链接:点击查看 题目大意:规定一个字符串将问号都替换成 000 或 111 后满足 010101 交替的话,该字符串是合法的,现在给出一个长度为 nnn 的字符串,求合法子串的个数 题目分析:两种 ...

  8. CodeForces - 1353E K-periodic Garland(思维+dp)

    题目链接:点击查看 题目大意:给出 n 个灯泡以及其初始状态(开或关),每次操作可以将任意一个灯泡的状态置反,问最少需要操作多少次,可以使得所有开着的灯泡之间相距 k 个单位 题目分析:因为需要满足所 ...

  9. CodeForces - 1323B Count Subrectangles(思维)

    题目链接:点击查看 题目大意:给出一个数组 a 和数组 b 只由 0 和 1 构成,构造出矩阵 maze[ x ][ y ] = a[ x ] * b[ y ],显然maze矩阵同样只由 0 和 1 ...

最新文章

  1. LR为什么要先离散化
  2. 这本 Kubernetes 图书,你一定不要错过!
  3. setAdapter(adapter)空指针nullPointer 解决办法
  4. matlab在图像调用Gabor滤波
  5. wxWidgets:wxStdOutputStreamBuffer类用法
  6. linux【报错】userdel: user xiaoming is currently used by process 4713解决
  7. Java反射获取Android系统属性值
  8. 搜索框+ 定时器+Bug解决
  9. appium+python环境搭建_想学习自动化测试,已经学习了appium+python环境搭建和python的简单内容,下面该怎么做?...
  10. java实例化泛型_Java让泛型实例化的方法
  11. SharePoint CAML 查询时间类型
  12. 公关营销策划书的要点及分析
  13. 企查查如何在线查询失信企业?
  14. 【计算机导论调研报告】计算机从业人员的职业道德
  15. java开发抢红包算法,抢红包算法的实现-java
  16. 阿里云短信功能网址链接
  17. 知识付费小程序源码可开激励广告流量主+虚拟资源变现+附带视频教程
  18. March 4 2017 Week 10 Saturday
  19. vc++ 2005 发布程序
  20. [Selenium] Selenium定向爬取海量精美图片及搜索引擎杂谈

热门文章

  1. MySQL高级 - 锁 - InnoDB行锁 - 行锁升级为表锁
  2. CGLib 调用API 及原理分析
  3. request域对象和请求转发
  4. RocketMQ的Producer详解之分布式事务消息(原理分析)
  5. ServletContext_功能_获取文件服务器路径
  6. Ribbon-2通过代码自定义配置ribbon
  7. 手动使用cglib代理(了解)
  8. JavaScript中替换字符串中的所有小数点
  9. php开启mysqlnd,如何启用mysqlnd的PHP?
  10. JUnit 5 常用注解与方法