当前位置: 代码迷 >> 综合 >> 2016 四川省赛 E. Coins 找规律 .
  详细解决方案

2016 四川省赛 E. Coins 找规律 .

热度:105   发布时间:2023-09-23 06:11:52.0

题目地址:https://acm.bnu.edu.cn/v3/contest_show.php?cid=8521#problem/E

一开始以为是DP.....

然而就是找规律

先从a1的数量(因为是1,好分类)开始分类

1)a1>=2时,1~(a1+2*a2+3*a3)的东西都可以买,所以有a1+2*a2+3*a3个

2)a1==1时,

a2>=1时,1~(a1+2*a2+3*a3)的东西都可以买,所以有a1+2*a2+3*a3个

a2==0时,a3自己组合有a3种,a1和a3组合不会有重复,所以有a3种,再加上a1的一种,所以一共a1+2*a3种

3)a1==0时,

a2==0时,就是a3的数量了

a2==1时,a3自己组合有a3种,a2和a3组合不会有重复,所以有a3种,再加上a2的一种,所以一共a2+2*a3种

a2>=2时,

a3==0时,就是a2的数量

a3!=0时,存在重复的,就是3*a3+2*a2-2


#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long LL;
LL solve(LL a1,LL a2,LL a3)
{if (a1>=2)	return a1+2*a2+3*a3;//1~(a1+2*a2+3*a3)else if (a1==1){if(a2>=1) return a1+2*a2+3*a3;else return 1+2*a3;}else //a1==0;{if(a2==0) return a3;else if(a2==1) return a2+2*a3;else{if(a3==0) return a2;else return 3*a3+2*a2-2;}}
}
int main(int argc, char const *argv[])
{LL a1,a2,a3;cin>>a1>>a2>>a3;cout<<solve(a1,a2,a3);return 0;
}