第13回ブルーブリッジカップ州選手権

回答:1478

この質問の答えがよくわかりません。ストレートを考えているときに0を記録したので、答えは14でしたが、0を考慮しなかった場合、答えは4になり、答えはおそらく次のようになります。 4

分析:最初に1つの単位として数週間を取り、1週間で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;
}

ここを見てください: 第13回ブルーブリッジカップ州D:低木の構築(思考)-AC__dreamのブログ-CSDNブログ

 ここを見てください:第13回ブルーブリッジカップ州E:X-ary減算(貪欲)-AC__dreamのブログ-CSDNブログ

サンプル入力

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

サンプル出力

19

試験中に正しい解決策を期待していませんでした。接頭辞sumを使用して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;
}

こちらをご覧ください:( ブルーブリッジカップ第13回州大会)G:ビルディングブロックペインティング(動的計画法)_AC__dreamのブログ-CSDNブログ

 出力は、答えを表す整数です。

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

サンプル出力

2

後で整理する時間があります...

1e9+7を法とする出力回答 

サンプル入力

5 10

サンプル出力

14

こちらをご覧ください:(第13回ブルーブリッジカップ州大会)I:李白のワイン強化版(動的計画法)_AC__dreamのブログ-CSDNブログ

 答えを表す整数を出力します。

サンプル入力

6
2 1 4 2 6 7

サンプル出力

5

後で整理する時間があります...

おすすめ

転載: blog.csdn.net/AC__dream/article/details/124067204