• NOIP 2016 普及组 Solution (T1-T3)


    第一题

    直接贴Code:

     1 #include <cstdio>
     2 int min(int a,int b)
     3 {
     4     return a<b?a:b;
     5 }
     6 using namespace std;
     7 int main()
     8 {
     9     int n,a1,a2,b1,b2,c1,c2,ans;
    10     scanf("%d%d%d%d%d%d%d",&n,&a1,&a2,&b1,&b2,&c1,&c2);
    11     printf("%d
    ",min(((int)(n-1)/c1+1)*c2,min((((int)(n-1)/a1+1)*a2),((int)(n-1)/b1+1)*b2)));
    12 }
    View Code

     第二题


    正确姿势:枚举年份判断

    暴力姿势:一个个枚举

    暴力AC Code:

     1 #include <cstdio>
     2 #include <iostream>
     3 using namespace std;
     4 char s[10],e[10];
     5 int sy,sm,sd,ey,em,ed,ans,y,m,d;
     6 inline bool h(int y,int m,int d)
     7 {
     8     if ((y/1000!=d%10)||(y/100%10!=d/10)||(y/10%10!=m%10)||(y%10!=m/10))return 0;
     9     else return 1;
    10 }
    11 int main()
    12 {
    13     scanf("%s%s",s,e);
    14     sy=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+s[3]-'0';
    15     ey=(e[0]-'0')*1000+(e[1]-'0')*100+(e[2]-'0')*10+e[3]-'0';
    16     sm=(s[4]-'0')*10+s[5]-'0';
    17     em=(e[4]-'0')*10+e[5]-'0';
    18     sd=(s[6]-'0')*10+s[7]-'0';
    19     ed=(e[6]-'0')*10+e[7]-'0';
    20     y=sy;m=sm;d=sd;
    21     while (1)
    22     {
    23         if (y>ey||(y==ey&&m==em&&d>ed)||(y==ey&&m>em))break;
    24         if (m==12&&d==31&&y==1321)ans++;
    25         if (m==12&&d==31)y++,m=d=1;
    26         
    27         if (h(y,m,d))ans++;
    28         bool r=0;
    29         if ((y%4==0&&y%100!=0)||y%400==0)r=1;
    30         if (m==1||m==3||m==5||m==7||m==8||m==10||m==12)
    31         {
    32             if (d<31)d++;
    33                 else if (d==31&&m!=12)m++,d=1;
    34         }else
    35         if (m==4||m==6||m==9||m==11)
    36         {
    37             if(d<30)d++;
    38             else if (d==30)m++,d=1;
    39         }else
    40         if (m==2)
    41         {
    42             if (r&&d<29)d++;else if (r&&d==29)m++,d=1;
    43             if (!r&&d<28)d++;else if (!r&&d==28)m++,d=1;
    44         }
    45     }
    46     printf("%d",ans);
    47 }
    View Code

     第三题

    队列模拟(队列要开大点QAQ,DEBUG了半天...)

     

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define ll long long
     5 inline void read(ll &k)
     6 {
     7     ll f=1;k=0;char c=getchar();
     8     while (c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
     9     while (c>='0'&&c<='9')k=k*10+c-'0',c=getchar();
    10     k*=f;
    11 }
    12 
    13 const int maxn=1e5+10;
    14 ll n,tmp,tot,t[maxn*10],tt,k[maxn*10],cnt[maxn*3],k1,last=1,ans;
    15 bool v[maxn];
    16 
    17 int main()
    18 {
    19     read(n);
    20     while(n--)
    21     {
    22         read(tt);read(tmp);
    23         while(tmp--)
    24         {
    25             read(k1);
    26             t[++tot]=tt;cnt[k1]++;k[tot]=k1;
    27             if ((cnt[k1]==1)&&(!v[k1]))ans++;
    28         }
    29         while (t[last]+86400<=tt)
    30         {
    31             cnt[k[last]]--;
    32             if (!cnt[k[last]])ans--;
    33             last++;
    34         }
    35         printf("%lld
    ",ans);
    36     }
    37 }
    View Code
  • 相关阅读:
    敏捷开发学习笔记-Agile development(AM)
    WindowsServer --------- 在服务器中安装sqlserver 数据库
    WIndowsServer ---------- 将本地文件映射到服务器
    windowsServer-------- 系统中调出文件扩展名
    SQLServer -------- 解决忘记sa 密码,创建一个新的
    SQLServer ---------- 附加数据库,以及解决附加时出现错误
    AJAX -------------- 如何使用ajax
    网络基础 ----------- osi 与 一些协议
    装系统---------- u盘 安装系统
    网络基础 ----------- 电脑设置为wifi站点
  • 原文地址:https://www.cnblogs.com/mczhuang/p/7352315.html
Copyright © 2020-2023  润新知