得分250。。我真是个250。。。

犯了一些很搞笑的错。。

f[i][j][k]表示第i个苹果,现在在j这个位置,还能用k次转移。

用i去更新i+1。

时间复杂度1000*2*30;

转移方程有个地方减一写错位了。。这么明显的错竟然没有看见。。50分TAT

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std; const int N=,M=;
int n,K,f[N][][M],t[N]; int maxx(int x,int y){return x>y ? x:y;}
void g(int &x,int y){x=maxx(x,y);} int main()
{
// freopen("a.in","r",stdin);
freopen("bcatch.in","r",stdin);
freopen("bcatch.out","w",stdout);
scanf("%d%d",&n,&K);
for(int i=;i<=n;i++) scanf("%d",&t[i]),t[i]--;
memset(f,-,sizeof(f));
f[][][K]=;
for(int i=;i<n;i++)
{
int now=t[i+];
for(int k=;k<=K;k++)
{
g(f[i+][now][k],f[i][now][k]+);
if(k>=) g(f[i+][now][k-],f[i][-now][k]+);
g(f[i+][-now][k],f[i][-now][k]);
if(k>=) g(f[i+][-now][k-],f[i][-now][k]);
}
}
int ans=;
for(int k=;k<=K;k++) ans=maxx(ans,maxx(f[n][][k],f[n][][k]));
printf("%d\n",ans);
return ;
}

T1

f[i][j]表示当前时间为i,能力值为j时的最大滑雪次数。

预处理:给课程先排一次序;p[i]表示能力值为i时滑一次雪最少要多久。

然后就是要不去上课;要不去滑雪。

时间复杂度10^4*100。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
struct node{
int c,d;
}a[N];
struct nod{
int m,l,A;
}b[N];
int n,s,t,p[N],f[][],mx[N]; // bool cmp1(node x,node y)
// {
// if(x.c==y.c) return x.d<y.d;
// return x.c<y.c;
// } bool cmp2(nod x,nod y){return x.m<y.m;}
int maxx(int x,int y){return x>y ? x:y;}
int minn(int x,int y){return x<y ? x:y;}
void g(int &x,int y){x=maxx(x,y);} int main()
{
// freopen("a.in","r",stdin);
freopen("ski.in","r",stdin);
freopen("ski.out","w",stdout);
scanf("%d%d%d",&t,&s,&n);
memset(p,,sizeof(p));
for(int i=;i<=s;i++)
{
scanf("%d%d%d",&b[i].m,&b[i].l,&b[i].A);
}
for(int i=;i<=n;i++)
{
scanf("%d%d",&a[i].c,&a[i].d);
p[a[i].c]=minn(p[a[i].c],a[i].d);
}
for(int i=;i<=;i++) p[i]=minn(p[i],p[i-]);
// sort(a+1,a+1+n,cmp1);
sort(b+,b++s,cmp2);
b[s+].m=;
int ind=,ans=;
memset(f,-,sizeof(f));
memset(mx,-,sizeof(mx));
f[][]=;
for(int i=;i<=t;i++)
for(int j=;j<=;j++)
{
g(f[i][j],mx[j]);
while(b[ind].m<i && ind<=s) ind++;
if(b[ind].m==i) g(f[i+b[ind].l][b[ind].A],f[i][j]);
g(f[i+p[j]][j],f[i][j]+);
g(mx[j],f[i][j]);
if(i==t) ans=maxx(ans,f[i][j]);
}
printf("%d\n",ans);
return ;
}

T2

这题是我被卡住的一题。。因为我一直在想它为了达到后面的限制,前面可能要特意往下走一点。。

一出来发现自己好搞笑。。

首先我们从后往前预处理一遍,s[i]=minn(s[i],s[i+1]+dis(i~i+1)),这样就保证了满足当前的限制,以后的限制就一定有办法达到!

然后就是一个贪心了。

对于当前的v,下一个限制s[i+1],它们之间的速度差k=s[i+1]-v,距离d=dis(i~i+1)

设加速x秒,减速y秒。

x+y=d

x - y=k

所以最高速度x=(d+k)/2;

ans取max。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int N=;
int l,n,pl,t[N],s[N];
struct node{
int t,s;
}a[N]; bool cmp(node x,node y){return x.t<y.t;}
int maxx(int x,int y){return x>y ? x:y;}
int minn(int x,int y){return x<y ? x:y;} int main()
{
// freopen("a.in","r",stdin);
freopen("bobsled.in","r",stdin);
freopen("bobsled.out","w",stdout);
scanf("%d%d",&l,&n);
pl=;t[]=;
for(int i=;i<=n;i++) scanf("%d%d",&a[i].t,&a[i].s);
sort(a+,a++n,cmp);
for(int i=n;i>=;i--)
{
int d=a[i].t-a[i-].t;
a[i-].s=minn(a[i-].s,a[i].s+d);
}
int v=,ans=;
for(int i=;i<=n;i++)
{
int d=a[i].t-a[i-].t;
if(v+d<=a[i].s) v=v+d,ans=maxx(ans,v);
else
{
int k=a[i].s-v;
ans=maxx(ans,v+(d+k)/);
v=a[i].s;
}
// printf("v = %d\n",v);
}
ans=maxx(ans,v+l-a[n].t);
printf("%d\n",ans);
return ;
}

