2593 今天我D了个P

第一次AC了一道有点难度的题

 

好好写一回解题报告

 

Max Sequence
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 8026 Accepted: 3230

Description

Give you N integers a1, a2 ... aN (|ai| <=1000, 1 <= i <= N).

You should output S.

Input

The input will consist of several test cases. For each test case, one integer N (2 <= N <= 100000) is given in the first line. Second line contains N integers. The input is terminated by a single line with N = 0.

Output

For each test of the input, print a line containing S.

Sample Input

5
-5 9 -5 11 20
0

Sample Output

40

Source

POJ Monthly--2005.08.28,Li Haoyuan
此题要求一个已知整数序列中两个子序列和的最大值
和2479如出一辙 数据量有所变化 因此要在堆上用new来分配数组了
研究了两天的DP,翻来覆去终于有了点头绪。
所谓DP,只是一种思想,不要去找所谓的万能公式。
一个大问题的最优解,如果可以用小问题的最优解通过一个条件式表达出来(DP公式),就可以用DP的思想进行解决。
具体怎么说呢,还是多做些题体会吧。
代码:
关于这道题中的求最大和子序列的问题
今天又看了另一位的代码 觉得他的代码能非常好地体现解题思想,遂转来
就和我以前说的一样(在哪说的忘记了)。。
用b来记录一定要将子序列延续到当前位置(也就是序列头浮动,序列尾固定),也就是一定要将序列继续下去的话,当前位置和其之前的序列一共可以给最大和贡献多少。
而我认为 dp也是体现在这里的。这才是dp函数。
----- pid 4499 at 2025-08-13 17:47:06.412954464+0530 ----- Cmd line: com.android.vending Build fingerprint: 'realme/RMX3944IN/RE6083L1:16/BP2A.250605.015/V.R4T2.51a3565-32a1269-32b6971:user/release-keys' ABI: 'arm64' Build type: optimized Debug Store: 3,12,47262::ID:5,C:E,T:46657||ID:5,C:S,T:46656,N:SvcBind,D:rebind=false;act=com.google.android.play.core.splitinstall.BIND_SPLIT_INSTALL_SERVICE;cmp=null;pkg=com.android.vending||ID:4,C:E,T:46656||ID:4,C:S,T:46651,N:SvcCreate,D:name=com.google.android.finsky.splitinstallservice.SplitInstallService;pkg=com.android.vending||ID:3,C:E,T:46648||ID:0,C:P,T:46644,N:GoAsync,D:tname=main;tid=2;prid=db935f9||ID:3,C:S,T:46636,N:BcRcv,D:tname=main;tid=2;act=android.intent.action.SIM_STATE_CHANGED;cmp=ComponentInfo{com.android.vending/com.google.android.finsky.simhandler.SimStateReceiver};pkg=null;prid=db935f9||ID:0,C:P,T:45285,N:LooperMsg,D:code=110;trgt=android.app.ActivityThread$H;elapsed=3108||ID:1,C:E,T:45285||ID:2,C:E,T:42999||ID:2,C:S,T:42999,N:SchRcv,D:tname=binder:4499_1;tid=46||ID:1,C:S,T:42177,N:BindApp;; suspend all histogram: Sum: 126us 99% C.I. 3us-36us Avg: 12.600us Max: 36us DALVIK THREADS (95): "main" prio=5 tid=1 Blocked | group="main" sCount=1 ucsCount=0 flags=1 obj=0x74c44f88 self=0xb400007dd64d3000 | sysTid=4499 nice=-10 cgrp=top-app sched=0/0 handle=0x7e88f5b098 | state=S schedstat=( 272241226 31277003 547 ) utm=15 stm=11 core=6 HZ=100 | stack=0x7fed25c000-0x7fed25e000 stackSize=8188KB | held mutexes= at mzx.d(PG:56) - waiting to lock <0x06a417dc> (a java.util.HashMap) held by thread 19 at mzx.c(PG:2) at abth.b(PG:17) at absz.F(PG:61) at zzzi.T(PG:133) at absz.T(PG:111) at odd.run(PG:937) at android.os.Handler.handleCallback(Handler.java:1027) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loopOnce(Looper.java:298) at android.os.Looper.loop(Looper.java:408) at android.app.ActivityThread.main(ActivityThread.java:9952) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:613) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074) DumpLatencyMs: 3.44646 "BlockingExecutor #2" prio=5 tid=21 Blocked | group="main" sCount=1 ucsCount=0 flags=1 obj=0x21888c0 self=0xb400007d97a5c800 | sysTid=4790 nice=1 cgrp=top-app sched=0/0 handle=0x7d2100b500 | state=S schedstat=( 29830921 213154771 67 ) utm=1 stm=1 core=5 HZ=100 | stack=0x7d20f08000-0x7d20f0a000 stackSize=1037KB | held mutexes= at android.app.ActivityThread.acquireProvider(ActivityThread.java:9008) - waiting to lock <0x084574a4> (a android.app.ActivityThread$ProviderKey) held by thread 19 at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:3990) at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:2593) at android.content.ContentResolver.acquireUnstableContentProviderClient(ContentResolver.java:2705) at axki.c(PG:7) at axsf.a(PG:3) at bcjb.b(PG:3) at bciy.a(PG:7) at agix.a(PG:154) at agjp.b(PG:89) - locked <0x077b0747> (a agjp) at oax.run(PG:348) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651) at bfyl.run(PG:59) at java.lang.Thread.run(Thread.java:1119) DumpLatencyMs: 290.931
最新发布
08-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值