HDU刷题五

1020:给一个字符串仅包括A到Z,要求重写,把连续出现的字母改为“次数+字母”,如ABBCCC改为A2B3C(次数为1省略)
题解:扫一次记录每个字母出现次数即可

#include 
using namespace std;
int main(){
    ios::sync_with_stdio(false);cin.tie(0);
    int t;cin>>t;
    int cnt[100003];char chr[100003];
    while(t--){
        string s;cin>>s;
        int len=s.size(),cnt_id=0,id=0,cntTmp;
        while(id1)cout<

2021:给出N,问N是不是在斐波拉数列中,范围1E6,直接打表即可

2022:给出N,然后是N个数的入栈顺序,再给出栈顺序,问能否按出栈顺序出栈,直接模拟即可

2023:给出N,问N个数按编号递增顺序入栈,有多少种出栈顺序,直接卡特兰数F(n)=c(2n,n)/(n+1)

2024:给出N个数的序列,从中取M个不重复的子区间,问M个区间和最大值是多少

#include 
using namespace std;
int a[1000000+10],dp[1000000+10],Max[1000000+10];
int main(){
    int n,m,mmax;
    while(cin>>m>>n){
        for (int i=1;i<=n;i++)cin>>a[i];
        memset(dp,0,sizeof(dp));
        memset(Max,0,sizeof(Max));
        for (int i=1;i<=m;i++){
            mmax=-0x7fffffff;
            for(int j=i;j<=n;j++){
                dp[j]=max(dp[j-1],Max[j-1])+a[j];
                Max[j-1]=mmax;
                mmax=max(mmax,dp[j]);
            }
        }
        cout<

 

你可能感兴趣的:(算法训练)