CodeForces - 520C DNA Alignment(思维)
题目链接:点击查看
题目大意:给出定义函数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(思维)相关推荐
- CodeForces 828E DNA Evolution(树状数组)题解
题意:给你一个串k,进行两个操作: "1 a b":把a位置的字母换成b "2 l r s":求l到r有多少个字母和s匹配,匹配的条件是这样:从l开始无限循环s ...
- 【CodeForces - 520C】DNA Alignment (快速幂,思维)
题干: Vasya became interested in bioinformatics. He's going to write an article about similar cyclic D ...
- DNA Alignment
http://codeforces.com/problemset/problem/520/C 题解:思维+数学+快速幂 /* *@Author: STZG *@Language: C++ */ #in ...
- 【人生杂谈】生命DNA/理性思维/天才神经病
[荒郊野岭里的一副眼镜] 你和你的朋友在一个人迹罕至的荒郊野岭旅游.突然你们看见了地上有一副眼镜?,很简单,两个镜片一个框. 你说,天哪,看看千百年的沧海桑田,居然自然生成了这个神奇的玩意儿.你的 ...
- CodeForces - 1593G Changing Brackets(思维)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的括号序列,其中包含了 {(,),[,]}\{(,),[,]\}{(,),[,]} 四种括号,现在可以进行两种操作: 将括号反转,代价为 000, ...
- CodeForces - 1567C Carrying Conundrum(思维/状压)
题目链接:点击查看 题目大意:规定加法中使用隔项进位,问给定的 nnn 有多少种方案可以通过 "隔项进位加法" 得到 题目分析:隔项进位意味着奇偶位置的数字互不影响,所以将奇偶位置 ...
- CodeForces - 1535C Unstable String(思维)
题目链接:点击查看 题目大意:规定一个字符串将问号都替换成 000 或 111 后满足 010101 交替的话,该字符串是合法的,现在给出一个长度为 nnn 的字符串,求合法子串的个数 题目分析:两种 ...
- CodeForces - 1353E K-periodic Garland(思维+dp)
题目链接:点击查看 题目大意:给出 n 个灯泡以及其初始状态(开或关),每次操作可以将任意一个灯泡的状态置反,问最少需要操作多少次,可以使得所有开着的灯泡之间相距 k 个单位 题目分析:因为需要满足所 ...
- CodeForces - 1323B Count Subrectangles(思维)
题目链接:点击查看 题目大意:给出一个数组 a 和数组 b 只由 0 和 1 构成,构造出矩阵 maze[ x ][ y ] = a[ x ] * b[ y ],显然maze矩阵同样只由 0 和 1 ...
最新文章
- LR为什么要先离散化
- 这本 Kubernetes 图书,你一定不要错过!
- setAdapter(adapter)空指针nullPointer 解决办法
- matlab在图像调用Gabor滤波
- wxWidgets:wxStdOutputStreamBuffer类用法
- linux【报错】userdel: user xiaoming is currently used by process 4713解决
- Java反射获取Android系统属性值
- 搜索框+ 定时器+Bug解决
- appium+python环境搭建_想学习自动化测试,已经学习了appium+python环境搭建和python的简单内容,下面该怎么做?...
- java实例化泛型_Java让泛型实例化的方法
- SharePoint CAML 查询时间类型
- 公关营销策划书的要点及分析
- 企查查如何在线查询失信企业?
- 【计算机导论调研报告】计算机从业人员的职业道德
- java开发抢红包算法,抢红包算法的实现-java
- 阿里云短信功能网址链接
- 知识付费小程序源码可开激励广告流量主+虚拟资源变现+附带视频教程
- March 4 2017 Week 10 Saturday
- vc++ 2005 发布程序
- [Selenium] Selenium定向爬取海量精美图片及搜索引擎杂谈