A:12345
这题据说scanf出现错误,在此表示歉意,一方面也是没有验题人。
B:面子工程
C:F(x)
这题就把每个数拆一下,比如4就拆成322,然后替换
D:涂色问题
种数dp
dp[i][j][k][t][last]代表可以涂1次的颜色有i种,涂2次的颜色有j种,涂3次的颜色有k,涂4次的颜色有t种,并且上一次涂的颜色是可以涂last次
记忆化搜索
LL dfs(int s1, int s2, int s3, int s4, int last)
{
//printf("%d %d %d %d %d\n", s1, s2, s3, s4, last);
if(!s1 && !s2 && !s3 && !s4)
return 1;
if(dp[s1][s2][s3][s4][last] != -1)
return dp[s1][s2][s3][s4][last];
LL ans = 0;
if(s1)
ans += dfs(s1-1, s2, s3, s4, 1)*(s1-(last==2));
//上一次涂的颜色是可以使用2次的 那么上次使用的颜色变成只能使用1次了 所以减1
if(s2)
ans += dfs(s1+1, s2-1, s3, s4, 2)*(s2-(last==3));
if(s3)
ans += dfs(s1, s2+1, s3-1, s4, 3)*(s3-(last==4));
if(s4)
ans += dfs(s1, s2, s3+1, s4-1, 4)*s4;
dp[s1][s2][s3][s4][last] = ans;
return ans;
}
E:促销活动
poj的原题http://poj.org/problem?id=1456
F:袜子
签到题,乱搞即可
G:线性表公共元素
H:正方形
假设最终走了x个单位,那么x必然是4n(就是周长)的倍数,并且是x+1的倍数 所以x是4n和n+1的最小公倍数,x在除以n+1就是答案
I:三叉路口
叉积。。
J:OJ虚拟排名
总体来说难度还是比较低的,牛的人基本上1个多小时可以AK,本次比赛我负责出了4个较基础的题目和一个中等的dp,考虑大家是个人赛,题目的代码都缩短了,题目简短,没有歧义,第一题scanf的问题深感抱歉,