码迷,mamicode.com
首页 > 其他好文 > 详细

“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛(C~D)

时间:2020-04-24 01:35:56      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:网络   namespace   include   coder   get   http   set   contest   pst   

C 最长非公共子序列

题意:这一题可能咋一看比较难懂它在讲什么,大概讲的是,两个序列,求它们最长非公共子序列。那么什么是“非公共”呢?题目是这样解释的:

  • c 是 s1? 的子序列但不是 s2? 的子序列;
  • c 是 s2? 的子序列但不是 s1? 的子序列。

题解:仔细看一下这样只有两种情况:一种是两个序列相等,这样就不存在了;另一种是两个序列不相等,这样我们只需要输出两种之中最长的长度就可以了。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
    string s1,s2;
    cin>>s1>>s2;
    if(s1==s2){
        cout<<-1<<endl;
    }else{
        cout<<max(s1.length(),s2.length())<<endl;
    }
    return 0;
}

D 最大字符集

题意:这一题的题意也比较简单,就是让你输出最大长度的为n的字符串且满足一下条件:

  • 每个字符串由 0 和 1 组成。
  • 每个字符串长度在 1 到 n 之间,且两两长度不同。
  • 集合中任何一个字符串都不是其他字符串的子串。

求满足以上条件的最大集合。

题解:这一题是一个构造,有点像cf中的a,b题的味道,你只要特判n=1和n=2两种情况,其余的按照第一个和末尾的一个是1,中间的是0输出即可。

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n==1){
        cout<<1<<endl;
        cout<<1<<endl;
    }else if(n==2){
        cout<<2<<endl;
        cout<<0<<endl;
        cout<<11<<endl;
    }else{//最大长度至少为 3
        int len=2;
        cout<<n-1<<endl;
        for(int j=0;j<n-1;j++){
            for(int r=0;r<len;r++){
                if(r==0||r==len-1){
                    cout<<0;
                }else{
                    cout<<1;
                }
            }
            cout<<endl;
            len++;
        }
    }
    return 0;
}

 

“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛(C~D)

标签:网络   namespace   include   coder   get   http   set   contest   pst   

原文地址:https://www.cnblogs.com/blogxsc/p/12764749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!