欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2021.07.19【普及组】模拟赛C组 赛后总结

程序员文章站 2024-03-18 23:13:04
...

前言

        这次比赛没有想象中的好,19名,223.3分。T1暴力33.3,T2暴力30,T3奇怪地WA60,T4AC。


T1 数字游戏

        动态规划

        当时没想到状态转移方程,时间也不多了,就直接暴力骗分。

        详见https://blog.csdn.net/jz_2021_fengyue/article/details/118911299?spm=1001.2014.3001.5502


T2 吃蛋糕

        拓展欧几里得。a,b,c题目都告诉我们了,关系式也是2021.07.19【普及组】模拟赛C组 赛后总结

        当时以为暴力能过就没多想。

        详见https://blog.csdn.net/jz_2021_fengyue/article/details/118915114


T3 守望者的逃离

        贪心算法。能闪烁就闪烁,不能闪烁就判断是等划算还是走划算。

        当时想到了,也实现了,样例也过了,但因为一些奇奇怪怪的原因WA60。我想是因为程序被我写复杂了。

#include <cstdio>
#include <cmath>
#define ll long long
using namespace std;

ll m,s,t;

int main()
{
	freopen("escape.in","r",stdin);
	freopen("escape.out","w",stdout);
	scanf("%lld %lld %lld",&m,&s,&t);
	int s_=0,s__=0;
	for (int i=1; i<=t; i++)
	{
		if (m>=10)
		{
			m-=10;
			s_+=60;
		}
		else m+=4;
		s__+=17;
		if (s_>s__) s__=s_;
		if (s__>s)
		{
			printf("Yes\n");
			printf("%lld",i);
			return 0;
		}
	} 
	printf("No\n");
	printf("%lld",s__);
	return 0;
}

T4 双塔问题        

        我就算从这里跳下去,也不会写这道题的总结的!

        哎呀妈真香!

        高精度,坑死了!

#include <cstdio>
using namespace std;

const int N=10005;
int a[N];

void mult()
{
	int t=0;
	for (int i=1; i<=a[0]; i++)
	{
		a[i]*=2;
		a[i]+=t;
		t=a[i]/10;
		a[i]%=10;
		if (i==a[0] && t) a[0]++;
	}
}

int main()
{
	int n;
	freopen("hanoi.in","r",stdin);
	freopen("hanoi.out","w",stdout);
	scanf("%d",&n);
	a[0]=1;
	a[1]=1;
	for (int i=1; i<=n; i++) mult();
	a[1]--;
	for (int i=1; i<=a[0]; i++)
	{
		if (a[i]<0) 
		{
			a[i]+=10;
			a[i+1]-=1;
		}
		else break;
	}
	mult();
	for (int i=a[0]; i>=1; i--) printf("%d",a[i]);
	return 0;
} 

总结

        这次比赛要是T3过了,能擦边rank10。下次能模拟即模拟,能暴力即暴力,不要用奇奇怪怪的算法和数据结构。

相关标签: 赛后总结 c++