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.”
  • 相关阅读:
    LeetCode Power of Three
    LeetCode Nim Game
    LeetCode,ugly number
    LeetCode Binary Tree Paths
    LeetCode Word Pattern
    LeetCode Bulls and Cows
    LeeCode Odd Even Linked List
    LeetCode twoSum
    549. Binary Tree Longest Consecutive Sequence II
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/14966521.html
Copyright © 2011-2022 走看看