HDU6542 SSY and JLBD 2019CCPC湖南全国邀请赛(广东省赛、江苏省赛)重现赛

指路:http://acm.hdu.edu.cn/contests/contest_show.php?cid=858

当时看到全英文的时候是真的放弃了,因为我的确对中文题依赖太深了,那段时间真的一点都不想学习,一点都不想碰到代码,所以现在要重新去做一做吧
照旧贴上大佬们的题解链接:https://blog.csdn.net/weixin_43880084/article/details/90344526
https://www.cnblogs.com/-yjun/p/10891597.html

Hello GDCPC

题目:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1005&cid=858
参考:https://www.e-learn.cn/content/qita/2326754
题意:给你一个字符串,让你在里面寻找可不连续的字符串“xtCpc”,问有多少个
题目有问题,给了个gdCpc
样例:输入:10 xtCxtCpcpc 输出:2
思路:只要保证每个字符前面出现的次数大于本字符出现的次数就好(想想为什么)
为了保证字符顺序

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
char s[maxn];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        scanf("%s",s);
        int x1=0,x2=0,x3=0,x4=0,x5=0,ans=0;
        for(int i=0;i<n;i++)
        {
            if(s[i]=='x') x1++;
            if(s[i]=='t'&&x2<x1) x2++;
            if(s[i]=='C'&&x3<x2) x3++;
            if(s[i]=='p'&&x4<x3) x4++;
            if(s[i]=='c'&&x5<x4) x5++;
            if(x1&&x2&&x3&&x4&&x5)
            {
                ans++;
                x1--;
                x2--;
                x3--;
                x4--;
                x5--;
            }
        }  
        printf("%d\n",ans);
    }
    return 0;
}

也可用队列记录每个字符的位置,然后贪心,挑出每个队列中符合条件的最前面的字符.直到有一个队列为空.
参考:https://www.cnblogs.com/-yjun/p/10891597.html

#include <bits/stdc++.h>
#define P pair<int,int>
#define fir first
#define sec second
using namespace std;
typedef long long ll;

const int N=2e5+5;
const int mod=998244353;
char s[N];

