vijos 1907 飞扬的小鸟
我心里毫无波动甚至还有点想笑。
WTF
WTF
WTF
WTF
WTF
WTF
WTF
GTMD调了一天什么鬼啊。
原来更新的范围有讲究啊。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 1000000007
using namespace std;
int n,m,k,x[],y[],dp1[][],dp2[][],ret=,ans1=,mx[],ans2=inf;
struct pnt
{
int p,l,h;
}p[];
bool vis[][];
bool cmp(pnt x,pnt y)
{
return x.p<y.p;
}
bool fail_all(int x)
{
for (int j=;j<=m;j++)
if (dp2[x][j]!=inf) return false;
return true;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for (int i=;i<=n;i++) scanf("%d%d",&x[i-],&y[i-]);
for (int i=;i<=k;i++)
scanf("%d%d%d",&p[i].p,&p[i].l,&p[i].h);
sort(p+,p+k+,cmp);
for (int i=;i<=m;i++) vis[][i]=true;
for (int i=;i<=n;i++)
{
while ((p[ret+].p<=i) && (ret<=k-)) ret++;
int l,r;
if (p[ret].p==i) {l=p[ret].l+;r=p[ret].h-;}
else l=,r=m;
int limit=;if (p[ret].p==i-) limit=p[ret].l+;
for (int j=;j<=m;j++) dp2[i][j]=inf;
for (int j=;j<=m-;j++)
{
if (((vis[i][j-x[i-]]) || (vis[i-][j-x[i-]])) && (j>x[i-]))
{
dp1[i][j]=max(dp1[i-][j-x[i-]],dp1[i][j-x[i-]]);
dp2[i][j]=min(dp2[i][j],dp2[i][j-x[i-]]+);
dp2[i][j]=min(dp2[i][j],dp2[i-][j-x[i-]]+);
vis[i][j]=true;
}
}
for (int j=;j<=m-;j++)
{
if ((j+y[i-]<=m) && (vis[i-][j+y[i-]]))
{
dp1[i][j]=max(dp1[i][j],dp1[i-][j+y[i-]]);
dp2[i][j]=min(dp2[i][j],dp2[i-][j+y[i-]]);
vis[i][j]=true;
}
}
for (int j=;j<=m;j++)
{
if (vis[i-][j])
{
int ret;
dp1[i][m]=max(dp1[i][m],dp1[i-][j]);
if ((m-j)%x[i-]) ret=(m-j)/x[i-]+;
else if (m==j) ret=;
else ret=(m-j)/x[i-];
dp2[i][m]=min(dp2[i][m],dp2[i-][j]+ret);
vis[i][m]=true;
}
}
for (int j=;j<=l-;j++) {vis[i][j]=false;dp2[i][j]=inf;}
for (int j=r+;j<=m;j++) {vis[i][j]=false;dp2[i][j]=inf;}
for (int j=;j<=m;j++)
if (vis[i][j])
{
dp1[i][j]+=(p[ret].p==i);
ans1=max(ans1,dp1[i][j]);
}
if (vis[i][m]) ans1=max(ans1,dp1[i][m]);
if (fail_all(i))
{
printf("0\n%d\n",ans1);
return ;
}
}
for (int i=;i<=m;i++)
if (vis[n][i]) ans2=min(ans2,dp2[n][i]);
printf("1\n%d\n",ans2);
return ;
}
vijos 1907 飞扬的小鸟的更多相关文章
- P1907飞扬的小鸟
P1907飞扬的小鸟 描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或 ...
- [codevs3729]飞扬的小鸟
[codevs3729]飞扬的小鸟 试题描述 输入 输出 输出文件名为 bird.out. 共两行. 第一行,包含一个整数,如果可以成功完成游戏,则输出 1,否则输出 0. 第二行,包含一个整数,如果 ...
- Codevs 3729==洛谷P1941 飞扬的小鸟
P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 Flappy Bird 是一 ...
- NOIP2014 飞扬的小鸟
3. 飞扬的小鸟 (bird.cpp/c/pas) [问题描述] Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的 ...
- Codevs 3729 飞扬的小鸟
飞扬的小鸟 标签 动态规划 NOIp提高组 2014 难度 提高+/省选- 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小 ...
- [NOIP2014][DP]飞扬的小鸟
[NOIP2014]飞扬的小鸟 ——!x^n+y^n=z^n 题目描述: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画 ...
- Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
Luogu 1941 [NOIP2014]飞扬的小鸟 (动态规划) Description Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度 ...
- UOJ #17. 【NOIP2014】飞扬的小鸟 背包DP
#17. [NOIP2014]飞扬的小鸟 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4902 Solved: 1879 题目连接 http:// ...
- P1941 飞扬的小鸟(背包)
P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) #include<iostream> #include<cstdio> ...
随机推荐
- VBA对象模型(2)
Excel对象模型简介 在介绍Excel对象模型之前,让我们先来看一个简单的例子.大多数工厂都是按这样的结构进行设置的:最上层为工厂总部,第二层次分为各个车间,在车间下面又分各班组.就这样组织在一起, ...
- R语言与正态性检验
1.Kolmogorov-Smirnov正态性检验 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法,若两者间的差距很小,则推论该样本取自某 ...
- nodeschool.io 2
~~ BABY STEPS ~~ Write a program that accepts one or more numbers as command-line arguments and pr ...
- JVM性能调优
摘自:http://uule.iteye.com/blog/2114697 JVM垃圾回收与性能调优总结 JVM调优的几种策略 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将 ...
- Remove Nth Node From End of List [LeetCode]
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- 读取DBF文件的部分代码
private void BtnOpenInitial_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDi ...
- 转: CSS中overflow的用法
Overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,overflow属性有四个值:visible (默认), hidden, scroll, 和auto.同样有两个overflo ...
- HDU 3642 扫描线(立方体体积并)
Get The Treasury Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 一模 (4) day1
第一题: 题目大意:给出N个人之间转账的手续X%,求出A转给B至少要多少钱才能使B得到100元.结果保留8位小数:N<=2000 解题过程: 1.很容易看出这题的图论模型,每条边的权值就是(1- ...
- visualsvn server 安装提示无法启动
需要在服务里面给visualsvn server 用本地账户登陆权限