NOIP2017提高组 题解&游记

NOIP2017提高组 题解&游记_第1张图片

Day0

嗯,虽然成绩还没有出,但因为有山寨数据和成绩的问题嘛,我也大概知道什么情况了。就写写酱油记吧。
因为学校体艺节正在举办,不用上课,我就把所有的时间都放在机房了。当天早上,一直在打模板,什么会的线段树,kmp=====都打了一遍。然后就到中午了。
中午一直在玩手机(。。。),然后就到2:00了。上车。。。
因为毕竟是初二参加提高组,老师并没有办法带队(因为他还要带普及的),只能由司机送我们过去,由某同学py的家长来带队。
在车上很晕,就在睡觉,到酒店已经三点了。。。
我们在酒店一直休息(玩手机)到了六点半,就去外面吃饭。。
吃晚饭回来还是在玩(。。。。好像是有点问题),10:20就睡觉了。
于是这天就结束了。

Day1

早上6:30起来了,然后7:00去吃早餐(不得不说的是那家酒店的早餐真的少),7:30就出发了。
7:50到达二中(第三次了zz)
见到了很多好朋友,lkb、wjw、yhf、ywq、lhf、pzh、ly、shq===。
8:20左右进入考场。
SMG!!今年进去考场竟然还不让动鼠标键盘屏幕。。。。
8:30比赛终于开始了。。
(题目就不描述了,网上很多地方都有)
T1,这题乱搞??,于是乱打一通,让Ax-By=1或-1?然后在乱搞?
后来样例都对了,自己试了几个其他数据,也没对拍(凉凉),就以为是对的,去做T2了(T1还用了我一个多小时)。其实我在中间发现了a*b-a-b这个规律了,但竟然被我自己愚蠢的否定了(hhh)。。
正解:输出a*b-a-b。
证明:我不会。。。反正就数学归纳法吧,打表找规律。
T2,啥玩意啊,究极模拟题,毫无做法,跟2008年pj的立体图有异曲同工之妙。打打打,花了我2两个小时终于做完了。
考试时间只剩下三十多四十分钟了。我看到最后一题,好像两次spfa+DP能做?骗分都不骗了,GOGO。然后不出所料的没有做出来,连暴力都没水。最后两分钟检查了一下,并没有发现T1错了(hhh)。
随即,考试结束了。
T3正解:拓扑排序+DP。好像spfa+DP也是可以的。
今天预测100,心想我已经距离一等十万八千里了。
发现很多人都找到规律了。zz。oql更是在比赛结束前找到规律。。。最后也A了。
12:00,开始去吃饭。。。(不得不夸一下py的家长带我们去吃的还是很好的。)
13:30回到酒店玩手机(。。本来是想出去玩的,但后来想想还是算了),一直到下午6:30,吃饭。。。。一切按正常的进行。
晚上还是10:20就睡觉了。

Day2

广州两日游的最后一天啦。
到了二中之后和其他同学一直在想今天会考什么。他们一直说什么昨天没考数据结构,今天肯定会考树剖啥的,我知道我不会就只能祈祷不会考这些。
嗯,比赛开始了。
T1,什么水题,空间坐标系,吓得我一个初中蒟蒻差点没A。(事实证明我就是没A)三十分钟打完就去做T2了,然后考完之后发现直接做会爆longlong?我还所有x,y加了某个数来把负数搞没,然后没用unsingedlonglong,完啦!
做法:判断连通性,做DFS就可以了。
T2,一看题,为什么n那么小,那么多条边啊,然后才知道有重边。考前就在说肯定会有DP,看是什么类型的DP而已。发现n那么小的我,一下就看出来这题可以状压DP了。乱搞乱搞,搞了个O(2^n*n^4)的DP,其实根据状压dp那么多个if的特性肯定是不会爆的,可是我非得头铁,要搞到O(2^n*n^3),结果搞成了,但是发现错的,然后就不改了。为此浪费了我45分钟时间。。。
考完听pzh说最小生成树好像也可以??他大数据还对了?后来网上也有很多人用最小生成树prim做,后来被证明prim是错的。。。
做法:就是状压dp。代码如下:
#include
using namespace std;
int bo[5020][22];
int f[5020];
int n;
int edge[22][22];
int m;
int ans=0x7ffffff;
int dfs(int root)
{
    memset(bo,0,sizeof(bo));
    memset(f,63,sizeof(f));
    f[1<<(root)] = 0;  //初始化
    bo[(1<1;
    int N = 1<for(int i=0;i//枚举点的状态
      for(int j=0;jif((i&(1<0)  //j点能到达
        for(int k=0;kif(((i&(1<0)&&(edge[j][k]!=-1))//k点不能到达,且jk之间有边
        {
            int p = (1<int x = f[i] + bo[i][j] * edge[j][k];  //计算费用,方程
            if(f[i+p]>x)
            {
                f[i+p] = x;
                for(int l=0;l1;
            }
        }
    return f[N-1];
}
int main()
{
    memset(edge,-1,sizeof(edge));
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        if(edge[x-1][y-1]>z || edge[x-1][y-1]==-1) //记得直接选权值最小的边就可以了
            edge[x-1][y-1]=edge[y-1][x-1]=z;   //直接清除重边。
    }
    for(int i=0;i//以i为出发点。
        ans = min(ans,dfs(i));
    printf("%d\n",ans);
}
好,然后接着做T3。啊,肯定是数据结构,不会。各种分段水分。水了70。。zz(SMG)。。。最后出来30??挖槽,没用longlong又少了20分,我的心态。。。。
正解:果然是数据结构,splay或者树状数组??
然后就佛山了。预计分数270。

DayN

哇,今天山寨数据(还是有我们考场源程序的那种)出成绩啦!
我310(smg!?),感觉还好吧。day1T2对了,day2T180,t2100,t330.。然后加起来310.感觉还行吧,毕竟只是初二。oqlDalao390%%%%,py不说了(zz)。lkb也比我高%%%。。。。
只是不知道这样的成绩有没有一等,感觉有点困难。
希望有吧。。。

总结

考的还不错吧,就是考前太high了点。。。。
下次继续努力吧!
因为longlong扣了40分,GGGGGGGGGGGGGGGGGGGGGGGGGGGg
加油GD-0113!!

你可能感兴趣的:(日常水,noip)