第四天。

动态规划专题,讲师:闫神

讲了一些DP优化技巧,然而思想难度好大啊……根本没想到能优化那地步,连DP方程都没有呢。

不过有几题我还是想明白了。

讲了单调队列,决策单调性,四边形不等式,斜率优化,甚至有DP套DP,然而就是双重DP,什么背包+数位罢了。

轮廓线DP,插头DP都有点难写啊……不过也是状压DP的一大内容 。还有概率DP,期望DP,非常恐怖。


中午划水。


下午的题比较良心。T1不知道写了什么写挂了,T2就很好AC,T3毒瘤题。

【T1】

题面:m个青蛙,它们可以跳无限远,但是第i只青蛙每一次跳比d长时,要花费ci。

河面上,有n+2个石头,起点终点2个,中间n个。中间的石头只能被跳到1次,并且一定要被跳到1次。

问所有青蛙过河最小花费。

题解:二分多少只青蛙可以不花费任何代价过河,那么其他的青蛙就直接飞过河,代价就是最小的那么多个代价的和。

如何check?显然每次我们让最左边的青蛙跳到右边第一个没有跳过的石头上,如果有代价就挂了,一直到终点都没有代价就好了。

特判一只都不行的情况,显然所有青蛙都飞过去,除了最小代价的,那只青蛙一个一个跳。

#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,k,d,maxz;
int a[100005];
long long c[100005];
bool check(int x){
for(int i=0;i<=k-x+1;++i)
if(a[i+x]-a[i]>d) return 0;
return 1;
}
int main(){
freopen("frog.in","r",stdin);
freopen("frog.out","w",stdout);
int T; scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&n,&m,&k,&d); maxz=0;
for(int i=1;i<=m;++i) scanf("%lld",c+i);
for(int i=1;i<=k;++i) scanf("%d",a+i);
if(d>=n-1) {puts("0"); continue;}
sort(c+1,c+m+1); sort(a+1,a+k+1); a[0]=1; a[k+1]=n;
for(int i=1;i<=m;++i) c[i]+=c[i-1];
int l=0,r=min(m,k),mid,ans=-1;
while(mid=l+r>>1,l<=r)
check(mid)?l=mid+1,ans=mid:r=mid-1;
if(ans==0){
long long sum=c[m]-c[1];
for(int i=1;i<=k+1;++i) if(a[i]-a[i-1]>d) sum+=c[1];
printf("%lld\n",sum);
}
else printf("%lld\n",c[m-ans]);
}
return 0;
}

【T2】

题面:定义一个字符串的价值为:长度^2/最短循环节长度。给定一个只有a,b,c的字符串,求出它子序列中价值的最大值。

题解:重定义价值=长度*循环节最大循环次数。那么对于长度为4的任意串,根据抽屉原理,必有一个字符出现2次,那么价值为2*2=原来的价值4,也就是说,长度为4的任意串不会更优。

以此类推,我们知道长度为7或更长的都不会更优,长度为5和6的只有一些(相比其中更短的)会更优。

总计不超过102种,于是每一种都check一下,就得到答案。

我的代码循环展开了,太TM长了,327行,就不贴了。

最新文章

  1. 探索C#之6.0语法糖剖析
  2. android 加载中、无网络、无数据、出错 四种状态的代码封装
  3. TextFieldDelegate
  4. 自定义样式的select下拉框深入探索
  5. Android Studio-设置快速修复错误提示代码
  6. Linux用户与“最小权限”原则
  7. poj 3094 Quicksum
  8. Tomcat配置JNDI数据源
  9. html锚点
  10. JAVA之Exchanger
  11. c语言第四次作业e
  12. SPOJ 8093 JZPGYZ - Sevenk Love Oimaster
  13. 跟我一步一步写出MongoDB Web 可视化工具(一)
  14. linux 共享内存的理解
  15. java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况
  16. 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败
  17. python 游戏(船只寻宝)
  18. django之创建第3个项目:编写第一个模板文件
  19. 最新Java校招面试题及答案
  20. [需要补充]javaEE中servlet方法service与doXXX的关系

热门文章

  1. bzoj2095-Bridge
  2. Js数组和字符串常用方法
  3. Cryptography Reloaded UVALive - 4353(BigInteger)
  4. 【BZOJ4247】挂饰(动态规划)
  5. Service Intent must be explicit的解决方法
  6. python之旅:并发编程之多线程
  7. MVC 中@Html.DropDownListFor() 设置选中项 这么不好使 ? [问题点数:40分,结帖人lkf181]
  8. RabbitMQ 运转流程
  9. containerdns配置说明
  10. 用Anaconda安装本地python包