NOIP 2017.10.27 总结+心得

这里写图片描述
世界真的很大
恭喜RNG
今天的考试要是再考炸真的要回家种田了
幸好还将就但是于我自己来讲还是有诸多不足之处
3道题都还有提升的空间,但是总是无法抓住,还是太弱啊

看题先:

1:

这里写图片描述
水题的典范
一开始一看以为有什么性质,可能真的有吧,反正我没发现
暴力构造b串,然后直接for去匹配
匹配用hash就好
wa一个点以为是卡hash,其实是数组开小了233,WA?

我的就是正解
还有一种做法是KMP求NXT,把b串接在a串后面就好
完整代码:

#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long unt;

const unt base=23;

int n,m,T,ans=0;
unt p[400010];
char s[400010],t[400010],tmp[10];

int main()
{
    freopen("string.in","r",stdin);
    freopen("string.out","w",stdout);
    p[0]=1;
    for(int i=1;i<=200010;i++) p[i]=p[i-1]*base;
    scanf("%d",&T);
    while(T--)
    {
        ans=0;
        scanf("%d%d",&n,&m);
        memset(s,0,sizeof(s));
        memset(t,0,sizeof(t));
        scanf("%s",s+1);
        for(int i=1;i<=m;i++) t[i]=s[i];
        scanf("%s",tmp);
        t[++m]=tmp[0];
        unt tmp1=0,tmp2=0;
        for(int i=1,j=m;i<=n && j>=1;i++,j--)
        {
            tmp1=tmp1*base+s[i]-'a';
            tmp2+=(t[j]-'a')*p[m-j];
            if(tmp1==tmp2) ans=max(ans,i);
        }
        printf("%d\n",ans);
    }
    return 0;
}
/*
2
5 3
adabc
d

6 6
aaaaaa
a
*/

如果一道题想到了什么办法就算感觉很暴力只要能过且能写就应该马上去写
一来是节约时间,二来呢,有可能最正解的方法反而不好想而且不适合自己
考试的时候对于时间的把握还是很重要


2:

这里写图片描述
一句话题意,无向图两点之间所有必经点
当时一想,这些点首先一定要是割点,
想到TarjAn
然后对于每一个割点我们要判断其能不能把1和n分开
对于TaRjan既然在保证图连同的情况下肯定是从1开始DFS的
所以说

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值