zoukankan      html  css  js  c++  java
  • 【19.10.31】

    Prob Sol

    今天的考试状态比之前好很多,心态也更稳,最后50min左右打了第二题和第三题的暴力,但时间安排上还是有问题,T1搞了接近两个小时,后面发现错了又回去改就开始紧张,最后还是错的,如果换个做题顺序应该T1、T2都能拿更多分

    正确的时间安排应该是先把好拿的分全部拿到手,再回头去肛正解,有比较麻烦的正解思路也是先去打暴力再回头做(毕竟也不能保证正确性&能敲对)。

    平时练习时一定要先自己想,看题解一定要仔细理解,自己最后要能推,还有思考别人怎么想的,我要改变那些思路才能这么想。

    T1.

    题面

    题解

     

    -记录4个二元组√ 枚举前半部分× 解方程× 自己的特判×

    -正解思路不难想,按数据范围一推就知道的要跑O(N),因此4个二元组很好想,只枚前半部分其实也是基操,如果没想错特判的话(草稿纸上推的不严谨,也没造数据检验),方程组可能推的出可能推不出(应该推不出毕竟只枚举前半部分都没想到就推不出第一个方程),这时肯定还要优化时间复杂度,考虑xi+yi的取值也不难想,因为1.xi+yi真的是基操 2.xi,yi的值的范围很小,他们俩的和确定下来就只枚举一个

    -洛谷上有数据范围更小的原题,CF1138B

    代码

    #include<bits/stdc++.h>
    #define ri register int
    #define ll long long
    #define For(i,l,r) for(ri i=l;i<=r;i++)
    #define Dfor(i,r,l) for(ri i=r;i>=l;i--)
    using namespace std;
    int n,cnt0,cnt1,cnt2,cnt[3],sum;
    vector<int>g[3];
    bool f;
    inline ll read(){
        ll f=1,sum=0;
        char ch=getchar();
        while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
        while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();}
        return f*sum;
    }
    inline void write(int x){
        if(x<0) putchar('-'),x=-x;
        if(x>9) write(x/10);
        putchar(x%10+'0');
    }
    int main(){
        freopen("sequence.in","r",stdin);
        freopen("sequence.out","w",stdout);
        n=read();
        For(i,1,n){
            int x=read(),y=read();
            cnt[x+y]++;sum+=y;
            g[x+y].push_back(i);
        }
        For(x2,0,cnt[2]){
            int x1=sum-(x2<<1),x0=(n>>1)-x1-x2;
            if(x1>=0&&x1<=cnt[1]&&x0>=0&&x0<=cnt[0]){
                For(i,0,x0-1) write(g[0][i]),printf(" ");
                For(i,0,x1-1) write(g[1][i]),printf(" ");
                For(i,0,x2-1) write(g[2][i]),printf(" ");
                for(ri i=x0;i<(int)g[0].size();i++) write(g[0][i]),printf(" ");
                for(ri i=x1;i<(int)g[1].size();i++) write(g[1][i]),printf(" ");
                for(ri i=x2;i<(int)g[2].size();i++) write(g[2][i]),printf(" ");
                f=1;break;
            }
        }
        if(!f){cout<<-1;return 0;}
        return 0;
    }
    View Code

    T2.

    题面

    题解

    -一道我想到了状态想不出转移的dp...主要原因可能平时自己推的少,而且考试时间不够没怎么推就放弃了

    -看了题解,感觉我对dp还有点误解,复习时去看博客认真理解8,这个状态我想到了但觉得没有正确性somehow,可能还对枚举有些误解吧打死不想枚举

    代码

    T3.

  • 相关阅读:
    Spring Boot 2.3.0 正式发布!
    当互联网码农遇见国企老同学
    GitHub发布重大更新,关系到所有程序员!
    开发者被要求向破解者道歉,竟揪出“阿里云假员工”,网友:这人有前科
    等了整整12年!Linux QQ 终于更新了!
    我的电脑不联网,很安全,黑客:你还有风扇呢
    grpc的简单用例 (golang实现)
    grpc的简单用例 (C++实现)
    redis键过期 (redis 2.6及以上)
    安装folly库以及folly的ConcurrentHashMap的简单使用
  • 原文地址:https://www.cnblogs.com/jian-song/p/11770956.html
Copyright © 2011-2022 走看看