B. Mancala
程序员文章站
2022-06-03 19:34:16
...
题意:题不是很好理解,直接简单说吧,输入14个数,每个数必须是奇数或者是0.然后你可以选择一个数把这个数从当前位置的下一个位置,按照顺序依次加1,如果加到最后就从前面开始加,直到当前选择这个数用完。最后把14个数里面是偶数的数加起来,输出最大偶数。例如样例一:前面两个1,分解就不说了,直接后面那个7分解,从7后面那个位置开始加1,知道加到第14个数,还剩余三个,从第一个加到第三个,刚好用完,结果是1 2 2 0 0 0 0 0 0 0 1 1 1 1。偶数加起来为4就是最大答案。前面的最多为2,所以取4.
题解:暴力 注意细节,卡细节很久。因为只有十四个数,我们遍历每个数都来分解,按照题目规则加到其他数上,然后把偶数加起来,输出最大的那个ans。
#include<bits/stdc++.h>
using namespace std;
long long a[20],b[20],ans;
int main()
{
for(int i=0; i<14; i++)
cin>>a[i];
for(int i=0; i<14; i++)
{
if(a[i])
{
long long cnt=0;
for(int k=0; k<14; k++)
b[k]=a[k];
b[i]=0;
long long x=a[i]%14,y=a[i]/14;
long long m=x;
for(int k=i+1; k<14&&m; k++,m--)
b[k]++;
for(int k=0; k<m; k++)
b[k]++;
for(int k=0; k<14; k++)
b[k]+=y;
// for(int k=0;k<14;k++)
// cout<<b[k];
cout<<endl;
for(int k=0; k<14; k++)
if(b[k]%2==0)
cnt+=b[k];
ans=max(ans,cnt);
}
}
cout<<ans;
return 0;
}
推荐阅读
-
Codeforces Round #649 (Div. 2)-B. Most socially-distanced subsequence(思维)
-
Codeforces Round #650 (Div. 3) B. Even Array
-
Codeforces Round #461 (Div. 2) B. Magic Forest(异或的性质)
-
B. Parity Alternated Deletions
-
B. 网格(dp / 二维偏序问题) (智算之道复赛高校组)
-
#643(Div.2)B. Young Explorers 题解
-
Codeforces Round 604 B. Beautiful Numbers
-
[几何] Codeforces 772B VK Cup 2017 - Round 2 B. Volatile Kite
-
B. Applejack and Storages(模拟)
-
2020第十一届蓝桥杯省赛B组第一场 B.纪念日