首页 > 其他分享 >CF138A Literature Lesson

CF138A Literature Lesson

时间:2024-01-31 22:14:20浏览次数:34  
标签:CF138A ps Literature string int j3 str Lesson 四行

原题传送门

分析

既然题目要求求出所有四行诗共同的形态,那我们就想到可以用位运算。
我们用二的次方来表示每一种形态,然后把每一篇诗的形态或起来,就可以得到最终的形态。输出的时候再拿个函数转一下就行了。

有了基本框架,我们就可以开始构造特殊情况。题目中说到如果有 aaaa 这种类型,那么它可以等同于任何别的类型。根据这个特征,我们可以规定这种类型为 0,这样它对答案就没有影响。题目中又说如果几篇四行诗中只要有一篇不属于任何类型,那这几篇四行诗就都不属于任何类型。所以可以将不属于任何类型的四行诗归为 7,也就是二进制 111,这样无论谁跟他或,都还是错误。

对于别的类型,如果在给出的几篇四行诗中有任意两篇类型不同,那或出来的答案就不是二的次方,所以在最终翻译答案的函数中,可以只翻译所有二的次方,其他一概判错。当然还要记得 aaaa 这种类型。

代码

#include <iostream>
using namespace std;
int n, k;
string err = "";
string getsuf(string str) { // 《大 膜 你》,如题目要求 
    int sise = str.size(), vcnt = 0;
    string ret;
    for (int i = sise - 1; i >= 0; i--) {
        vcnt += (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u');
        ret += str[i];
        if (vcnt == k) {
            return ret;
        }
    }
    err += "/"; // 元音不够,返回错误,但是错误每次都要改变,不然可能会误判 
    return err;
}
struct poem { // 结构体用于存储每一篇四行诗 
    int r;    // r 代表该四行诗的类型 
    string s1, s2, s3, s4; // 四行诗,所以四行(笑
    void getr() {          // 用于获取当前四行诗的类型 
        string j1 = getsuf(s1), j2 = getsuf(s2), j3 = getsuf(s3), j4 = getsuf(s4); // 每句话的后缀 
        if (j1 == j2 && j2 == j3 && j3 == j4)                                      // 每个后缀都相等,aaaa 
            r = 0;
        else if (j1 == j2 && j3 == j4) 
            r = 1;
        else if (j1 == j3 && j2 == j4) 
            r = 2;
        else if (j1 == j4 && j2 == j3) 
            r = 4;
        else                                                                       // 不属于任何类型,错误 
            r = 7;
    }
} ps[2505];
string conv(int tp) { // 用于把整形的答案转成输出的答案 
    return (tp == 1 ? "aabb" : (tp == 2 ? "abab" : (tp == 4 ? "abba" : (tp == 0 ? "aaaa" : "NO"))));
}
int main() {
    int ans = 0;
    cin >> n >> k;
    for (int i = 0; i < n; i++) {
        cin >> ps[i].s1 >> ps[i].s2 >> ps[i].s3 >> ps[i].s4;
        ps[i].getr();
        ans |= ps[i].r; // 好东西 
    }
    cout << conv(ans);
    return 0;
}

标签:CF138A,ps,Literature,string,int,j3,str,Lesson,四行
From: https://www.cnblogs.com/forgotmyhandle/p/18000225

相关文章

  • A Literature Survey about Why Is Prompt Tuning for Vision-Language Models Robust
    I.SummaryOverviewBackground:Avision-languagemodelcanbeadaptedtoanewclassificationtaskthroughfew-shotprompttuning.Wefindthatsuchaprompttuningprocessishighlyrobusttolabelnoises.Interest:Studyingthekeyreasonscontributing......
  • JavaImprove--Lesson06--正则表达式
    一.正则表达式的入门正则表达式是一些特定支付组成的,代表一个规则,简化代码,以字符的形式体现规则正则表达式,又称规则表达式,(RegularExpression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。......
  • OOP语义学 第一章 关于对象(Object Lessons)
    第一章关于对象(ObjectLessons)struct与class在C语言中,"数据"与"处理数据的操作(函数)"是分开声明的.语言本身没有支持"数据和函数"之间的关联性.我们把这种程序方法称为"程序性的(procedural)."举个例子:如果我们声明一个structPoint3d,像这样:typedefstructpoint3d{......
  • JMU-net-security-lesson-design WriteUp
    0.内网信息主机名(域名)IP端口www.qianxin.com172.10.10.10080news.qianxin.com172.10.10.10280blog.qianxin.com172.10.10.10180mysql192.168.100.403306redis192.168.100.1016379oa-web192.168.100.10022、801.登录www.qianxin.co......
  • JavaImprove--Lesson02--Object类,Objects工具类,封装类
    一.Object类Java中的Object类是所有类的超类,它是Java类层次结构的根类。这意味着所有的类都直接或间接地继承自Object类equals(Objectobj):用于比较两个对象是否相等。默认实现是比较对象的引用,但可以通过重写此方法来比较对象的内部状态。hashCode():返回对象的哈希码值,通......
  • JavaImprove--Lesson01--枚举类,泛型
    一.枚举认识枚举类枚举是一种特殊的类枚举的格式:修饰符 enmu  枚举类名{  名称1,名称2;  其它成员}//枚举类publicenumA{//枚举类的第一列必须是罗列枚举对象的名称X,Y,Z;privateStringname;publicStringgetName(){retu......
  • E. Physical Education Lessons
    E.PhysicalEducationLessonsThisyearAlexhasfinishedschool,andnowheisafirst-yearstudentofBerlandStateUniversity.Forhimitwasatotalsurprisethateventhoughhestudiesprogramming,hestillhastoattendphysicaleducationlessons.T......
  • kaldi lesson教程示例(转载)
    转自:https://blog.csdn.net/q_xiami123/article/details/117019177?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170312043616800188564167%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170312043616800188564167&biz_......
  • Java网络编程--Lesson
    一.InetAddress此类是获取网络地址实例的一个类,但是不能通过new来实例化这个类,因为它没有构造器,但是可以通过组合的方式来使用类中的方法拿取主机为localhost的网络地址实例InetAddressaddress=InetAddress.getByName("localhost"); 拿取百度网络地址实例//拿取主机为......
  • A Template of Literature Survey For Reading Papers
    IntroductionRecently,I'mreadingsomepapersandIhadsearchedformanyblogsaboutpaperreading.Tomydisappointment,mostofthemarenotorganizedandtheformatisnotconsistent.SoIdecidedtowriteatemplateofliteraturesurveyforrea......