第十三届蓝桥杯省赛

答案:1478

这个题目答案我不太确定,我当时考虑顺子时是记录0的,所以我的答案是14,但是不考虑0的话答案就是4,答案大概率是4

分析:我们先以周为单位,一周做5*a+2*b道题目,那么我们完整地做了n/(5*a+2*b) 周,这些周做了n/(5*a+2*b)*(5*a+2*b)道题目,计算机中除法是下取整,剩余的题目我们直接一天一天的计算即可,下面是代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<map>
#include<set>
using namespace std;
int main()
{
	long long a,b,n,ans=0;
	cin>>a>>b>>n;
	ans=n/(5*a+2*b)*7;
	if(ans/7*(5*a+2*b)==n)
		printf("%lld",ans);
	else
	{
		int cnt=1;
		n-=ans/7*(5*a+2*b);
		while(n>0)
		{
			if(cnt<=5)	n-=a;
			else n-=b;
			ans++;cnt++;
		}
		printf("%lld",ans);
	}
	return 0;
}

看这里: 第十三届蓝桥杯省赛D:修建灌木(思维)_AC__dream的博客-CSDN博客

 看这里:第十三届蓝桥杯省赛E:X进制减法(贪心)_AC__dream的博客-CSDN博客

样例输入

3 4 10
1 2 3 4
5 6 7 8
9 10 11 12

样例输出

19

考试的时候没想到正解,直接用前缀和写了个4重for循环,能过部分样例,下面是代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<map>
#include<set>
using namespace std;
const int N=503;
long long a[N][N],s[N][N];
int main()
{
	int n,m;
	long long K;
	scanf("%d%d%lld",&n,&m,&K);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		scanf("%lld",&a[i][j]);
		s[i][j]+=s[i-1][j]+s[i][j-1]+a[i][j]-s[i-1][j-1];
	}
	long long ans=0;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	for(int k=1;k<=i;k++)
	for(int l=1;l<=j;l++)
		if(s[i][j]-s[i][l-1]-s[k-1][j]+s[k-1][l-1]<=K) ans++;
	printf("%lld",ans);
	return 0;
}

看这里: (蓝桥杯第十三届省赛)G:积木画(动态规划)_AC__dream的博客-CSDN博客

 输出是一个整数,表示答案。

样例输入
2 1
2 2 4
4 4 2
0 0 5

样例输出

2

后续有时间整理……

输出答案对1e9+7取模 

样例输入

5 10

样例输出

14

看这里:(第十三届蓝桥杯省赛)I:李白打酒加强版(动态规划)_AC__dream的博客-CSDN博客

 输出一个整数表示答案。

样例输入

6
2 1 4 2 6 7

样例输出

5

后续有时间整理……

猜你喜欢

转载自blog.csdn.net/AC__dream/article/details/124067204