刚开学没多久就打了一个网络赛,通过这次网络赛我是发现我是真的菜...
放假前校赛的排名让我有些自满,寒假丝毫没有接触ACM,一直沉迷于Steam,这个真的值得好好反省。
虽然现在大一课有点多,在学校也有些事务,但是这些都不是我松懈的理由,
在此写下这篇博客就是为了提醒自己:Why(),How,What
这次比赛的反思:
数论的学习实在是太过于薄弱,要加强,对数字的规律不够敏感,要锻炼,
数据结构最常用的树,不会,要学,
这次题目总体不算特别难,题目的灵活度不大,关键自己会的知识太少。
题目链接
http://acm.hdu.edu.cn/search.php?field=problem&key=%A1%B0%D7%D6%BD%DA%CC%F8%B6%AF-%CE%C4%D4%B6%D6%AA%D0%D0%B1%AD%A1%B1%B9%E3%B6%AB%B9%A4%D2%B5%B4%F3%D1%A7%B5%DA%CA%AE%CB%C4%BD%EC%B3%CC%D0%F2%C9%E8%BC%C6%BE%BA%C8%FC&source=1&searchmode=source
HUD 6461(概率的问题)(答案4行1.00,//题目有点没说明白)
HDU 6462(斐波那契数列平方和)
题意有点看不太清楚,但是所给的数据还是很容易发现规律,
斐波那契数列每一项的平方和,把所给的4进制a,b,换成10进制就行,打个表就OK了
#include <iostream>
#include <cstdio>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)>(y)?(y):(x)) using namespace std; const int mod=;
const int maxn=4e4+;
long long fio[maxn]={,};
long long sum[maxn]={,}; void make_table()
{
for(int i=; i<maxn; i++)
{
fio[i]=(fio[i-]+fio[i-])%mod;
sum[i]=(fio[i]*fio[i])% mod+sum[i-];
//后面是要求 sum的差值,这里的sum不要求余,可大致看一下也能发现long long 不会溢出
}
} int main()
{
make_table();
/*
for(int i=0; i<10; i++)
{
printf("%d %I64d %I64d\n", i , fio[i], sum[i]);
}
*/
int Q;
while(cin>>Q)
{
while(Q--)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
a=a*+b+;
c=c*+d+;
b=max(a,c);
d=min(a,c);
cout<<(sum[b]-sum[d-])%mod<<endl;
//取余别忘记了
}
} return ;
}
HDU 6463(查询第k个鸽子数)
一看就是肯定有规律,
方法1:
随便取几个数字出来,打个表(我傻傻的那笔在那里找规律,把电脑当计算器