codeforces 712A. Memory and Crow

题目链接:http://codeforces.com/problemset/problem/712/A

题目大意:

  给你一个数字系列,求其满足条件的一个序列。

  条件为:

    ai = bi - bi + 1 + bi + 2 - bi + 3....

解题思路:

    可先从后向前推,b[n]=a[n](1-n个数);

    b[i]=a[i]+b[i+1]-b[i+1]...

    然而,你可以发现b[i]=a[i]+a[i+1],一个a数组即可解决问题。

AC Code:

【切记暴力不好使,还是泪奔0.0,最近感觉智商被掏空】

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a[100002];
 4 int main()
 5 {
 6     int n,i;
 7     while(scanf("%d",&n)!=EOF)
 8     {
 9         for(i=1; i<=n; i++)
10             scanf("%d",&a[i]);
11         for(i=1; i<n; i++)
12         {
13             printf("%d ",a[i]+a[i+1]);
14         }
15         printf("%d\n",a[i]);
16     }
17     return 0;
18 }
时间: 2024-08-25 20:23:30

codeforces 712A. Memory and Crow的相关文章

Codeforces 309C Memory for Arrays 二进制模拟进位

题目链接:点击打开链接 题意: 给定n个箱子m个物品 下面n个数字表示箱子的容量 下面m个数字b1-bm 表示物品体积为2^bi大 问最多有多少个物品可以放入箱子. 思路: 贪心,先放小的,小的不能放再放大的 显然我们把n个箱子拆成二进制,然后模拟二进制减法运算. 剩下就是简单模拟 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<m

codeforces 712B. Memory and Trident

题目链接:http://codeforces.com/problemset/problem/712/B 题目大意: 给出一个字符串(由'U''D''L''R'),分别是向上.向下.向左.向右一个单位,问修改若干字符,可以回到原点.回不到原点输出 -1,可以则输出最少修改的步数. 解题思路: 如果是奇数步,则不可以回到原点 直接输出-1: 否则:分别统计出向各个方向的步数,求出 abs(U-D)+abs(L-R) 回不到原点多余的步数.然后让 剩余的步数/2 修改一处可以保证两个状态OK.(例如:

Codeforces 712C Memory and De-Evolution(逆向思维)

题目链接:http://codeforces.com/problemset/problem/712/C 题意:有一个长度为 x 的等边三角形,你每次可以选择一条边减少其长度,当然减少之后,三条边仍然可以组成一个三角形. 最后要使其变成程度为 y ,的等边三角形(x > y),问要作几次操作. 思路:贪心即可,可是重点是反着贪,长度为 y 的等边三角形,每次增加一条边的长度使其变成长度为 x 的等边三角形. 如果正着贪心,一条边太短的话,很影响其他边变短的过程,总次数也不一定是最优. 代码: #i

Codeforces 712C. Memory and De-Evolution

题目链接:http://codeforces.com/problemset/problem/712/C 题意: 给你两个值 a 和 b (a > b), 代表这里有两个等边三角形, 边长分别为 a 和 b, 你可以对边长为 a 的三角形进行变换, 每次变化你可以选择一条边, 并为其重新指定一个长度, 当然变换完成后还能组成一个三角形.问最少经过多少次变换可以把等边三角形的三边长度从 a 变换到 b. 思路: 题目中的意思时从大的三角形变换到小的三角形,这里可以换一种方式,即 “最少经过多少次变换

CodeForces 712B Memory and Trident (水题,暴力)

题意:给定一个序列表示飞机要向哪个方向飞一个单位,让你改最少的方向,使得回到原点. 析:一个很简单的题,把最后的位置记录一下,然后要改的就是横坐标和纵坐标绝对值之和的一半. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath>

CodeForces 712D Memory and Scores

#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<map> #include<set> #include<queue> #include&

[CodeForces - 712D]Memory and Scores (DP 或者 生成函数)

题目大意: 两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高.  (1 ≤ a, b ≤ 100, 1 ≤ k ≤ 1000, 1 ≤ t ≤ 100) 1.我一开始的想法是DP出玩i轮得分是j的方案数.然后状态数最多有t*(2*k*t)那么多,最坏情况下会有2e7那么多的状态,转移必须是O(1)的. dp[i][j]=sum(dp[i-1][j-k....j+k]

codeforces 712A. Memory and Crow

2019-05-18 08:48:27 加油,加油,坚持!!! 这道题我没有想出公式推导,只是按照模拟题来做,第5个样例超时 样例超时,方法错误 https://www.cnblogs.com/ECJTUACM-873284962/p/6375011.html AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll max_n = 1e5 + 5; ll a[max_n]; ll b[

ECJTUACM16 Winter vacation training #4 题解&amp;源码

https://vjudge.net/contest/149692#overview 这周一VJ比赛,题解&源码已完成! A......................................................................................... 题目链接→Codeforces Problem 712A Memory and Crow [题意]有n个数b1,?b2,?...,?bn a1,?a2,?...,?an是通过等式ai?=?bi?-