NOIP2016 普及组 总结+题目吐槽+代码+简单题解

提高组回来之后,像往年一样,做了一下普及组的题

先吐槽一下

T1

这题一眼看上去以为可以用不同种类的铅笔,没想到只能用一种种类,我240B搞定

#include
int main()
{
    freopen("pencil.in","r",stdin);freopen("pencil.out","w",stdout);
    int n,x,y,i=3,ans=2147483647;scanf("%d",&n);
    while(i--) scanf("%d%d",&x,&y),ans=ans<(n+x-1)/x*y?ans:(n+x-1)/x*y;
    printf("%d",ans);
}

很符合NOIP普及组的特性,第一题一眼题

T2

也很符合普及组特性,一眼题
只是这题需要注意枚举时枚举月和日比枚举年方便
对于唯一的2月29日经过计算发现9220年是闰年,所以不需要特殊判断
注意细节

#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},s,t,y1,m1,d1,y2,m2,d2,ans=0,y;
int f(int x)
{
    int j=0,k=1;
    if(x<10) k=10;
    for(;x;x/=10) j=j*10+(x%10);
    return j*k;
}
int main()
{
    freopen("date.in","r",stdin);freopen("date.out","w",stdout);
    scanf("%d\n%d",&s,&t);
    fo(i,1,12) 
    fo(j,1,a[i])
    {
        y=f(j)*100+f(i);
        if(y*10000+i*100+j>=s&&y*10000+i*100+j<=t&&f(y)==i*100+j) ans++;
    }
    printf("%d",ans);
}

T3

发现了一点异样,因为NOIP普及组第三题从来没有过这么简单
游客数没多大,所以可以全部船一个接一个存到一个数组里,对于每艘船只用记录开始和结束的游客在这个数组里的哪里
但是,第一次提交50分!!!啊???
检查后发现,是细节打错了

#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define N 401000
int bz[N],n,t[N],s[N],e[N],a[N],tot=0;
int main()
{
    freopen("port.in","r",stdin);freopen("port.out","w",stdout);
    scanf("%d",&n);
    int j=0,ans=0;
    fo(i,1,n)
    {
        int l;scanf("%d%d",&t[i],&l);
        s[i]=tot+1;
        fo(k,1,l)  {scanf("%d",&a[++tot]);if(bz[a[tot]]==0) ans++;bz[a[tot]]++;}
        e[i]=tot;
        while(t[j+1]<=t[i]-86400) fo(k,s[++j],e[j]) {bz[a[k]]--;if(bz[a[k]]==0) ans--;}
        printf("%d\n",ans);
    }
}

T4

于是这题的难度开始爆炸
具体题解看我的另一篇博客NOIP2016 普及组第四题 魔法阵magic 题解
一开始我也只得了85分

这次的题目难度我感觉出了点问题,第四题的难度偏高,第三题难度偏低,但没什么好说的

你可能感兴趣的:(总结,题解)