现在的位置: 首页 > 综合 > 正文

【nyist】Personal Contest.8&&7

2017年05月28日 ⁄ 综合 ⁄ 共 2108字 ⁄ 字号 评论关闭

现在的节奏变成了,两场总结一次了,最近状态不是上佳,有待调整。

第八场,(昨天做的):(2011年北京师范大学新生程序设计竞赛)

比赛中,我就感觉会有人AK,后来才知道的BNU的新生赛,不过全场没人AK,很是遗憾。

A题,感觉以前,在NYOJ上做过类似的题目,不过没有找到,一定要找到!!!!

发现了,学习了,是一个9余数定理。HDU 1163
点击打开链接
NYOJ 485
A*B problem
  HDU 1013
Digital roots     

先说一下9余数定理:

简单来说就是一个数对9取余等于该数各个位置的和对9取余。(由同余定理和k*(10^m)==k%9可以证明,证明略)。

需要注意的是当结果为0的时候,如果该数为0,那么结果为0,否则为9。

BNU 10782   被诅咒的代码 
点击打开链接

题目本质也是一个9余数问题,然后让我们优化一下,打印出来前几个可以发现规律,自己水之。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define LL long long
using namespace std;

const int N=12;
const int hash[N]={0,1,3,6,10,15,21,28,36,45};

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        LL n;
        scanf("%lld",&n);
        printf("%lld\n",(n/9*45+hash[n%9])%10000);
    }
    return 0;
}

B题是一个计算几何,感觉很简单啊。增加一个中点进行判断就可以了。不知道为什么那么多人没有出来。可能是没有想到,这个中点吧(这样竟然是错误的,BNU的题目描述不仅不给力,数据也不给了,大家一致讨论,Pass!!)。

D题,是一个很简单的模拟,理解题意有误,一去不返啊。语文学的不是很好。15Wa都没有过,最后给毁到这个题目上了。下来比赛和同学交流了一下,弄清了题意,直接A了。BNU的题目描述就是这么的坑爹。还是自己的语文学的不好。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <string>
#include <iostream>
using namespace std;

int main(){
    map<int,string> M,M1;
    map<string,int> M2;
    M[0]="nil";M[1]="un";M[2]="bi";M[3]="tri";M[4]="quad";
    M[5]="pent";M[6]="hex";M[7]="sept";M[8]="oct";M[9]="enn";
    for(int i=100;i<=999;i++){
        int tmp=i;
        int g=tmp%10;tmp/=10;
        int s=tmp%10;tmp/=10;
        int b=tmp%10;tmp/=10;
        string tmps;
        tmps+=M[b];
        if(b==9&&s==0){
            tmps+="il";
        }
        else {
            tmps+=M[s];
        }
        if(s==9&&g==0){
            tmps+="il";
        }
        else {
            tmps+=M[g];
        }
        if(g==2||g==3){
            tmps+="um";
        }
        else{
            tmps+="ium";
        }
        M1[i]=tmps;
        M2[tmps]=i;
    }
    int T;
    scanf("%d",&T);
    while(T--){
        int flag;
        scanf("%d",&flag);
        if(flag==1){
            int x;
            scanf("%d",&x);
            string k=M1[x];
            k[0]=k[0]-'a'+'A';
            cout<<k<<endl;
        }
        else{
            string x;
            cin>>x;
            x[0]=x[0]-'A'+'a';
            cout<<M2[x]<<endl;
        }
    }
    return 0;
}

简单的模拟,就是没做对,主要原因在于理解题意不准确,汉语真没有学好。

E题是一个简单的选择,直接暴力。

主要的就是不知道方差的公式:(复习一下)


其他都是水题,不再总结。

第七场:
A题,概率问题,我擦,我敢相信,大多数人都是蒙的,这有点不科学。我也是蒙的。囧。概率问题有待学习啊。

D题,又一神题,都不知道怎么形容了。我擦。大多数学弟学妹都会,我们这些大二组的楞是没几个做出来,我擦。

H题,hash。

I题,大水题。

J题,大水题。

第七场,同学很的各种蒙啊。都不知道大家是怎么想到的,很是怀疑提前看题。没办法,成功都是为有准备的人留的。

总结一些最近的状态吧:

学树状数组,感觉学不到精华,先放一下吧。

最令我生气的是,自己有点急躁,这样很是不好,还好发现了,每隔一段时间总结一下自己的状态很是有必要的。

对,在过去的几场比赛中,我发现了一个严重的问题,比赛后程发力问题,一般情况,都是比赛时间过了一半了,自己就出不了了题了,甚至没做出来的题目也是一些很水的题目。很是值得思考。

个人赛还有两场,希望自己能过,个人赛吧,状态要维持和上升。

继续努力。。。。。奋斗

抱歉!评论已关闭.