[2016/03/23] 2016年蓝桥杯JAVA A组 参赛总结和感想

1

比赛是3月20日,3月19日从南京赶回来,一身疲倦,早早就睡下了。

照例,六点钟就醒了,想着再睡下去也没意思,就起了。收拾收拾东西,在食堂里特意多吃了点东西,看了一下自己的赛前提醒(见附)。在车上睡了一觉,就开考了。


前十五分钟还好,接下来两个小时感觉很不好,大概就是从第三题开始的,被搭积木卡住。明白这是一道深搜的题,但是怎么做都做不对,又不知道程序是哪里出了问题,不甘心跳过,毕竟只是第三题,于是就磨了一段时间,而且心态也变差了。

感觉整体难度是比上次要难的。上次的除了最后两题大题,都能全做出来,这次=-=唔,慢慢说吧。


2

第一题煤球和第二题生日蜡烛都比较水,不管是用程序还是手算都很快。

第三题搭积木,说的是0~9 第一层1 个数,第二层2个数,第三层3个数,第四层4个数,每个数都要比它下面的两个数要小。思路很明确,但写的深搜运行结果怎么都不对= =大概是循环和递归回来的归位出了问题。

然后是两道程序填空,有一个还有点难度,试了试才出来。之后又是一道深搜,我直接暴力了,因为第三题让我感觉很不爽。。第六题还是深搜!但是我吸取教训了,不再用程序,就自己手算,结果大概是落了一种情况,答案少了些。

之后三道大题。。。。我。。不。。想。。说。。话。。。能不能按着套路来!我之前有在动态规划章节看到过类似第八题的原题,但!是!我看不懂!所以我就没尝试着去懂!至于第九题,我是根本不知道算法应该是什么,贪心?第十题是啥我都忘了,总之第九第十我就勉强过了个样例输入输出,能过多少数据看天命吧:)


但总归是结束了,放下一件大事。然后站了一个半小时的公交车去火车站坐车,而且还没吃中饭,真的是饿死、累死。


附:

[Integer]
>>范围


 “-2^32”到“2^32-1”
也就是“-2147483648”到2147483647 共10位


  
[String]


>>字符串分割(substring)
substring(beginIndex,endIndex)
举例 ILOVEYOU
截取LOVE,则beginIndex=1,endIndex=5


>>字符串的基本函数
string.charAt(index)


>>String和int 的相互转换
String.valueOf(int)
Integer.parseInt(String)






[char]
char的数字 转成 int的数字 是要减去48
byte则不用


[double]


>>保留小数点 DecimalFormat类
DecimalFormat df=new DecimalFormat("#.00");//保留两位小数的形式
df.format(double d);


【大数取余定理】
a^b mod c=(a mod c)^b mod c


A%B
A是一个大数,B是一个int型的整数,求A%B。A可能无法用已知数据类型存储,直接取余很困难。
可以设置变量t从大数第一位向后遍历赋值,如果大于mod就取余更新,最后t的值就是所求答案。


    例:
    123 % 4 取一个中间变量t=0
    1<4 t=1
    — 2 t=1*10+2=12>4 t=t%4=0
    — 3 t=0+3=3 t=t%4=3
    ——————– 余数 3


算法:


int MOD(string a,int mod)
{
    int len=a.length();
    int t=0;
    for( int i = 0; i < len; i++ )
    {
        t*=10;
        t+=a[i]-'0';
        if( t >= mod )
            t=t%mod;
    }
    return t;
}


【排序】
[冒泡]
private static void sort(int[] table){
for(int i=0;i<table.length();i++){
for(int j=0;j<table.length()-i-1;j++){
if(table[j]<table[j+1]){
double temp=table[j];
table[j]=table[j+1];
table[j+1]=temp;
}
}
}
}
[插入]
for(int i=1;i<a.length;i++){
int temp=a[i];
for(int j=i-1;j>=0&&temp<a[j];j--){
a[j+1]=a[j];
a[j]=temp;
}

}
[归并]


注意:大小写,0情况,特殊情况。


【公约数,公倍数】
int gong(int a,int b){
int r,min,max;
r=max%min;(大数取余小数)
while(r!=0)
{
max=min;
min=r;
r=max%min;
}
return min;
}


[Calendar]


1 实例化Calendar
Calendar c = Calendar.getInstance();


2 月份是从0开始计数的
  一周 第一天是周日是1,周一为2,以此类推。


3 c.set();将日历翻到...有多种,见java提示。


4 c.get();日历翻到的那一天有多种属性,见java提示。




后缀名改为.vbs
msgbox dateadd("d",1000,"2014-11-9")
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateAdd(interval, number, date)
interval 参数 
yyyy 年 
q 季度 
m 月 
y 一年的日数 
d 日 
w 一周的日数 
ww 周 
h 小时 
n 分钟 
s 秒



  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值