T3

f[i][j]表示当前扫到第i只奶牛,余数是j。

转移方程就直接看把。。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int N=,M=,Mod=(int)1e8;
int n,m,f[N][M],a[N]; int maxx(int x,int y){return x>y ? x:y;}
void g(int &x,int y){x=(x+y)%Mod;} int main()
{
// freopen("a.in","r",stdin);
freopen("fristeam.in","r",stdin);
freopen("fristeam.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
memset(f,,sizeof(f));
f[][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
g(f[i+][(j+a[i+])%m],f[i][j]);
g(f[i+][j],f[i][j]);
// printf("f [ %d ] [ %d ] = %d\n",i,j,f[i][j]);
}
}
printf("%d\n",f[n][]-);
return ;
}

T4

【2016-09-27-DP小练】的更多相关文章

  1. 数位dp小练

    最近刷题的同时还得填填坑,说来你们也不信,我还不会数位dp. 照例推几篇博客: 数位DP讲解 数位dp 的简单入门 这两篇博客讲的都很好,不过代码推荐记搜的形式,不仅易于理解,还短. 数位dp的式子一 ...

  2. 【树形dp小练】HDU1520 HDU2196 HDU1561 HDU3534

    [树形dp]就是在树上做的一些dp之类的递推,由于一般须要递归处理.因此平庸情况的处理可能须要理清思路.昨晚開始切了4题,作为入门训练.题目都很easy.可是似乎做起来都还口以- hdu1520 An ...

  3. 2016/09/27 Hadoop Yarn

    1.1 YARN基本架构     YARN是Hadoop2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceMana ...

  4. 2016年中国微信小程序专题研究报告

    2016年12月29日,全球领先的移动互联网第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)权威首发<2016年中国微信小程序专题研究报告>. 报告显示,82.6%手机 ...

  5. 2016.09.14,英语,《Using English at Work》全书笔记

    半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...

  6. js 计时器小练-20160601

    今天要做一个计时器小练,所以我就做了练习,代码如下. // 初始化时间,以及定义全局量去接收计时器 var timer = 0; var t; var h, min, sec, millisec; / ...

  7. 10-19 dp专练

    dp专练,终于克服了一次自己对dp的恐惧,磕出来一道题. 得分情况: T1:0 T2:0 T3:0 emmmm,磕出来的题是T2,但是因为初始化和int long long的原因爆零了 T1:n只狼排 ...

  8. Django 09 博客小案例

    Django 09 博客小案例 urls.py from django.urls import path from . import views urlpatterns = [ path('index ...

  9. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

  10. 算法小练#1 - Dany Yang

    开始记录每周做过的算法题,这是第一周,新的开始 1021. 删除最外层的括号 题目要求如下: 有效括号字符串为空 ("")."(" + A + ")& ...

随机推荐

  1. 58HouseSearch项目迁移到asp.net core

    前言 58HouseSearch这个项目原本是基于ASP.NET MVC 4写的,开发环境是Windows+VS2015,发布平台是linux+mono+jexus,这样看来整个项目基本已经满足跨平台 ...

  2. 小议Android多进程以致Application多次初始化

    最近遇到一个bug,当应用加了多进程后,比如总共进程数为N,会出现在`startService()`时`onStartCommand()`方法会被重复调用`(N-1)`次的奇怪现象. ***## 祸起 ...

  3. linux中wget 、apt-get、yum rpm区别

    wget 类似于迅雷,是一种下载工具, 通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理名字是World Wide Web”与“get”的结合. yum: 是r ...

  4. HDU 3698 Let the light guide us(DP+线段树)(2010 Asia Fuzhou Regional Contest)

    Description Plain of despair was once an ancient battlefield where those brave spirits had rested in ...

  5. ubuntu 14.04 安装opencv 3.0 测试

    安装opencv 前面步骤参考 http://my.oschina.net/u/1757926/blog/293976 主要修改测试代码 1. 先从sourceforge上下载OpenCV的源码 2. ...

  6. 软件工程项目组Z.XML会议记录 2013/11/27

    软件工程项目组Z.XML会议记录 [例会时间]2013年11月27日星期三21:00-22:00 [例会形式]小组讨论 [例会地点]学生公寓3号楼会客厅 [例会主持]罗凡 [会议记录]罗凡 会议整体流 ...

  7. ubuntu中执行truffle build出现问题

    进行build之前,采用默认构建器方式创建客户端,先安装默认构建器: npm install truffle-default-builder --save 然后需要修改truffle.js配置文件如下 ...

  8. servlet入门(1)

    第一个servlet类 1.编写一个java类,继承HttpServlet类 2.重写doget和dopost方法 3.Servlet程序在tomcat服务器运行 第一步:找到server窗口,并新建 ...

  9. 6for Java

    class Check{ public boolean validate(String name,   String password){  if(name.equals("xuzhaoni ...

  10. 【bzoj2957】楼房重建 分块+二分查找

    题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子.为了简化问题,我们考虑这些事件发生在一个二 ...