時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 524288k,其他語言1048576k
64bit io format: %lld
第一行輸入乙個整數n (1 ≤ n ≤ 40)第二行輸入n個整數
輸出乙個整數示例1
複製
2複製3 -1
4示例2
複製
3複製5 3 -1
2示例3
複製
3複製-1 0 40
0示例4
複製
11複製-1 40 -1 -1 -1 10 -1 -1 -1 21 -1
579347890
子任務1: n <= 10缺啥補啥子任務2: n <= 20
子任務3: 無限制
dp[i][j][flag][sum]處理完前i位,以j結尾,第flag個遞減數,和為sum
暴力~~~
本地跑樣例都有點慢,交上去竟然過了
#includeusing namespace std;
typedef long long ll;
const int mod=1e9+7;
ll dp[45][45][3][1605];
int a[45];
int main()
else dp[1][a[1]][1][a[1]]=1;
for(int i=2;i<=n;i++)
else }}
}} else
else }}
} } ll ans=0;
for(int j=0;j<=40;j++)
} printf("%lld\n",ans);
return 0;
}
暴力 分治 貪心 DP 最大子串行和
給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6 暴力 暴力列舉所有可能的連續子陣列,演算法複雜度o n 3 演算法1 1 int maxsubs...
美麗序列(動態規劃)
第一行輸入乙個整數n 1 n 40 第二行輸入n個整數輸出乙個整數示例1 2 3 14示例2 5 3 1 2示例3 3 1 0 400示例4 11 1 40 1 1 1 10 1 1 1 21 1579347890子任務1 n 10 子任務2 n 20 子任務3 無限制 解題思路 按照動態規劃的一般...
序列合併(暴力 剪枝)
題目描述 有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。輸入第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.輸出僅一行,包含n個整數,從小到大輸出這n個最小的和...