hihocoder-Week200-Shorteniring Sequence
hihocoder-Week200-Shorteniring?Sequence
題目1 : Shortening Sequence
時間限制:10000ms 單點時限:1000ms 內存限制:256MB描述
There is an integer array A1, A2?...AN. Each round you may choose two adjacent integers. If their sum is an odd number, the two adjacent integers can be deleted.
Can you work out the minimum length of the final array after elaborate deletions?
輸入
The first line contains one integer N, indicating the length of the initial array.
The second line contains N integers, indicating A1, A2?...AN.
For 30% of the data:1 ≤ N ≤ 10
For 60% of the data:1 ≤ N ≤ 1000
For 100% of the data:1 ≤ N ≤ 1000000, 0 ≤ Ai?≤ 1000000000
輸出
One line with an integer indicating the minimum length of the final array.
樣例提示
(1,2) (3,4) (4,5) are deleted.
樣例輸入?
?
簡單的dp問題。
已知長度為n的數組刪除元素到最后,一定是兩種類型,全是偶數,or?全是奇數。
全是偶數,那么n+1位置添加進來一個奇數,則長度減一,否則加一。
?
找出這條規律,可以進行dp迭代操作。
?
?
?
#include <cstdio> #include <cstdlib> const int MAXN = 1000000 + 10; #define fabs(a) (a)>0?(a):(-a) int n, ans, num[MAXN], dp[MAXN]; int main(){freopen("in.txt", "r", stdin); while(scanf("%d", &n) != EOF){for(int i=0; i<n; ++i ){scanf("%d", &num[i]); } for(int i=0; i<n; ++i){if(i == 0){if(num[i] %2 == 0){dp[i] = 1; }else{dp[i] = -1; }}else{if(num[i]%2 == 0){dp[i] = dp[i-1] + 1; }else{dp[i] = dp[i-1] - 1; }}}ans = fabs( dp[n-1] ); printf("%d\n", ans );}return 0; }
轉載于:https://www.cnblogs.com/zhang-yd/p/8977063.html
總結
以上是生活随笔為你收集整理的hihocoder-Week200-Shorteniring Sequence的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用管道实现进程间通信
- 下一篇: MIGO 收货增强