zoukankan      html  css  js  c++  java
  • 【模拟】D. Alice, Bob and Candies

    Codeforces Round 640 (Div. 4)
    D. Alice, Bob and Candies

    题意:两个人轮流吃数组,一个从左端开始(第一次只吃a[1]),另一个从右端开始,吃掉的元素和必须严格大于上一个人吃掉的元素和,数组全吃完时结束。输出回合数以及两人分别吃掉了多少。

    思路:模拟

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int a[8000];
    int main()
    {
    	int t;
    	cin >> t;
    	while (t--) {
    		int n;
    		cin >> n;
    		for (int i = 1; i <= n; i++) cin >> a[i];
    		int num = n;
    		int R = 1;//标记玩家
    		int last=a[1]-1;//第一轮只吃a[1]
    		int left = 0, right = n + 1;
    		int A = 0, B = 0, move = 0;
    		while (num>0) {//num表示还能吃的元素个数
    			move++;
    			int sum = 0;
    			//一个一个吃,只要sum还没超过last就继续吃
    			if (R == 1) {
    				while (sum<=last&&num>0) {
    					num--;
    					sum += a[++left];
    				}
    				A += sum;//记录A吃掉的总积分
    			}
    			else {
    				while (sum <= last && num > 0) {
    					num--;
    					sum += a[--right];
    				}
    				B += sum;//记录B吃掉的总积分
    			}
    			last = sum;//记录这吃掉的积分
    			R = 1 - R;//换人
    		}
    		cout << move << " " << A << " " << B << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    2072=删数问题
    2872=M--二分查找
    4165=全排列问题
    2805=大家快来A水题
    4148=1.1联结词真值运算
    2748=第X大的数
    3479=青蛙过河
    1200=汉诺塔
    Leetcode92_反转链表II
    Leetcode206_反转链表
  • 原文地址:https://www.cnblogs.com/streamazure/p/12865242.html
Copyright © 2011-2022 走看看