A. Stones

柔情只为你懂 2023-06-09 03:59 64阅读 0赞

A. Stones

题意:有三堆石头a b c,让你拿石头,问他最多能拿多少石头。

拿石头规则:1.从a堆拿1个,必须从b堆拿两个。
2.从b堆拿1个,必须从c堆拿两个。
可以无限重复规则1、2。

分为两步:
(1)首先把1进行到底,b堆减去1拿走的石头,在把2进行到底。
(2)首先把2进行到底,b堆减去2拿走的石头,再把1进行到底。

最后输出两步的最大值。

代码:

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstring>
  4. using namespace std;
  5. typedef long long ll;
  6. const int maxn=1e5+10;
  7. const int mod=1e9+7;
  8. pair<ll,ll> p[maxn];
  9. pair<ll,ll> q[maxn];
  10. ll a[500][500];
  11. int main()
  12. {
  13. ios::sync_with_stdio(false);
  14. ll n;
  15. while(cin>>n)
  16. {
  17. ll a,b,c;
  18. for(int i=0;i<n;i++)
  19. {
  20. ll sum1=0,sum2=0;
  21. cin>>a>>b>>c;
  22. ll num1=min(b,c/2);
  23. sum1+=3*num1;
  24. b-=num1;
  25. ll num2=min(a,b/2);
  26. sum1+=3*num2;
  27. ll num3=min(a,b/2);
  28. sum2=3*num3;
  29. b-=num3;
  30. ll num4=min(b,c/2);
  31. sum2+=3*num4;
  32. cout<<max(max(sum1,sum2),(ll)0)<<endl;
  33. }
  34. }
  35. return 0;
  36. }

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读

    相关 A. Stones

    [A. Stones][] 题意:有三堆石头a b c,让你拿石头,问他最多能拿多少石头。 拿石头规则:1.从a堆拿1个,必须从b堆拿两个。 2.从b堆拿1个,必须从c

    相关 HDU_2580 A simple stone game

    刚开始看这一题时,就知道这根本不是一道简单题(对当时没学K倍动态减法的我来说),因为前几天刚做完一道斐波那契额数列的博弈而且它仅仅是这道题k=2的一个特例而已-\_-|||。