宾馆的\(\rm{wifi}\)也太不好了,蹭的\(ZZC\)的热点才打的比赛(感谢\(ZZC\))

日常掉rating…… 我现在是个\(\color{green}{pupil}\)……

因为我菜,所以还是只写了前三道题


题解

\(\mathcal{A.Single\; Wildcard\; Pattern\; Matching}\)

题目大意:有点长,不想翻译了qwq

我能说第一题是前三道题中最难的么……各种特判,各种被卡,最后交了4遍也没做出来(我太蒟了 QAQ)

反复修改后的冗杂的AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
    int n,m; cin>>n>>m; n-=1,m-=1;
    if(n>m+1){
        cout<<"NO"; return 0;
    }
    char s1[200010],s2[200010]; cin>>s1>>s2;
    int pos=0;
    for(int i=0;i<=n+1;i++){
        pos=i;
        if(s1[i]=='*') break;
    }
    //cout<<pos;
    for(int i=0;i<pos;i++){
        if(s1[i]!=s2[i]){
            cout<<"NO"; return 0;
        }
    }
    if(pos==n+1){
        if(n!=m){
            cout<<"NO"; return 0;
        }
        goto hhh;
    }
    int j;
    for(j=0;;j++){
        if(n-j==pos) break;
        if(s1[n-j]!=s2[m-j]){
            cout<<"NO"; return 0;
        }
    }
    for(int i=pos;i<m-j;i++){
        if(s2[i]<'a'||s2[i]>'z'){
            cout<<"NO"; return 0;
        }
    }
    hhh:
    cout<<"YES";
    return 0;
}

\(\mathfrak{B.Pair\; of\; Toys}\)

题目大意:输入两个数\(n,k\),问从\(1\text{~}n\)中取出\(2\)个数使得它们的和为\(k\)的方案数(\((a,b)\)和\((b,a)\)算同一种方案)

这题算是数论吧……挺简单的

如果\(a+b==k\),那么\((a+1)+(b-1),(a+2)+(b+2)\)……也等于\(k\)。所以我们可以找到最接近的两个数\(k/2,k/2+1\),然后\(1\text{~}k/2\)和\((k/2+1)\text{~}(k{-}1)\)就是所有的方案。接下来我们只需要找出合法的方案数就可以了

首先我们可以确定如果\(k/2{>=}n\),肯定无解,当\(k/2{<}n\)的时候,因为\(n\)可能小于\(k\),所以合法的方案数应为\(\min(k/2,(k-1)-k/2,n-k/2)\)

P.S. 不要忘了开\(long\; long\)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
    long long n,k; cin>>n>>k;
    long long mid=k/2,ans;
    if(mid<n) ans=min(mid,min(k-1-mid,n-mid));
    else{
        cout<<0; return 0;
    }
    cout<<ans;
    return 0;
}

\(\sf{C.Bracket\; Subsequence}\)

题目大意:给你一个长度为\(n\)括号序列\(a\),找出一段长度为\(m\)合法的括号序列\(b\),使得\(b\)是\(a\)的子串

\(b\)为答案,我们枚举\(a\)的每一个括号,每扫到一个括号,就把它加入\(b\)里,如果为左括号,\(cnt{+}{=}1\),如果\(cnt==m/2\)就跳出循环,然后从后面补右括号就行了

没初始化\(ans\)数组,FST了…… QAQ

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
    int n,m; cin>>n>>m; m/=2;
    char a[200010],b[200010]; cin>>a;
    memset(b,0,sizeof(b));
    int len=strlen(a)-1,tot=0,cnt=0;
    for(int i=0;i<=len;i++){
        if(a[i]=='('){
            b[tot++]='(';
            cnt++;
        }
        if(cnt==m) break;
        if(a[i]==')'){
            b[tot++]=')';
        }
    }
    for(int i=tot;i<m*2;i++) b[i]=')';
    cout<<b;
    return 0;
}

总结

这次比赛暴露了我以下几个问题:

  1. 不够认真、仔细,对特殊情况考虑不全
  2. 代码中总存在一些小问题
  3. 太浮躁,认为第一遍测试过了就万事大吉了,没有检查代码的隐藏\(bug\)
  4. 太过依赖于样例和测试数据

最新文章

  1. 编译安装mysql
  2. 查看linux版本
  3. yii2 and short_open_tag
  4. HTML5简单入门系列(七)
  5. 使用IDEA的gradle整合spring+ mybatis 采用javaconfig配置
  6. [51nod Round 15 B ] 完美消除
  7. [LeetCode] Super Washing Machines 超级洗衣机
  8. golang使用Nsq
  9. framework7 入门(数据绑定)
  10. Glide4 用法总结 MD
  11. mac 不小心把管理员改成了普通用户
  12. 【POJ3585】Accumulation Degree 二次扫描与换根法
  13. select 练习语句
  14. mybatis sql xml 字符逃脱
  15. jsp之response方法
  16. mysql客户端(Navicat)远程登录操作遇到问题1142 - XXX command denied to &#215;&#215;&#215;
  17. DataGridView相关代码
  18. [PY3]——IO——文件目录操作
  19. 利用“海底捞算法”在MongoDB中优雅地存储一棵树
  20. 如何使主机和虚拟机IP处于同一网段(内网渗透专用)

热门文章

  1. 64位Win7中7zip无法关联文件的问题
  2. 浅谈C++中内存泄漏的检测
  3. bzoj1966:[AHOI2005]病毒检测
  4. beanutils包下载
  5. 2018ccpc_hn
  6. Tomcat - 怎么控制某个类或者包下的日志打印级别
  7. E: 软件包 ffmpeg 没有可供安装的候选者
  8. JMeter博客系列:JMeter BeanShell示例
  9. 再看SpringMVC通过一个DispatcherServlet处理Servlet
  10. Spring之WebContext不使用web.xml启动 初始化重要的类源码分析(Servlet3.0以上的)