Algorothm104


考试还没结束当然不能放代码QAQ也不能放题解QAQ

提前好久交卷QAQ完了我都要吓得Explode了QAQ

感觉我要爆零了QAQ

蒟蒻就这样轻易地狗带QAQ

10:57
考试结束前半小时


灵验了QAQ

Algorithm104就这样轻易地狗带了QAQ

14:38

考试结束后3h


T1:蜜汁运算法则

第一题直接上模拟啊QAQ

这道题三层循环枚举一下所有可能的点即可(我竟然写了个DFS!没错就是D!F!S!他们都说我成了DFS大神了就好像我真是的QAQ)

难点在于比较确认(毕竟你又不能直接输出所有方案是不是嘿嘿嘿)也就是check()函数。这道题的check函数不得不说真难写~我想错了写了一个横向不同排竖向不同列然后侧向这一点我想成了x差y差相等(即该点为重点qwq)然后就对了5个点……

这道题我个人还有另外一种思路……使用模拟分数的方法解决问题,用结构体模拟分数,然后求出它的最简分数(使用


T2:模拟(暴力)

第二道题裸裸的模拟啊(敲黑板:这是个Flag QAQ)

题目大意:在城市的主干道旁种植着两排树,但他们其中的一部分被偷走了,求最长的完整的没有缺口的序列长度。

这道题看完之后我的第一句话是:卧槽这是Surface Book™题啊?好简单好简单

于是便欢快地码了出来QAQ

没怎么自仔细检查就交上去了QAQ于是,我执行的两次模拟函数中对于长度l的初始化就这样被我忘记了QAQ

在程序第二次执行这个函数(就是处理偶数)的时候l值将不会被更新……所有第二行为答案的点都错了……

蓝瘦香菇QAQ

附改后代码:

#include <cstdio>

bool stole[100100];
int n,m,stolen,b,l,ans,ansb;

void search(int begin)
{
    l=0;//罪魁祸首
    b=begin;
    for(int i=begin;i<=n;i+=2)
    {
        if(!stole[i]) ++l;
        else
        {
            if(ans<l)
            {
                ans=l;
                ansb=b;
            }
            l=0;
            b=i+2;
        }
    }
    if(ans<l)
    {
        ans=l;
        ansb=b;
    }
    return;
}

int main()
{
    freopen("tree.in","r",stdin);
    freopen("tree.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;++i)
    {
        scanf("%d",&stolen);
        stole[stolen]=true;
    }
    search(1);
    search(2);
    printf("%d %d",ansb,ans);
    fclose(stdin);
    fclose(stdout);
    return 0;
}

T3:图论:SPFA及其高级应用

题目大意:已知某些点之间存在路径能够到达,以及通过这条路的时间 di,其中某一条路会无法通行,问在最坏的封路情况下(指最短路最长时)最短的时间T 最小为多少。

这道题目本来是一道愉快的,多重SPFA的题QAQ

可是,怎么可能这样轻易的狗带简单QAQ

欢快地码完,轻松地T了两个点QAQ

确切来说,开了-O9(对,没错,是-O9)之后,#8卡在1.000s,#9耗时12.421s,#10耗时7.125s

 

声明:TonyZhao's Home|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Algorothm104


不骗了,不骗了。
A Simple OIer fighting tooth and nail.