这周二老师把我们喊去做了一个期中报告会,每个人都做了一个小小的总结,那天真的感触颇深,ACM队的解散也许真的就是一念之间,我们也说了自己的目标和如何学习的,我的目标是明年能拿一个牌,也算是一个不能让自己后悔的目的。
周三晚上的训练赛,第一题好像是一种规律题,也有人用暴力解出来的,这道题大致的意思是输入一个n求,能被2、3、5、7整除的n位数中的最小数,我在纸上枚举了好多情况,得出了规律,由于大的n之后前面是不会变的,只要后面添0就行了,n为1和2的时候不存在这个数。
if(n==3) cout<<"210"<<endl;
else
{
int k=n%6;
if(k==0)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"170"<<endl;
}
else if(k==1)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"020"<<endl;
}
else if(k==2)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"200"<<endl;
}
else if(k==3)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"110"<<endl;
}
else if(k==4)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"050"<<endl;
}
else if(k==5)
{
cout<<"1";
for(int i=1;i<=(n-4);i++)
{
cout<<"0";
}
cout<<"080"<<endl;
}
}
然后我们就卡在E题了,一开始没读懂题目浪费了很多时间,最后知道题意后发现这道题其实不难,这道题的意思是一个电影鉴赏家,要鉴赏n个电影,有k种风格,看完一个电影下一个电影如果与上一个电影的风格不同,会给鉴赏家积累压力,问如果去掉哪一种风格的电影使鉴赏家的压力最小。
这周开始看树型DP,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向:
1、叶->根:在回溯的时候从叶子节点往上更新信息
2、根 - >叶:往往是在从叶往根dfs一遍之后(相当于预处理),再重新往下获取最后的答案。
不管是 从叶->根 还是 从 根 - >叶,两者都是根据需要采用,没有好坏高低之分。