2021.01.19 模拟赛错题(2)

贪心

3.最大连接数(好像是叫这个)
做这道题的时候还在纠结要不要输字符串,后来坞主告诉我不用并且教了我。嗯嗯,果然神,思路和写法都很棒呜呜,我能想出思路就是写不出来。
AC代码:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
bool cmp(int x, int y){
	int weix = 0, weiy = 0;//位数
	int z = x, m = y;//存x,y。因为之前卡住的原因在此。不存的话x和y就会在下一个循环中被减到0.后面的计算也便无法进行。
	while(x > 0){
		weix ++;
		x /= 10;
	}//求位数
	while(y > 0){
		weiy ++;
		y /= 10;
	}//求位数
	if(z * pow(10,weiy) + m > m * pow(10,weix) + z)return true;//如果第一个数与第二个数相接的结果比第二个数与第一个数相接的结果大,则返回true。这里应注意不是直接乘位数,而是应该乘10的位数次幂,而这憨憨c++居然不认识^这个符号,只能写pow了。
	else return false;
}
int main()
{
	int n;
	int a[10005] = {};
	scanf("%d", &n);
	for(int i = 1; i <= n; i ++){
		scanf("%d", &a[i]);
	}
	sort(a + 1, a + 1 + n, cmp);
	for(int i = 1; i <= n; i ++){
		printf("%d", a[i]);
	}//没错,主函数非常简短。
	return 0;
}

收获:get到新的计算位数和比较数大小的方法!之前还真没想到!之前的思路是把他们一个一个拆开,比较每一位。很麻烦,我最终也没能实现这个代码。

4.排队接水
之前做过。居然还没一次AC…多写总结和整理是有必要啊。
AC代码(应该是,因为我在最后关闭代码的时候才发现我的更新没有保存。。而且我还手特别快地点了取消保存。。)

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct node{
	int id, time;
}p[10005];
bool cmp(node x, node y){
	if (x.time != y.time)return x.time < y.time;
	else return x.id < y.id;
}//同样,原理还是有点不懂。
int main()
{
	int n, c = 0;
	int t[10005]= {};
	int a[10005] = {};
	scanf("%d", &n);
	for(int i = 1; i <= n; i ++){
		scanf("%d", &p[i].time);
		p[i].id = i;
	}
	sort(p + 1, p + 1 + n, cmp);
	for(int i = 1; i <= n; i ++){
		c += p[i].time * (n - i) + p[i].time;
	}//这里卡了。因为我一开始没加上他自己耗费的时间。
	for(int i = 1; i <= n; i ++){
		printf("%d ", p[i].id);
	}
	printf("\n");
	float d;
	d = (float)c / (float)n;
	printf("%.2lf", d);//之前写了好多次,输出都是.00,但应该输出.90,于是就把他们全强制转换成float了。后来好了。
	return 0;
}

收获:好好算题,好好想关系式。

总结(虽然错题还没完):
1.基础不扎实。很多题做过,但不记得怎么做了。
2.思路还行,但写代码的时候思维不算清晰。因为有的想着想着就给自己绕进去了,整得很烦躁就不想想了就直接把代码写上去了,结果就是调bug很苦。。大多数这种情况出现在写循环的时候,还有循环中数组下角标的确定时。
3.不紧张,专注度还是不够。
4.可以觉得自闭觉得抓狂但,不能放弃。(这还是王子函昨天同我说的,前半句记得不太清楚了,但后一句记得很清晰。他说这话的时候我俩都调题调得自闭。啊 T-T 相互鼓励前进真好)
5.不要懒不要懒不要懒,及时总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值