- 高镜铠 的博客
7.9日
- @ 2024-7-10 19:58:47
TP1 小田的消消乐游戏
思路:分点讨论
-
如果a[1]==a[n] cout<<"1";
-
如果a[1]==a[i]&&a[i+1]==a[n] cout<<"2";
-
如果只有a[1]或a[n]和其他的都不相同的话 cout<<"-1";
-
如果n==1 cout<<"-1"; 样例: 5 1 1 1 1 0 i=1,j=4 数组变成:0 无法消除 输出-1 错误点:思考方向错误,以为要用stack,最后没写出来,就只拿了暴力分。
TP2 小田的气球爆炸啦
思路:分点讨论
-
如果总和==2,a[1]==a[2]时,cout<<"0";
-
如果总和%2==0,不是一的可以留下
-
如果总和%2==1,cout<<n;
-
如果最大的比其他的的和都大,cout<<"1"; 样例: 4 2 2 3 4 如果要让第一个颜色的气球留下,就让第三个和第四个相撞,数组就变成了2 2 1,再让第三个和第二个相撞,数组就变成了2 1,最后他们再撞,就只留下了第一个颜色的气球。第二个和第一个等价,同理。 如果要让第三个颜色的气球留下,就让第一个和第二个一起撞第四个,就只留下了第三个颜色的气球。 如果要让第四个颜色的气球留下,就让第一个和第二个一起撞第三个,数组就会变成1 4,最后他们再撞,就只留下了第一个颜色的气球。 错误点:思考的点不够,少了第一个点,导致没拿满分。
TP3 小k的加减游戏
思路:将两个之间的比较小的一个给加一,比较大的一个减一,但是如果两个数都是0,输出No。 样例: 2 1 3 0 AB AC 1和3之间1比较小,1+1=2,3-1=2,数组变成2 2 0,2和0之间0比较小,0+1=1,2-1=1,数组变成1 2 1,最后输出Yes A C。 3 1 0 0 AB BC AB 1和0之间0比较小,0+1=1,1-1=0,数组变成0 1 0, 1和0之间0比较小,0+1=1,1-1=0,数组变成0 0 1, 最后剩两个0,输出No。 错误点:思考方向错误,最后没写出来,就只拿了暴力分。
TP4 蓬莱山仙峰台
思路:先把所有的都当做仙峰台,看到有比它大的就ans--,因为可能有重复,所以弄一个桶来记住它有没有重复,如果没有重复ans--,b[i]=1,如果有重复就不管它,直接跳过。 4 3 1 2 3 4 1 3 2 3 2 4 TP1连接了TP3,TP1比TP3矮,所以TP1不是仙峰台 TP2连接了TP3和TP4,TP2比TP3矮,所以TP2不是仙峰台 TP3连接了TP1、TP2,TP3比1和2都高,所以TP3是仙峰台 TP4连接了TP2,TP4比TP2高,所以TP4是仙峰台 输出2
TP5 数学题
思路:将(a+b)%b*gcd(a,b),简化成a+b=b^2×k, 枚举b<=m,a每次+b,直到等于n为止。 样例: 1 1 1+1=2,2%gcd(1,1)=0,输出1。