hdu 5944 Fxx and string

\:nn,下标从1开始,第\:i\:i位的字母为\:s_is?i??,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件

1、i,j,k\:i,j,k三个数成等比数列

2、s_i=s?i??=‘yy‘,s_j=,s?j??=‘rr‘,s_k=,s?k??=‘xx‘

3.i/ji/j和k/jk/j中必须有整数\:nn,下标从1开始,第\:i\:i位的字母为\:s_is?i??,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件

1、i,j,k\:i,j,k三个数成等比数列

2、s_i=s?i??=‘yy‘,s_j=,s?j??=‘rr‘,s_k=,s?k??=‘xx‘

3.i/ji/j和k/jk/j中必须有整数\:nn,下标从1开始,第\:i\:i位的字母为\:s_is?i??,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件

1、i,j,k\:i,j,k三个数成等比数列

2、s_i=s?i??=‘yy‘,s_j=,s?j??=‘rr‘,s_k=,s?k??=‘xx‘

3.i/ji/j和k/jk/j中必须有整数

题意确实有点不清晰,第3点应该是i必须被j整除且j必须被k整除,之后就是循环i,枚举q,暴力解题

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
char a[10010];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%s",a+1);
        int ans=0;
        int n=strlen(a+1);
        for(int i=1; i<=n; i++)
        {
            if(a[i]==‘y‘)
                for(int j=2; i*j*j<=n; j++)
                {
                    if(a[i*j]==‘r‘&&a[i*j*j]==‘x‘) ans++;
                }
        }
        for(int i=n; i>=1; i--)
        {
            if(a[i]==‘y‘)
                for(int j=2; i/j/j>=1; j++)
                {
                    if((i%j)||(i%(j*j))) continue;
                    if(a[i/j]==‘r‘&&a[i/j/j]==‘x‘) ans++;
                }
        }
        printf("%d\n",ans);
    }
    return 0;
}




				
时间: 2024-11-06 12:24:40

hdu 5944 Fxx and string的相关文章

HDU 5944 Fxx and string(水题)

传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 1007    Accepted Submission(s): 422 Description Problem DescriptionYoung theoretical computer scientist Fxx get a string which

hdu 5030 Rabbit&#39;s String(后缀数组&amp;二分)

Rabbit's String Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 288    Accepted Submission(s): 108 Problem Description Long long ago, there lived a lot of rabbits in the forest. One day, the

hdu 5030 Rabbit&#39;s String(后缀数组)

题目链接:hdu 5030 Rabbit's String 题目大意:给定k和一个字符串,要求将字符串拆分成k个子串.然后将每个子串中字典序最大的子串选出来,组成一个包含k个字符串的集合,要求这个集合中字典序最大的字符串字典序最小. 解题思路:网赛的时候试图搞了一下这道题,不过水平还是有限啊,后缀数组也是初学,只会切一些水题.赛后看了一下别人的题解,把这题补上了. 首先对整个字符串做后缀数组,除了处理出sa,rank,height数组,还要处理处f数组,f[i]表示说以0~sa[i]开头共有多少

HDU 5030 Rabbit&#39;s String

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5030 题意:给出一个长度为n的串S,将S分成最多K个子串S1,S2,……Sk(k<=K).选出每个子串Si(1<=i<=k)的最大子串SSi.最后使得k个SSi的最大值最小. 思路:首先用后缀数组求出所有子串.二分答案串,判定是否存在一种分法满足要求.对于答案串A,设A起始位置所组成的后缀排名为t,在排名为[t+1,n]的后缀中截取子串S[Li,Ri],使得Ri<n(下标1到n),且该

hdu 3336 Count the string

Count the stringTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4239    Accepted Submission(s): 1977 Problem Description It is well known that AekdyCoin is good at string problems as well as num

HDU 3973 AC&#39;s String (substr 强行匹配)

AC's String Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1127    Accepted Submission(s): 316 Problem Description You are given some words {Wi}. Then our stupid AC will give you a very long

hdu 4850 Wow! Such String!

这是当时西安邀请赛的题目,也就是因为这道题,我们无缘银牌... 其实这道题的大致想法当时我想出来了,就是我是想找到一条通过所有顶点的通路,顶点是所有的长度是4的子串.但是当时没有尝试搜索,以为不会这么简单就找到那条路.但是现在明白了,对于所有顶点度数为偶数的图,一定可以找到这样一条路的. 下面是代码 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const in

HDU 3973 AC&#39;s String 字符串哈希

HDU 3973 通过哈希函数将一个字符串转化为一个整数,通过特定的方式可以使得这个哈希值几乎没有冲突(这就是关键之处,几乎没有视为没有= =!, 其实也可以考虑实现哈希冲突时的处理,只是这道题没必要而已),然后使用线段树维护修改后的哈希值. 因为输入的字符串只有26个,考虑使用一个大于等于26的素数p作为进制,然后将原串转化为一个p进制的数mod 2^63(也相当于自然溢出),然后这个数存入map中,然后使用线段树维护长串区间的哈希值,hash[l, r]表示将区间[l, r]的字符串转化为p

hdu 4850 Wow! Such String!(欧拉回路)

题目链接:hdu 4850 Wow! Such String! 题目大意:给定一个n,要求输出一个长度为n的字符串,并且不会有长度大于等于4的重复的子串,不能得到输出impossible. 解题思路:这题有一个误导性的地方,500000,其实是构造不到那么长的,我们考虑所有不相同并且长度为4的串,一共有s=264个,那么我们假设有一个很长的串,满足不会有长度大于等于4的重复的子串,那么以0,1,2,3...的位置为起始,长度为4的子串一定都是s中的某一个串,因为不重复,所以肯定只有264个位置做