zoukankan      html  css  js  c++  java
  • 刷题笔记

    教程:
    http://www.cskaoyan.com/forum.php?mod=viewthread&tid=647811&highlight=����ָ��

    总述

    • 数组小的定义在main里直接初始化,否则定义为全局变量,用for初始化
    • 查找一遍scanf,确认取址符用对
    • 如果自测过了,综测没过,可能是没考虑特殊情况如No answer

    排序

    • 1秒约百万数量级复杂度
      1M能装25万个int

    • scanf 返回成功赋值的变量个数.对于不知道有多少组输入的情况,常见做法有:

    while(scanf()!=EOF){}
    或 while(gets(str)) {}

    scanf输入,即使是字符串也可以用空格分割。例如i am a teacher 算作四个字符串

    • C++自带的排序函数:sort
    #include<algorithm>
    sort(buff,buff + n);  //    数组首地址为buff,排n个数(即不包括buff[n])
    
    • sort函数,利用自己的排序规则(compare函数)重载
    bool compare(int x,int y)
    {
        balabala;    //例如x>y
        return true;
    }
    
    sort(buff,buff+n,compare);   / /compare 为true,表示第一个参数将排在第二个参数前。
    
    • string.h中的字符串处理函数
      string.h
      函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。

    返回值 若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值.

    • 非零为true

    日期类问题

    • &&优先级高于||
    • 大容量存储空间写在函数外面,作为全局变量以免不够
    • 套路:
    #include <stdio.h>
    
    #define isLeap(x) x%100!=0 && x%4==0 ||x%400==0
    int dayOfMonths[13][2]
    {
    0,0,
    31,31,
    28,29,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31
    };
    struct Date
    {
        int year;
        int month;
        int day;
        void nextDay()
        {
            //Date tem = date;
            day++;
            if(day>dayOfMonths[month][isLeap(year)])
            {
                day=1;
                month++;
                if(month>12)
                {
                    month=1;
                    year++;
                }
            }
        }
    };
    int buff[5000][13][32];
    int abs(int x)
    {
        return x>0?x:-x;
    }
    int main()
    {
        //预处理
        int counter=1;
        Date temp = {0,1,1};
        buff[0][1][1]=1;
        while(temp.year<5000)
        {
            temp.nextDay();
            counter++;
            buff[temp.year][temp.month][temp.day]=counter;
        }
        //输入日期
        int y1,m1,d1,y2,m2,d2;
        while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)
        {
            scanf("%4d%2d%2d",&y2,&m2,&d2);
            printf("%d
    ",abs(buff[y1][m1][d1]-buff[y2][m2][d2])+1);
        }
        
        return 0;
    }
    

    排版类

    一般有两种写法,一种是直接按规律输出,另一种是定义输出矩阵,先填好矩阵,在输出。

    Written with StackEdit.

  • 相关阅读:
    node.js开发 打包管理工具webpack
    node.js开发 npm包管理工具 npm 和 cnpm区别
    node.js开发 npm包管理工具
    node.js开发 1-概述
    脚手架-1概念
    前端开发 vue,angular,react框架对比2
    AttachDispatch
    画图软件orign的使用
    建立xml文件时遇到的编码问题和解决方法
    securecrt简介
  • 原文地址:https://www.cnblogs.com/YuQiao0303/p/9622834.html
Copyright © 2011-2022 走看看