洛谷p3800:Power收集
Posted a799091501
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷p3800:Power收集相关的知识,希望对你有一定的参考价值。
考虑朴素的dp:
对于每一行的每一个点 枚举能到的所有点(类似bzoj1648 比这题简单的dp)
期望时间复杂度O(NMT)
显然是超时做法
那么我们发现只有k个点对答案有贡献 考虑对每一个有权值的点以x为关键字排序
容易看出 对于每个点前面的所有点,只要有abs(yi-yj)<=t*abs(xi-xj)
那么就可以从j转移到i
扫一遍即可 期望复杂度O(K2)
--------------其实和打鼹鼠差不多的题,只是自己打的时候想的是usaco的那道...我真是弱不可言orz-----------------
#pragma GCC optimize("O2") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<set> #include<map> #include<limits.h> #include<ctime> #define N 100001 typedef long long ll; const int inf=0x3fffffff; const int maxn=4017; using namespace std; inline int read() { int f=1,x=0;char ch=getchar(); while(ch>\'9\'|ch<\'0\') { if(ch==\'-\') f=-1; ch=getchar(); } while(ch<=\'9\'&&ch>=\'0\') { x=(x<<3)+(x<<1)+ch-\'0\'; ch=getchar(); } return f*x; } struct tsdl{ int x,y,w,dp; }a[N]; bool cmp(tsdl a,tsdl b) { return a.x<=b.x; } int main() { int n=read(),m=read(),k=read(),t=read(); for(int i=1;i<=k;i++) { a[i].x=read(),a[i].y=read(),a[i].w=read(); } sort(a+1,a+n+1,cmp); a[1].dp=a[1] for(int i=1;i<=k;i++) { for(int j=1;j<i;j++) { if(abs(a[i].y-a[j].y)<=t*abs(a[i].x-a[j].x)) a[i].dp=max(a[i].dp,a[j].dp+a[i].w); } } int ans=0; for(int i=1;i<=k;i++) { ans=max(ans,a[i].dp); } cout<<ans; }
以上是关于洛谷p3800:Power收集的主要内容,如果未能解决你的问题,请参考以下文章
洛谷 P2908 [USACO08OPEN]文字的力量Word Power
[异常解决] Keil安装好nRF51822开发环境,运行DEMO报错:Error:“GPIOTE_CONFIG_NUM_OF_LOW_POWER_ENVENTS” is undefined(代码片段
精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解