zoukankan      html  css  js  c++  java
  • 【暑期实训】Week 1

    实训第一周结束了,感受是,真的挺快乐的,虽然每天要从工部到信部竖穿整个学校,但是时间没有感觉到996很痛苦,大部分时候就是写题,而且题也基本上是8易2中这样的难度分布。

    Day 1、2 教了一些Linux和Git的基本操作,是以前没怎么接触到的部分,不过上手还是挺容易的,只要记住几个核心操作完全能达到要求。给我比较难受的是只能用C不能用C++,先开始不太了解C的库函数,甚至不知道qsort,strcmp,strcpy,真的是被C++惯坏了。

    Day 3、4 讲的是代码风格和Debug,见识了一些新的Debug手法但是并没有学会,还是老oi人那一套用着舒服。

    Day 5、6 开始涉及算法和数据结构,但是也都是无比基础的栈,队列,链表和贪心。

    我个人的学习节奏就是,写题为主,写完了必做题过后就做了做挑战题和选做题,基本上也写完了,真的梦回高中,还挺让人怀念的。

    然后写一点收获吧!包括以前涉及过但是遗忘了的和新学的一些知识点

    C语言结构体排序

    struct Node 
    {
        int l,r;
    } a[N];
    int ans=0,cnt=0;
    int cmp(void *a,void *b)
    {
        struct Node c=*(struct Node*)a;
        struct Node d=*(struct Node*)b;
        if(c.r!=d.r)return c.r-d.r;
        else return d.l-c.l;
    }

    必须把a和b是void,然后再前缀转换,最后用qsort

    qsort(a+1,n,sizeof(a[0]),cmp);

    qsort(数组+起始地址,长度,最小单位,比较函数)

    常数优化

    OIer的祖传代码了

    #pragma GCC optimize(3)
    #pragma GCC target("avx")
    #pragma GCC optimize("Ofast")
    #pragma GCC optimize("inline")
    #pragma GCC optimize("-fgcse")
    #pragma GCC optimize("-fgcse-lm")
    #pragma GCC optimize("-fipa-sra")
    #pragma GCC optimize("-ftree-pre")
    #pragma GCC optimize("-ftree-vrp")
    #pragma GCC optimize("-fpeephole2")
    #pragma GCC optimize("-ffast-math")
    #pragma GCC optimize("-fsched-spec")
    #pragma GCC optimize("unroll-loops")
    #pragma GCC optimize("-falign-jumps")
    #pragma GCC optimize("-falign-loops")
    #pragma GCC optimize("-falign-labels")
    #pragma GCC optimize("-fdevirtualize")
    #pragma GCC optimize("-fcaller-saves")
    #pragma GCC optimize("-fcrossjumping")
    #pragma GCC optimize("-fthread-jumps")
    #pragma GCC optimize("-funroll-loops")
    #pragma GCC optimize("-fwhole-program")
    #pragma GCC optimize("-freorder-blocks")
    #pragma GCC optimize("-fschedule-insns")
    #pragma GCC optimize("inline-functions")
    #pragma GCC optimize("-ftree-tail-merge")
    #pragma GCC optimize("-fschedule-insns2")
    #pragma GCC optimize("-fstrict-aliasing")
    #pragma GCC optimize("-fstrict-overflow")
    #pragma GCC optimize("-falign-functions")
    #pragma GCC optimize("-fcse-skip-blocks")
    #pragma GCC optimize("-fcse-follow-jumps")
    #pragma GCC optimize("-fsched-interblock")
    #pragma GCC optimize("-fpartial-inlining")
    #pragma GCC optimize("no-stack-protector")
    #pragma GCC optimize("-freorder-functions")
    #pragma GCC optimize("-findirect-inlining")
    #pragma GCC optimize("-fhoist-adjacent-loads")
    #pragma GCC optimize("-frerun-cse-after-loop")
    #pragma GCC optimize("inline-small-functions")
    #pragma GCC optimize("-finline-small-functions")
    #pragma GCC optimize("-ftree-switch-conversion")
    #pragma GCC optimize("-foptimize-sibling-calls")
    #pragma GCC optimize("-fexpensive-optimizations")
    #pragma GCC optimize("-funsafe-loop-optimizations")
    #pragma GCC optimize("inline-functions-called-once")
    #pragma GCC optimize("-fdelete-null-pointer-checks")

    部分题解

    格式化程序

     

    这个题的思路其实很简单,一共只有五种情况

    (1)/

    (2)

    (3).

    (4)..

    (5)字符串

    对于(1)(2)可合并为同一种,直接跳过 (3)直接跳过 (4)将栈顶字符串出栈 (5)进栈

    一些细节:1、需要判断是否以/开头 2、需要判断是否Value Error

    实现和数据都没什么坑,需要注意一下打印格式。最后倒着打印栈即可

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    char s[110];
    int n,top;
    char o;
    struct email
    {
        char w[120];
    }q[1210];
    
    int main()
    {
        while (scanf("%s", s) != EOF)
        {
            int len = strlen(s),print=0;
            int st = 0,i=0,ed=0;
            if (s[0] == '/' || s[0] == 92)
                st = 1;
                top=0;
                s[len] = ' ';
                while(i<len)
                {
                    if (s[i] == '.')
                    {
                        if (s[i + 1] != '.')
                        {
                            i++;
                            continue;//一个点
                        }
                        if (top==0)
                        {
                            print=1;
                            puts("Value Error");
                            ed=1;
                            break;
                        } 
                        else
                            top--;
                        i++;
                        continue;
                    }
                    
                    if (s[i] == '/' || s[i] == 92)
                    {
                        i++;
                        continue;
                    }
                        
                        int j = 0;
                        char temp[101];
                       memset(temp,0,sizeof(temp));
                        while (((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9'))&& i< len)
                        {
                            temp[j]=s[i];
                            j++;i++;
                        }
                    strcpy(q[++top].w,temp);
                }
            if(ed)continue;
            if(st&&!top)
            {
                print=1;
                printf("/
    ");
            }
            if(st&&top)
            {
                print=1;
                printf("/");
            }
            if(top)
            {
                print=1;
                for(i=1;i<top;i++)
                    printf("%s/",q[i].w);
                printf("%s
    ",q[top].w);
            }
            if(print==0)printf("
    ");
        }
    }
    
        

     2n皇后问题

    给定一个 nn 的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入 n 个黑皇后和 n 个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条斜线(包括正负斜线)上,任意的两个白皇后都不在同一行、同一列或同一条斜线(包括正负斜线)上。问总共有多少种放法?nn 小于等于 88。

    输入格式

    输入的第一行为一个整数 n,表示棋盘的大小。

    接下来 n 行,每行 n个 0 或 1 的整数,如果一个整数为 1,表示对应的位置可以放皇后,如果一个整数为 0,表示对应的位置不可以放皇后。

    输出格式

    输出一个整数,表示总共有多少种放法。

    样例输入1

    4
    1 1 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 1

    样例输出1

    2

    样例输入2

    4
    1 0 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 1
    

    样例输出2

    0
    “Make my parents proud,and impress the girl I like.”
  • 相关阅读:
    makefile文件编写
    soem函数库的编译
    加秘钥的SSH
    ssh传文件
    ssh1
    安装paramiko的方法
    Ftp客户端(上传文件)
    ftp服务端
    vi编辑器没有颜色的解决办法
    socket服务器
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/14966521.html
Copyright © 2011-2022 走看看