map<char,int> m;
int main(){
    m['x']=1;m['t']=2;m['C']=3;m['p']=4;m['c']=5;
    int n;
    while(~scanf("%d%s",&n,s)){
        queue<int> q[10];
        for(int i=0;i<n;i++){
            q[m[s[i]]].push(i);
            //cout<<m[s[i]]<<endl;
        }
        int ans=0;
        while(!q[1].empty()){
            int pos=q[1].front();
            q[1].pop();
            int f=0;
            for(int i=2;i<=5;i++){
                while(!q[i].empty()&&pos>q[i].front()) q[i].pop();
                if(q[i].empty()){
                    f=1;
                    break;
                }
                else pos=q[i].front(),q[i].pop();
            }
            if(f) break;
            else ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

或者用map,来自https://www.cnblogs.com/-yjun/p/10891597.html

#include <bits/stdc++.h>
#define P pair<int,int>
#define fir first
#define sec second
using namespace std;
typedef long long ll;

const int N=2e5+5;
const int mod=998244353;
char s[N];
//map<char,int> m;

int main(){
    int n;
    while(~scanf("%d%s",&n,s)){
        map<string,ll> st;
        for(int i=0;i<n;i++){
            if(s[i]=='x') st["x"]++;
            else if(s[i]=='t'){
                if(st["x"]>0) st["x"]--,st["xt"]++;
            }
            else if(s[i]=='C'){
                if(st["xt"]>0) st["xt"]--,st["xtC"]++;
            }
            else if(s[i]=='p'){
                if(st["xtC"]>0) st["xtC"]--,st["xtCp"]++;
            }
            else if(s[i]=='c'){
                if(st["xtCp"]>0) st["xtCp"]--,st["xtCpc"]++;
            }
        }
        cout<<st["xtCpc"]<<endl;
    }
    return 0;
}

Can you raed it croretcly?(模拟)

题目:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1012&cid=858
参考:https://www.e-learn.cn/content/qita/2326751
思路:就是判断两个字符串相同,注意如果不同的时候要分情况讨论

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(register int i=(a);i<=(b);i++)
#define dep(i,a,b) for(register int i=(a);i>=(b);i--)
using namespace std;
const int maxn=2e5+5;
//const double pi=acos(-1.0);
//const double eps=1e-9;
//const ll mo=1e9+7;
int n,m,k;
int a[maxn],c[maxn];
int ans,tmp,cnt;
int flag;
char s[maxn],ss[maxn];
bool ok[maxn];
string s1,s2;
int main()
{
    int T,cas=1;
    while(scanf("%s%s",s,ss)!=EOF)
    {
        s1=s;s2=ss;
        int l1=s1.length();
        int l2=s2.length();
        if(s1==s2) puts("Equal");
        else
        {
            if(l1!=l2) puts("No");
            else if(s1[0]==s2[0]&&s1[l1-1]==s2[l2-1])
            {
                sort(s1.begin(),s1.end());
                sort(s2.begin(),s2.end());
                if(s1==s2) puts("Yes");
                else puts("No");
            }
            else puts("No");
        }
    }
    return 0;
}

SSY and JLBD

题目:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1011&cid=858
参考:https://www.cnblogs.com/-yjun/p/10891597.html

思路:1.十三幺:东,南,西,北,红中,白板,发财,一条,九条,一万,九万,一筒,九筒,若这十三张3牌你都有,那就随便胡其中一个(只能胡这十三种任何一个,其他不行)
2.九莲宝灯:在万、筒、条中的某一种以1112345678999的形式加上1到9其中任意一张成立,必须是门前清的状态。也称作“九连宝灯”。

分析:思考下这两种胡牌状态
十三幺:万 筒 条 至少需要 1,9 为六张,东,南,西,北,红中,白板,发财, 为七张 ,剩下为其中一张
可记录一下这些牌的个数,如果都大于等于1,且总和为14即可。
同样九莲宝灯: 万筒条三种,可记录每种出现的次数,而且记录下每种里面每个牌的个数。
只要总次数为14并且有三个以上的1 三个以上的9 中间2345678大于等于1就可以。
else 不知道
原文:https://blog.csdn.net/qq_37748451/article/details/90368388

#include <bits/stdc++.h>
#define P pair<int,int>
#define fir first
#define sec second
using namespace std;
typedef long long ll;

const int N=2e5+5;
const int mod=998244353;
map<string,int> m;
string t[10]={
"dong","nan","xi","bei","zhong","fa","bai"
};
int main(){
    string s;
    int f=0;
    int ma=0;
    string tmp="jj";
    string hh;
    for(int i=1;i<=14;i++){
        cin>>s;
        if(s[0]<='9'&&s[0]>='0'){
            if(tmp=="jj") tmp=s[1];
            if(s[1]!=tmp[0]) ma=1;
        }
        else ma=1;
        if(m[s]==1&&f==0){
            f=1;
            string hh=s;
            continue;
        } 
        m[s]++;
    }
    map<string,int>::iterator it=m.begin();
    if(m["1w"]==1&&m["9w"]==1&&m["1p"]==1&&m["9p"]==1&&m["1s"]==1&&m["9s"]==1){
        int f=0;
        for(int i=0;i<7;i++){
            if(m[t[i]]!=1) f=1;
        }
        if(f) puts("I dont know!");
        else puts("shisanyao!");
    }
    else{
        if(ma) puts("I dont know!");
        else{
            m[hh]++;
            if(m["1"+tmp]>=3&&m["9"+tmp]>=3&&m["2"+tmp]>=1&&m["8"+tmp]>=1){
                puts("jiulianbaodeng!");
            }
            else{
                puts("I dont know!");
            }
        }
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,151评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,465评论 3 405
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,429评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,147评论 1 301
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,149评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,614评论 1 315
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,965评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,950评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,486评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,524评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,640评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,228评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,976评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,407评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,552评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,215评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,714评论 2 366

推荐阅读更多精彩内容