T1

大水题,不解释
上考场代码
#include <algorithm>
#include <cstdio>
using namespace std;
int main() {
    freopen("pencil.in","r",stdin);
    freopen("pencil.out","w",stdout);
    int n,Min = 0x7fffffff;
    scanf("%d",&n);
    ;i <= ;i++) {
        int number,money,count;
        scanf("%d%d",&number,&money);
        count = n/number;
        if (n%number) count++;  //count为需要买的包数
        Min = min(Min,count*money);  //取最小的
    }
    printf("%d",Min);
    ;
}

T2

简单的模拟,生成date1到date2的所有日期,判断是否回文
上考场代码
#include <cstdio>
,,,,,,,,,,,,};
inline bool check(int date) {  //判断是否回文
    ];
    t[] = ;
    while (date) {
        t[++t[]] = date%;
        date /= ;
    }
    ;i <= ;i++)
        -i+]) return false;
    return true;
}
inline int next(int i) {  //生成下一个日期
    int year,month,day;
    day = (i%)+((i/%)*);  //取出日
    i /= ;
    month = (i%)+((i/%)*);  //取出月
    i /= ;
    year = (i%)+((i/%)*)+((i/%)*)+i/*;  //取出年
    ) && year%) || !(year%)) m[] = ;  //判断是否为闰年
    day++;  //下一天
    ) {  //若到了月底,则变到下一月
        day = ;
        month++;
    }
    ) {  //若到了年底,则变到下一年
        month = ;
        year++;
    }
    +year*;  //把年月日变成8位数字
}
int main() {
    freopen("date.in","r",stdin);
    freopen("date.out","w",stdout);
    ;
    scanf("%d%d",&date1,&date2);
    for (int i = date1;i <= date2;i = next(i))  //生成date1到date2的所有日期
        if (check(i)) ans++;  //判断是否回文
    printf("%d",ans);
    ;
}

T3

考场上写了个暴力模拟,70分......出来后发现还是可以做的,写个队列就行了,超出86400s的就出队

70分考场代码

#include <cstring>
#include <cstdio>
#include <map>
using namespace std;
],k[];
];
map<];
int main() {
    freopen("port.in","r",stdin);
    freopen("port.out","w",stdout);
    scanf("%d",&n);
    ;i <= n;i++) {
        scanf("%d%d",&t[i],&k[i]);
        ;j <= k[i];j++) scanf("%d",&x[i][j]);
        ,R = i,pos = i;
        while (L <= R) {
            ;
            ) {
                pos = mid;
                R = mid-;
            } ;
        }
        ;
        memset(tmp,false,sizeof(tmp));
        for (int j = pos;j <= i;j++)
            ;l <= k[j];l++)
                if (!tmp[x[j][l]]) {
                    ans++;
                    tmp[x[j][l]] = true;
                }
        printf("%d\n",ans);
    }
    ;
}
100分代码
#include <cstdio>
#include <queue>
#include <map>
using namespace std;
,vis[];
struct Queue { int t,x; };
queue<Queue> Q;
inline int read(int &x) {  //读入优化
    char ch;
    ');
    x = ch-';
    +ch-';
}
int main() {
    freopen("port.in","r",stdin);
    freopen("port.out","w",stdout);
    read(n);
    ;i <= n;i++) {
        int t,k;
    read(t),read(k);
    ,x;i <= k;i++) {
        read(x);
        if (!vis[x]) ans++;  //若这个乘客是其他国籍,则统计
        vis[x]++;  //统计
        Q.push((Queue){t,x});  //加入队列
    }
    while (true) {  //把86400以外的排除
      Queue head  = Q.front();
      + <= head.t && head.t <= t) break;
      else {
        vis[head.x]--;
        if (!vis[head.x]) ans--;
        Q.pop();
      }
    }
    printf("%d\n",ans);
  }
  ;
}

T4

考场上想不出,于是打了个暴力,40分......
40分考场暴力代码
#include <cstdio>
int main() {
    ],ans[][];
    scanf("%d%d",&n,&m);
    ;i <= m;i++) scanf("%d",&x[i]);
    ;a <= m;a++)
        ;b <= m;b++)
            if (a != b)
                ;c <= m;c++)
                    if (c != a && c != b && (double)x[b]-(double)x[a] < (double)((double)x[c]-(double)x[b])/3.0)
                        ;d <= m;d++)
                            *(x[d]-x[c])) {
                                ans[a][]++;
                                ans[b][]++;
                                ans[c][]++;
                                ans[d][]++;
                             }
    ;i <= m;i++) printf(],ans[i][],ans[i][],ans[i][]);
    ;
}

4重循环是用不到n的,没有白给的条件,没有没用的数据!!!

我们可以把这4个数看作是个数轴上的点,根据题目给的条件,可知AB=2*CD,BC>6*CD,AD>9*CD
那么,我们只需要确定D,就可以确定C点,然后再找AB。我们也可以通过找C来确定ABD。
100分代码
#include <cstdio>
],vis[],a[],b[],c[],d[];
int main() {
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
    scanf("%d%d",&n,&m);
    ;i <= m;i++) {
        scanf("%d",&x[i]);
    vis[x[i]]++;  //把所有数记在数轴上
    }
    ;i <= n/;i++) {  //枚举CD的长度
        ;
        +;j <= n;j++) {
          sum += vis[j-(*i+)]*vis[j-(*i+)+*i];
          d[j] += sum*vis[j-i];
          c[j-i] += sum*vis[j];
      }
      sum = ;
      *i+);j >= ;j--) {  //枚举CD两点,确定AB的个数
          sum += vis[j+(*i+)]*vis[j+(*i+)-i];
          a[j] += sum*vis[j+*i];
          b[j+*i] += sum*vis[j];
      }
    }
    ;i <= m;i++) printf("%d %d %d %d\n",a[x[i]],b[x[i]],c[x[i]],d[x[i]]);
    ;
}

noip2016普及组 题解的更多相关文章

  1. [题解]noip2016普及组题解和心得

    [前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...

  2. noip2016普及组题解和心得

    前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...

  3. NOIP2016普及组解题报告

    概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...

  4. NOIP2008普及组题解

    NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...

  5. NOIP2016普及组复赛解题报告

    提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...

  6. NOIP2002-2017普及组题解

    虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...

  7. 【做题记录】[NOIP2016 普及组] 魔法阵

    P2119 魔法阵 2016年普及组T4 题意: 给定一系列元素 \(\{X_i\}\) ,求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 . \[\begin{cases}X_ ...

  8. NOIP2016普及组

    普及组.代码有空发. 第一题就是买铅笔.暴力模拟绝对可取. 第二题就是回文日期.从t1的年份到t2的年份枚举每一年.头尾要特判. 第三题就是海港.骗了40分. 第四题就是魔法阵.不太好优化. 完.

  9. NOIP2008普及组 题解 -SilverN

    T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...

随机推荐

  1. 关于shiro权限管理的一些总结

    项目中最近开发用到了shiro,shiro作为一款轻量级的权限管理框架,在项目中主要想管理用户的登陆之后的页面访问,按钮,数据的显示.主要借用了shiro自己的页面权限标签. 当用户登录时->先 ...

  2. Oracle 左连接 left join、右连接right join说明

    Oracle 左.右连接 + 在等号 左边表示右连接  获取右表所有记录,即使左表没有对应匹配的记录. + 在等号 右边表示左连接  获取左表所有记录,即使右表没有对应匹配的记录. 例子: selec ...

  3. Servlet端 接收不到4096,8192长度的JSON参数

    Servlet端的日志显示,客户端传过来的JSON参数是空值. 但是在客户端的日志显示,已将JSON参数传送过去. 经调查发现,加减1位后的JSON参数均可以正常传送. 只有8192,4096长度的J ...

  4. Logback 基础知识

    1.Logback使用logback 是log4j的替代者,其需要slf4j.其配置文件主要有以下三种1. logback.groovy2. logback-test.xml3. logback.xm ...

  5. java 使用spring实现读写分离

    最近上线的项目中数据库数据已经临近饱和,最大的一张表数据已经接近3000W,百万数据的表也有几张,项目要求读数据(select)时间不能超过0.05秒,但实际情况已经不符合要求,explain建立索引 ...

  6. MongoDB数据库基础操作

    前面的话 为了保存网站的用户数据和业务数据,通常需要一个数据库.MongoDB和Node.js特别般配,因为Mongodb是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储 ...

  7. co 模块

    1.co 模块,它基于 ES6 的 generator 和 yield ,让我们能用同步的形式编写异步代码. 2.co 模块是能让我们以同步的形式编写异步代码的 nodejs 模块 3.学习网络地址: ...

  8. 51nod_1417:天堂里的游戏

    题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1417 假设 ans=n/m,C=(A+B)/2 若出正面 ...

  9. 获取cpu真实型号

    感谢文洋兄的思路.亲测有效. [root@storage GetCpuType]# ./main.o Intel(R) Xeon(R) CPU C5528 @ 2.13GHz #include < ...

  10. [BZOJ 1500]维修数列 [Splay Tree从进阶到住院]

    历尽艰辛终于A掉了这题QwQ 贴COGS评论区几句话=.= 策爷:"splay/块状链表的自虐题.".深刻理解到如果没有M倾向就不要去写这题了.. -Chenyao2333 记得b ...