首页 » C++ » 2017.10.20测试

2017.10.20测试

原文 http://blog.csdn.net/qq_37322063/article/details/78336849

2017-10-25 10:20:17阅读(589)

分数:100+25+85=210
第三题数据只能说真的shui的一批
第二题反而没有拿满暴力
贴题解:

题解 T1 rock

想了贼久,还对拍了很久
最后找到一个很简单的结论
从左往右扫,除了最后一组数
前面的所有正数肯定都会有一个迈不过去的负数坎,于是每个坎作为tail划分组
寻找最后一组的第一项的位置-1直接输出就好了
代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
#include<cstdlib>
using namespace std;
long long read(){
    long long x=0;int f=1;char c;
    for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
    for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0';
    return x*f;
}
long long head;
long long n;
long long b[2000005];long long f[2000005];
int main(){
//  freopen("rock.in","r",stdin);
//  freopen("rock.out","w",stdout);
    n=read();
    for(int i=1;i<=n;i++){
        b[i]=read();
    }
    for(int i=1;i<=n;i++){
        f[i]=b[i]-read();
        if(f[i-1]>=0)f[i]+=f[i-1];
        if(f[i]<0)head=i;
    }
    cout<<head;
}

(emmmm,不得不说markdown真的很顺

T2 matrix

DP
因为可以发现矩阵最多只有两个纵列,所以
开一个f[i][j][k]f[i][j][k]
表示第一列枚举到第ii个,第二列枚举到第jj个
且已经组成了kk个矩形
还没过,先贴代码:


T3 table

其实我明明觉得自己打的就是30暴力啊。。
但是居然拿到了result0result0的100,result1result1的85

贴一只doge1

然后发现。。

题解就是暴力?!
但是题解很机智地加了registerregister

于是就要学习一下registerregister的用法了:

据说可以在不开O2O2时手打的话起奇效(特别是在定义一个可能反复出现的变量时
e.g:e.g:循环变量
emmm。。。 这不就是暴力利器么?!

贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
#include<cstdlib>
#define ll long long
using namespace std;
int read(){
    int x=0,f=1;char c;
    for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1;
    for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0';
    return x*f;
}
int n,m,q;
int a[1005][1005];
int xl,xs,yl,ys,l,w;
bool in[1000005];
int main(){
//  freopen("table.in","r",stdin);
//  freopen("table.out","w",stdout);
    n=read();m=read();q=read();int f=0;
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++){
            a[i][j]=read();
            if(!in[a[i][j]]){
                f++;
                in[a[i][j]]=1;
            }
        }
    }
    if(f==1){
        for(register int i=1;i<=n;i++){
            for(register int j=1;j<=m;j++)
                cout<<a[1][1]<<" ";
            cout<<endl;
        }
        return 0;
    }
    while(q--){
        xl=read();yl=read();xs=read();ys=read();l=read();w=read();
        register int xx=xs-xl,yy=ys-yl;
        for(register int i=xl;i<=xl+l-1;i++){
            for(register int j=yl;j<=yl+w-1;j++){
                int tmp=a[i][j];a[i][j]=a[i+xx][j+yy];
                a[i+xx][j+yy]=tmp;
            }
        }
    }
    for(register int i=1;i<=n;i++){
        for(register int j=1;j<=m;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
}

point20point20:3281/4000msms

于是就可以发现
在有些信仰程序里真的是要registerregister满天飞的…
emmm难得写了T3,足以证明(T3数据实在是太shui了)我的实力实在是在突飞猛进啊!

<a href=2017.10.20测试" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1508498021979&di=230f55deaa85bf19f97e24f328b6d1af&imgtype=0&src=http%3A%2F%2Fwww.beauty321.com%2FarticleIMG%2Fmonth_1606%2F201606011824446130.jpg" alt="doge" title="">

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