zoukankan      html  css  js  c++  java
  • 1.25日考试

    错因分析

    ◊思考不细致,对题目有为畏难情绪,例如今天第一题,我一看到题目就不想去思考,草率的打了一个特别不靠谱的方法就停止了,后面知道自己错了都没有时间了,因为我已经被别的题目搞的头晕脑涨了

    ◊做题不严谨,今天的T3和T4,我都有很多小细节上的错误,忘了判重,for循环的漏洞,都让我耗费了很久的时间,所以下次敲题目时要注意

    那些细枝末节,想清楚以后在答题,比乱打一气要少花很多时间

    ◊学会给题目分类,看到一个题目,我们要试图去分析它所考察的点是什么,这样的话你可以更快的想到处理解决的方法,例如

    今天T3,考的图论,那么脑袋里就要浮现出图论的知识怎么储存,怎么处理....

    还有T4,知道考察的是DP就要列出状态和转移方程....

    学习方法

    ◊好开心,我又从GQL大佬那里学了点新方法

    1.思考题目考察什么便是一个好方法

    2.在做题之前,先对着目录,将你所需要的cpp都打出来,在我眼中这种方法有一下几点好处

    ♠不会出现(减少)文件名的错误

    ♣是自己心里有底,即使要交卷了也不心慌,因为我已经都打出来了

    ♥对题目有一个宏观的了解

    ◊不要放弃爆搜,这是一个几乎万能的方法,有时比你费劲心思去想正解得到的分数还多(今天就是一个例子)

    (由于还没交流,我就只解决有题解的T4)


    1.pf
    题目描述

    pf 是个斐波那契数迷。他是如此的酷爱这个数列,因此他想知道很多关
    于这个数列的东西,比方说第 N 个斐波那契数是多少啊、前 N 项的和是
    多少啊,如何用若干个斐波那契数的和表示一个自然数啊之类之类的。今天
    他希望知道的是:他想用第 1 个、第 2 个„第 N 个斐波那契数构成一个
    长度为 P 的序列,每个斐波那契数可以使用任意多次,但至少要使用一次,
    并且序列中任意两个相同的斐波那契数之间至少要隔着 M 个数, pf 希望知
    道满足条件的序列组成方法有多少种。记 fib[i] 表示第 i 个斐波那契数,
    fib[0]=fib[1]=1,fib[i]=fib[i-1]+fib[i-2] (i>1)。

    输入

    输入只有三个整数 N,M,P

    输出

    输出一个数字表示序列组成方法,由于结果可能很大,只需输出结果模上
    1000000007 就可以

    样例输入

    2 1 4

    样例输出

    2

    数据规定

    对于 100% 的数据,有 1 ≤ N ≤ P ≤ 1000,0 ≤ M ≤ N

    对于这道题目,我有点无语,这就是那道我想都懒得想就乱打一气的题目


    2.守卫者的挑战

    3.hamilton
    题目描述

    hyc 喜欢研究各种各样奇奇怪怪的东西~
    一天,hyc 研究了一个关于哈密顿路的问题。
    如果一条路径满足:不经过重复顶点、不经过重复边、首尾相连, 那么称
    这条路径为简单环。
    给出一张无向图,求这个无向图当中长度不小于 3 (即经过不少于 3 个点)
    的简单环的个数。

    输入

    第一行两个整数 N、M,表示图有 N 个点、M 条边。
    接下来 M 行,每行两个整数 a、b,表示顶点 a 和顶点 b 之间有一条无
    向边。
    数据保证没有自环和重边的出现。

    输出

    一行一个整数,表示无向图当中长度不小于 3 的简单环的个数。

    样例输入

    4 6

    1 2

    1 3

    1 4

    2 3

    2 4

    3 4

    样例输出

    7

    数据规定

    对于 50% 的数据 , 保证答案不大于 10^6.
    对于 100% 的数据 ,N<=20, 保证答案可以用 64 位整形存储 .


    4.修理草坪  
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long;
    ll n,m,a[100010],sum[100010],f[100010];
    ll d[100010];
    int q[100010],head=0,tail=1;
    int scan()
    {
        int as=0;
        char c=getchar();
        while(c<'0'||c>'9') c=getchar();
        while(c>='0'&&c<='9')
        {
            as=(as<<3)+(as<<1)+c-'0';
            c=getchar();
        }
        return as;
    }
    ll que(int i)
    {
        d[i]=f[i-1]-sum[i];
        while(head<=tail&&[q[tail]]<d[i]) tail--;
        q[++tail]=i;
        while(head<=tail&&q[head]<i-m) head++;`
        return d[q[head]];
    }
    int main()
    {
        scanf("%lld%lld",&n,&m);
        for(int i=1;i<=n;i++)
        {
            a[i]=scan();//a[i]数组记录
            sum[i]=sum[i-1]+a[i];//记录前缀和
        }
        for(int i=1;i<=n;i++)
        {
            f[i]=que(i)+sum[i];
        }
     
  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/KSTT/p/10320686.html
Copyright © 2011-2022 走看看