Codeforces #295(Div 2) A Pangram、B Two Buttons、C DNA Alignment

A

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
using namespace std;
int A[50];
int main()
{
	int n; string s;
	cin>>n;
	cin>>s;
	memset(A,0,sizeof(A));
	for(int i=0;i<n;i++)
	{
		int c;
		if(s[i] >= 'A' && s[i] <= 'Z')
			c = s[i] - 'A';
		else if(s[i] >= 'a' && s[i] <='z')  c = s[i] - 'a';
		A[c] = 1;
	}
	int flag = true;
	for(int i=0;i<26;i++) if(A[i] == 0)
	{
		flag = false;
		break;
	}
	if(flag) cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
	return 0;
}

B

/* ***********************************************
Author        :mogu
Created Time  :2015/3/9 10:17:30
File Name     :
************************************************ */

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cstdio>
using namespace std;

int main()
{
	int N, M;
	cin>>N>>M;
	int r = 0;
	while(M > N)
	{
		if(M & 1) M++,r++;
		M /= 2;
		r++;
	}
	cout<<r + N - M<<endl;
    return 0;
}
C题
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
#include <cmath>
#define LL long long
using namespace std;
const int mod = 1e9 + 7;
const int MAXN = 100000 + 10;
int C[MAXN];
LL pow_mod(LL a, LL b)
{
    LL res = 1;
    while(b)
    {
        if(b & 1) res = res * a % mod;
        a = a * a % mod;
        b>>=1;
    }
    return res;
}
int main()
{
    int n; string s;
    while(cin>>n)
    {
        cin>>s;
        memset(C, 0, sizeof(C));
        int len = s.length();
        for(int i=0;i<len;i++)
        {
            if(s[i] == 'A') C[0]++;
            else if(s[i] == 'G') C[1]++;
            else if(s[i] == 'C') C[2]++;
            else C[3]++;
        }
        sort(C,C+4,greater<int>());
        int x = 1;
        for(int i=1;i<=3;i++)
        {
            if(C[i] == C[0]) x++;
            else break;
        }
        int ans = pow_mod(x, n);
        cout<<ans<<endl;
    }
    return 0;
}
				
时间: 2024-10-12 07:23:17

Codeforces #295(Div 2) A Pangram、B Two Buttons、C DNA Alignment的相关文章

Codeforces Round #295 (Div. 2)——A——Pangram

A word or a sentence in some language is called a pangram if all the characters of the alphabet of this language appear in it at least once. Pangrams are often used to demonstrate fonts in printing or test the output devices. You are given a string c

Codeforces Round #295 (Div. 2)

A. Pangram 题意:给出长度为n的字符串,判断26个字母(比如a,A都算作a出现了)是否都在该串中出现了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<algorithm> 6 using namespace std; 7 8 typedef long long LL; 9 10 11 12 int mai

【Codeforces Round 521】Codeforces #295(div. 1)

521A DNA Alignment 题意:给一个字符串\(s\),求有多少个\(t\)使得\(\rho(s,t)\)最大. 其中,\(t\)是一个和\(s\)等长的串, \(\rho(s,t)=\max_{i=0}^{n-1}\max_{j=0}^{n-1}h(shift(s,i),shift(t,i))\) \(h(s,t)=\sum_{i=0}^ns_i\ne t_i\) \(shift(s,i)=s_{i+1\dots n}+s_{1\dots i}\) 思路:首先我们看最大的答案是多少

Codeforces #258 Div.2 E Devu and Flowers

大致题意: 从n个盒子里面取出s多花,每个盒子里面的花都相同,并且每个盒子里面花的多数为f[i],求取法总数. 解题思路: 我们知道如果n个盒子里面花的数量无限,那么取法总数为:C(s+n-1, n-1) = C(s+n-1, s). 可以将问题抽象成:x1+x2+...+xn = s, 其中0<=xi <= f[i],求满足条件的解的个数. 两种方法可以解决这个问题: 方法一:这个问题的解可以等价于:mul = (1+x+x^2+...+x^f[1])*(1+x+x^2+...+x^f[2]

Codeforces #259 Div.2

A. Little Pony and Crystal Mine 模拟题. 用矩阵直接构造或者直接根据关系输出 B. Little Pony and Sort by Shift 模拟题. 通过提供的操作得到的序列只能是两段递增或者整个序列递增. 那么可以求得第一段递增序列长度为0-p 如果整个序列是递增,即 p= n-1 那么操作次数就是0. 否则,假设是两段递增,把原始的序列恢复出来,设当前序列是AB,那么A就是0-p BA = (A'B')', '表示对序列进行翻转, 如果BA是有序的,那么需

Codeforces #250 (Div. 2) C.The Child and Toy

之前一直想着建图...遍历 可是推例子都不正确 后来看数据好像看出了点规律 就抱着试一试的心态水了一下 就....过了..... 后来想想我的思路还是对的 先抽象当前仅仅有两个点相连 想要拆分耗费最小,肯定拆相应权值较小的 在这个基础上考虑问题就能够了 代码例如以下: #include <cstdio> #include <iostream> #include <algorithm> #define MAXN 10010 #define ll long long usi

Codeforces #256 Div.2

B. Suffix Structure 1. 先判断s去掉一些元素是否能构成t,如果可以就是automaton 判断的方法也很简单,two pointer,相同元素同时++,不相同s的指针++,如果t能全找到,那么s能够去掉元素构成t. bool f(string s, string t) { int i = 0, j = 0; while (i < s.size() && j < t.size()) { if (s[i] == t[j]) { i++; j++; } else

jQuery学习笔记之DOM树、创建新节点、append方法

DOM树. 创建新节点.创建元素节点和文本节点. 创建元素节点/文本节点/属性节点 节点内部插入元素append方法 节点内部插入元素prepend方法 节点外部插入元素after方法 节点外部插入元素before方法 DOM树 创建div元素节点 创建元素节点和文本节点 创建元素节点.文本节点.属性节点 append方法 prepend方法 after方法 before方法

【2017-03-31】JS-DOM操作:操作属性、彩虹导航栏、定时器、操作内容、创建元素并添加、操作相关元素

一.操作属性 1.什么是属性: <div class="div" id="div1" style="" ></div> 其中class   id   style   都是这个div的属性 <input type="button" value="这是一个按钮" disabled="disabled"  aa="haha" /> dis