- 高镜铠 的博客
7.10
- @ 2024-7-10 20:44:07
TP1 小田的01变换
思路:分点讨论
-
如果字符串之中只有0或1,输出0。
-
如果字符串之中0和1的数量相同的话,输出2。
-
如果字符串之中0和1的数量不同的话,输出1。
-
如果n==2,并且a[1]!=a[2]的话,输出-1。 样例: 3 011 0和1的数量不同,输出1. 4 1100 0和1的数量相同,输出2. 错误点:有一个点,没用else,而且同时满足了两种条件,所以输出了两个答案,导致只拿了95分。
TP2 小田滑雪
思路:定义两个数组分别存储T类型的失误,和D类型的失误,分别进行排序。 判断T[i]和D[i]谁先发生,假设速度为v,现在在nd,时间为nt。 假设t[i]先发生,int x=nd+(t[i]-nt)*v if(x<d[j]) t[i]先发生 else if(x>=d[j]) d[j]先发生 样例: 2 T 30 D 10 前 10 秒,小田的速度是每秒 1 米,滑了 10 米后发生第一次失误。
在接下来 20 秒内,他又滑了 10 米,接着遭遇了第二次失误,速度变为 每秒 1/3米,还剩下 980 米,所以共计花了 10+20+2940=2970 秒完成比赛。
TP3 小田赶牛
思路:将数组按顺序排序,用排好序后的数组累加。 示例代码: 排序顺序:
bool cmp(td a,td b)
{
return a.t*b.d<b.t*a.d;
}
累加:
for(int i=1;i<=n;i++)
b[i]=b[i-1]+a[i].d;
for(int i=1;i<=n;i++)
hua+=a[i].t*2*(b[n]-b[i]);
6 3 1 2 5 2 3 3 2 4 1 1 6 赶牛的顺序为 6,2,3,4,1,5。
错误点:思考方向错误。