2021.10.25

    今天学习2020noip

    中午十二点上楼学习了,发现noip2020的排水系统和noip2003的神经网络几乎一致,觉得可做,于是开始做

    本题需要:链式前向星,分数加减乘除,高精度,拓扑。

    2003题需要:链式前向星,拓扑。

    转眼间已经17:18了

    排水系统在我的不懈努力之下获得了60分,注意lld,写代码千万不要笔误啊,在分数除法的函数里面f1,f2写混了,导致我dbug耗费了至少1h,剩下40分被卡的原因是需要高精度,建议自己养成一个只写long long 不写int,在数据范围不确定的情况下有时间就写高精度的习惯。

    本体收获:复习了拓扑及对拓扑的理解更深刻了。学习了如何写分数加减乘除。

    由于写这道题的目的不是复习高精度,所以为了效率,开始写下一道题。

    noip2020字符串匹配

    看到题时第一思路:

    将AB看作一个整体,枚举AB与C的分隔点。

    记录c出现奇数次的字符个数,求AB字符串的自身前后缀相等的情况,再在每种情况内分割AB,当A中出现奇数次的字符的个数不超过C中的,记录为一种方案。

    保守估计的话复杂度Tn^4,勉强可过24分。

    需要的知识点:kmp。

    哦哦,发现他有特殊数据

    特殊数据1:

    和暴力思路大体一致,省去了kmp,即不需要对于S的重复子串进行计算,n^2可过,总分+8.

    特殊数据二没想出来啊。

    理论存在,暴力开始(乐)

    一些常识:

    2^15==32768

`     2^16==65536

    2^20==1048576

    果然不写代码不行啊,发现自己不知道怎么写出现奇数次的字符的个数?

    会了,晚饭吃完以后突然就想起来了。用数组存储👍

    看了一眼题解,正解用到扩展kmp及z函数。*!*!*明天学*!*!*

    有一说一,这道题有点怪,题目是蓝题但是运用到的知识点板子却是紫题。

 

 

    好烦啊,晚上写的博客都没存下来。

    总而言之就是学习了分治和二分一系列问题,

    比较有用的可能是这两个问题了

 

    1.挑选10个和为一千的数,怎么挑能使之可以组合成任意1~1000的数?

    1 2 4 8 16.。。。。。

    2.n!的尾数中有几个0?

#include<cstdio>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    int ans=0;
    while(n>0)
    {
        ans+=n/5;
        n/=5;
    }
    printf("%d",ans);
    return 0;
}

    是不是很神奇?()

posted @ 2021-10-25 17:52  kanateta  阅读(75)  评论(0)    收藏  举报