码迷,mamicode.com
首页 > 其他好文 > 详细

2016.7.12 NOIP2013提高组 day2解题报告(未完成版)

时间:2016-07-12 19:12:49      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

      考试马不停蹄地到来,昨天的程序还没改完,今天又考了day2,虽然没有昨天那么懵逼,但还是不尽如人意,现在还没讲题,我打算先自己看一次解题报告,争取加深理解,毕竟一位前辈说过,做一套题的质量取决于题本身的质量和你思考的程度。

      考试总结:

      1.数据分析推测可行算法很重要,要灵活掌握常用算法的时间复杂度;

      2.对拍的方式要熟练,写对拍耗费的时间过多;

      3.要加强代码实现的能力,比较突出的表现就是写200-300行多函数模拟或搜索的能力;

      4.不要急于写过不完的程序,要多拿一点时间来分析数据,样例不够还可以自己出(不然就会像今天一样写完了没事做;

      5.不要有畏难情绪,考试最重要的是思考而不是分数,只要花了足够的时间来思考,即使最后没实现,所获得的也远远比直接写暴力算法要多得多,现在练习最重要的还是思维,而且看似很难的题也有很多人做出来,所以一定不要害怕;

       6.要逐渐适应高强度长时间的思考,当然如果实在很累了还是可以去楼下买两串关东煮的xxx;

       参考资料:

       1.昨天的参考资料2;

       2.老师提供的解题报告3,来自DOVECL

 

      一.积木大赛

题意:n是宽度,H是要求高度,求每一层的联通块;n<=100000;h<=10000;(题意理解有多么重要在这里就可见一斑了:我的理解让我局限于外层循环  maxnh,然而参考资料2的理解就打开了另一种算法:如何让一个空序列变成A序列; 

题目分析:刚拿到这道题,maxnH*n的算法一定会浮现在我们的脑海里,接着,一些比较谨慎的人(毕竟虽然评测机理论速度能达到1e9,但由于分操作的存在,平时就算是一个很’干净’的1e8的程序评测时我们都会提心吊胆)会发现,最大1e9的计算量可能会超过时间;实际上也的确超了最后一组,所以采用更智能的方法是很有必要的;

     然后!一件神奇的事情发生了!我居然给内层用了分治(手动笑哭),然后费尽心思让它更复杂了(手动再见),唯一有安慰的是这样锻炼了一下我的思维能力orz,我觉得这个分治蛮巧妙的,所以顺便贴上来了:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<set>
using namespace std;
int n,h[100005],ans,maxn;
void res(int lef,int rig)
{
    if(lef>=rig-1)
    {
        if(h[lef]>=1||h[rig]>=1)
           ans++;
           h[lef]--;
           if(lef!=rig)
           h[rig]--;
           return;
    }
    int mid=(lef+rig)/2;
    res(lef,mid);res(mid+1,rig);
    if(h[mid]>=0&&h[mid+1]>=0)ans--;
}
int main()
{
    freopen("block.in","r",stdin);
    freopen("block.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    cin>>h[i];maxn=max(maxn,h[i]);
    }
    for(int i=1;i<=maxn;i++)
    {
        res(1,n);
    }
    cout<<ans;
    return 0;
}

            然后这道题的正解应该是差分序列最快,然后也有同学用了分模块递归(用其他的数据结构应该是nlogn左右,这里也告诉我们一个道理:数据结构是基础,算法是方法,数据结构一定不能小瞧,要灵活掌握其基础上的运算!)

            因为差分序列比较经典(这是一种比较经典的数学思维运用,昨天的火柴也是),所以改了差分的程序(才不是因为这种比较简单呢qwqqq

           二.花匠

           题意:n花数,h高度,求正弦函数(误),求波动序列

           题目分析,把这道题初步分析了一下我就动手写了搜索+优化(过三组),

         

 

2016.7.12 NOIP2013提高组 day2解题报告(未完成版)

标签:

原文地址:http://www.cnblogs.com/SindarDawn/p/5664292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!