zoukankan      html  css  js  c++  java
  • Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)

    time limit per test

    2 seconds

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    Mishka is trying really hard to avoid being kicked out of the university. In particular, he was doing absolutely nothing for the whole semester, miraculously passed some exams so that just one is left.

    There were nn classes of that subject during the semester and on ii-th class professor mentioned some non-negative integer aiai to the students. It turned out, the exam was to tell the whole sequence back to the professor.

    Sounds easy enough for those who attended every class, doesn't it?

    Obviously Mishka didn't attend any classes. However, professor left some clues on the values of aa to help out students like Mishka:

    • aa was sorted in non-decreasing order (a1≤a2≤⋯≤ana1≤a2≤⋯≤an);
    • nn was even;
    • the following sequence bb, consisting of n2n2 elements, was formed and given out to students: bi=ai+an−i+1bi=ai+an−i+1.

    Professor also mentioned that any sequence aa, which produces sequence bb with the presented technique, will be acceptable.

    Help Mishka to pass that last exam. Restore any sorted sequence aa of non-negative integers, which produces sequence bb with the presented technique. It is guaranteed that there exists at least one correct sequence aa, which produces the given sequence bb.

    Input

    The first line contains a single integer nn (2≤n≤2⋅1052≤n≤2⋅105) — the length of sequence aa. nn is always even.

    The second line contains n2n2 integers b1,b2,…,bn2b1,b2,…,bn2 (0≤bi≤10180≤bi≤1018) — sequence bb, where bi=ai+an−i+1bi=ai+an−i+1.

    It is guaranteed that there exists at least one correct sequence aa, which produces the given sequence bb.

    Output

    Print nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤10180≤ai≤1018) in a single line.

    a1≤a2≤⋯≤ana1≤a2≤⋯≤an should be satisfied.

    bi=ai+an−i+1bi=ai+an−i+1 should be satisfied for all valid ii.

    Examples

    input

    Copy

    4
    5 6
    

    output

    Copy

    2 3 3 3
    

    input

    Copy

    6
    2 1 2
    

    output

    Copy

    0 0 1 1 1 2 

    题解:

    题目大意是说b[i]=a[i]+a[n-i]的值,并且要保证是递增的,我们可以想,让左边的尽可能小,并且比右边的小,我们就可以去他左边的和右边较小的最大值即可,需要注意的是数据范围是 long long int型的

    代码:

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    
    using namespace std;
    
    int main()
    {
    	int n;
    	cin>>n;
    	long long int k;
    	long long int a[200005];
    	for(int t=0;t<n/2;t++)
    	{
    		cin>>k;
    		if(t==0)
    		{
    			a[0]=0;
    			a[n-1]=k;
    		}
    		else
    		{
    			a[t]=max(a[t-1],min(a[n-t],k-a[n-t]));
    			a[n-1-t]=k-a[t];
    		}
    	}
    	for(int t=0;t<n;t++)
    	{
    		cout<<a[t]<<" ";
    	}
    	
    	
    	return 0;
    }
  • 相关阅读:
    秦曾昌人工智能课程---6、Decision Tree Learning
    秦曾昌人工智能课程---5、KNN和朴素贝叶斯
    秦曾昌人工智能课程---4、梯度下降算法
    我和最小二乘法的二三事
    英语影视台词---The Professor
    秦曾昌人工智能课程---3、机器学习中的哲学
    python从入门到大神---1、初始化实例、类属性、方法
    秒懂神经网络---震惊!!!神经网络原来可以这么简单!
    秦曾昌人工智能课程---2、机器学习中的数学基础2
    linuxc_螺纹锁紧pthread_mutex_t
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781918.html
Copyright © 2011-2022 走看看