#include #include int getMaxSum(int *array, int beginPos, int endPos, int *dpArray) {    int MaxBegin = beginPos;    int MaxEnd = beginPos;    int curMax = array[beginPos];    int curMax
原创 2023-05-23 15:58:57
39阅读
#include <iostream> //参照 POJ 2479using namespace std;#define MAX 100001int list[MAX],left_sum[MAX],right_sum[MAX]; //要声明为全局变量,如果在主函数内声明,会产生堆栈溢出int main(){ int n,i; while(scanf("%d",&n)&&n) { for(i=1;i<=n;i++) scanf("%d",&list[i]); left_sum[1]=list[1]; for
转载 2011-07-18 11:42:00
44阅读
2评论
poj2479同一类型#include #include #define num
原创 2022-08-05 10:34:44
119阅读
Max Sequence Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16850 Accepted: 7054 Description Give you N integers a1, a2 ... aN (|ai| <=100
原创 2021-07-21 16:25:43
74阅读
POJ上的重题还真多Program P2593;var n,i,j,m,m2,p:longint; a,b,c:array[0..100000] of longint;begin read(n); a[0]:=-100001; while (n>0) do begin j:=0; m:=0; for i:=1
c
im
原创 2012-08-06 11:06:02
56阅读
http://poj.org/problem?id=2593 /*  Description:  思想:对于数据a[],从左向右依次求解以a[i]结尾的最大子段和b[i],   然后变b[i]为a[i]左边(包括a[i])的最大字段和。  然后,从右向左遍历,求a[i]右边(包括a[i])的最大子段和sum,输出sum+b[i-1]的  最大值
原创 2012-04-16 11:42:37
898阅读
和前一道题一样,,只改一点点就OK#include#include#include#includeusing >>t; int go[
原创 2023-07-27 18:43:21
25阅读
转载请注明出处:://blog.csdn.net/u012860063?viewmode=contents题目链接:id=2593">://poj.org/problem?id=2593-------------------------------------------------...
转载 2015-07-07 17:02:00
64阅读
2评论
题目:https://www.luogu.org/problemnew/show/P2593 DP的话,考虑到当前这一位只跟前两位有关,所以记录一下这3位的状态就行; 于是一开始记录的第 i 位,i-1 位的数量,i-2 位的数量,是否有过对子,然后可行性DP; 但是写得太丑,又WA又T... #i
转载 2018-07-26 09:46:00
58阅读
2评论
自己dp还是太弱了啊自己dp还是太弱了啊自己dp还是太弱了啊~ 这题的关键在于转换模型,设计状态 Ⅰ.由于以某个数字开始可以选择连续的三个数\color{Red}Ⅰ.由于以某个数字开始可以选择连续的三个数Ⅰ.由于
原创 2022-02-11 10:24:38
10阅读
设f[i][j][k][0/1]表示选到i时,i 1选j张,i选k张,之前选的所有牌是否选择了对子 然后分情况讨论转移即可
转载 2018-09-23 21:38:00
57阅读
自己dp还是太弱了啊自己dp还是太弱了啊自己dp还是太弱了啊~这题的关键在于转换模型,设计状态Ⅰ.由于以某个数字开始可以选择连续的三个数\color{Red}Ⅰ.由于以某个数字开始可以选择连续的三个数Ⅰ.由于以某个数字开始可以选择连续的三个数Ⅱ.单独以某个数字使用三次\color{Red}Ⅱ.单独以某个数字使用三次Ⅱ.单独以某个数字使用三次Ⅲ.单独以某个数字使用四次\color{Red}Ⅲ.单独以某个数字使用四次Ⅲ.单独以某个数字使用四次那么设dp[i][j][k]为以i之前的数字全部用完那么设d
原创 2021-08-26 16:05:26
36阅读
题目:https://www.luogu.org/problemnew/show/P2593 发现三个连续牌的影响范围只有3、相同牌的影响范围只有1之后就可以dp了。 O(100^7)T飞。 #include<iostream> #include<cstdio> #include<cstring>
转载 2018-07-26 11:37:00
56阅读
给你一个数组 nums ,它包含若干正整数。一开始分数 score = 0 ,请你按照下面算法求出最后分数:从数组中选择最小且没有被标记的整数
原创 2023-04-22 01:02:43
10000+阅读
Common SubsequenceTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 34477Accepted: 13631DescriptionA subsequence of a gi
原创 2022-03-04 17:37:50
136阅读
刷了这两道枚举的题。用的都是bfs。1753这道题用到二进制的压缩方法。不管我感觉不压缩也不会超时什么的。其次的方法就是中规中矩的bfs。2965中。除了bfs,换
原创 2022-08-05 16:00:15
61阅读
这里介绍怎么求k短路 A*搜索 估价函数f[i]=g[i]+h[i]; 在这里g[i]表示到达点i当前路径长,h[i]表示点i到达终点的最短距离 在搜索中,每次都取队列估价函数值最小的点,然后把它所能到达的点更新进入队列 显然这需要一个优先队列来维护(heap) 当终点第k次出队时,当前路径长度就是k短路 1 const max=1000000000; 2 type link=^nod
转载 2014-03-02 11:02:00
137阅读
2评论
...
转载 2013-12-25 21:13:00
181阅读
2评论
二分匹配的灵活运用 3041还是比较好想的,考虑到横排/竖排射一枪就能搞定这一行/一列的所有点, 我们以行数为点集x,列数为点集y,在目标点(xi,yi)之间连一条边 这样最小射击次数=最小点覆盖(边两端点至少有一个点在覆盖集中)=最大匹配 poj2226是它的加强版 这里一块木板不能覆盖非泥泞点,也就是说一块木板不一定能搞定那一行所有的点 于是我们考虑到将连续的泥泞点标号,表示这些泥泞点是由哪个
转载 2014-03-25 21:43:00
143阅读
2评论
两道很不错的dp 3186很神似回文词,合并石子之类的问题; 一开始不知道怎么在dp方程中体现权值天数,很来才想起来 对于一段区间[i,j],里面的东西必然是要卖完的 又因为只能从两头开始卖,所以 dp[i,j]=max(dp[i+1,j],dp[i,j-1])+sum[i,j]; 这样就体现出先后卖的差别; 最后答案很显然是dp[1,n]; 而poj3267,dp方程不好讲,直接上代码;
转载 2014-01-21 22:56:00
198阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5