题面

题解

背包细节题,wa了一片,上升的过程我们可以看做一个完全背包(多重背包好像跑不过去),下降

过程是一个0/1背包,为了避免冲突应该先跑多重,先跑0/1就有可能产生这个点又上升又下降的

非法情况,最后在将非法情况删去。

代码

#include<bits/stdc++.h>

using namespace std;
const int MAXM = 1005;
const int MAXN = 10005;
const int inf = 0x3f3f3f3f; inline int rd(){
int x=0,f=1;char ch=getchar();
while(ch<'0' || ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while(ch>='0' && ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
} int dp[MAXN][MAXM],px[MAXN],py[MAXN];
int n,m,k,ans=inf;
int x[MAXN],y[MAXN]; int main(){
memset(dp,0x3f,sizeof(dp));
n=rd();m=rd();k=rd();
for(register int i=1;i<=n;i++) x[i]=rd(),y[i]=rd(),py[i]=inf;
for(register int i=1;i<=k;i++) {
int where;where=rd();
px[where]=rd();py[where]=rd();
}
for(register int i=1;i<=m;i++) dp[0][i]=0;
for(register int i=1;i<=n;i++){
for(register int j=x[i];j<=m;j++){
if(j==m)
for(register int o=m-x[i];o<=m;o++){
dp[i][j]=min(dp[i][j],dp[i-1][o]+1);
dp[i][j]=min(dp[i][j],dp[i][o]+1);
}
dp[i][j]=min(dp[i][j],dp[i-1][j-x[i]]+1);
dp[i][j]=min(dp[i][j],dp[i][j-x[i]]+1);
}
int l=max(px[i]+1,1);int r=min(py[i]-1,m-y[i]);
for(register int j=l;j<=r;j++)
dp[i][j]=min(dp[i][j],dp[i-1][j+y[i]]);
for(register int j=px[i];j;j--) dp[i][j]=inf;
for(register int j=py[i];j<=m;j++) dp[i][j]=inf;
}
// for(register int i=1;i<=n;i++){
// cout<<i;
// for(register int j=1;j<=m;j++)
// cout<<" "<<j<<" "<<dp[i][j]<<endl;
// cout<<endl;
// }
for(register int i=1;i<=m;i++) ans=min(dp[n][i],ans);
if(ans!=inf){
puts("1");
printf("%d",ans);
}
else{
ans=0;
puts("0");
for(register int i=1;i<=n;i++){
bool flag=false;
for(register int j=1;j<=m;j++)
if(dp[i][j]!=inf){
flag=1;
if(py[i]!=inf){
ans++;
break;
}
}
if(!flag) break;
}
printf("%d",ans);
}
return 0;
}

洛谷 P1941 飞扬的小鸟 (NOIP 2014)的更多相关文章

  1. 洛谷 P1941 飞扬的小鸟

    洛谷 P1941 飞扬的小鸟 原题链接 首先吐槽几句 noip都快到了,我还不刷起联赛大水题! 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节 ...

  2. Codevs 3729==洛谷P1941 飞扬的小鸟

    P1941 飞扬的小鸟 456通过 2.4K提交 题目提供者该用户不存在 标签动态规划2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 Flappy Bird 是一 ...

  3. [洛谷P1941] 飞扬的小鸟

    洛谷题目链接:飞扬的小鸟 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了 ...

  4. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  5. 洛谷P1941飞扬的小鸟——细节DP

    题目:https://www.luogu.org/problemnew/show/P1941 此题主要注意许多细节,详见代码. 代码如下: #include<iostream> #incl ...

  6. 2018.11.06 洛谷P1941 飞扬的小鸟(背包)

    传送门 上升看成完全背包. 下降看成01背包. 注意边界转移就行了. 代码: #include<bits/stdc++.h> using namespace std; inline int ...

  7. 洛谷P1941 飞扬的小鸟 [noip2014] 背包

    正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...

  8. 洛谷P1941 飞扬的小鸟(背包 dp)

    题意 题目链接 Sol 很显然的dp,设\(f[i][j]\)表示第\(i\)个位置,高度为\(j\)的最小步数 向上转移的时候是完全背包 向下转移判断一下就可以 #include<bits/s ...

  9. 洛谷 P1941 飞扬的小鸟【dp】

    设f[i][j]为在坐标(i,j)时的最小点击次数,转移的话从i-1向上飞或者向下掉转移,注意转移完了之后要把管子部分赋值为inf #include<iostream> #include& ...

随机推荐

  1. 拾遗:{rpm、yum及源码方式管理软件包}

    一.yum配置文件位置 /etc/yum.conf /etc/yum.repos.d/*.repo 二.yum常用命令 install pkgs reinstall pkgs update pkgs ...

  2. 采用多个数据源是Spring的配置

    XML配置多多源文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  3. 绿色版mysql 免安装使用(转载)

    MySQL绿色版的安装(mysql-5.6.22-win32.zip) Posted on 2015-01-31 23:21 卒子 阅读(10739) 评论(2) 编辑 收藏 由于工作需要最近要开始研 ...

  4. 从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1)

    从数组中任意取出2个数,判断他们的和是否为输入的数字sum,时间复杂度为0(n^2),空间复杂度0(1) 假设数据已经是排序好的 #include <stdio.h> #include & ...

  5. 【数论】[SDOI2010]古代猪文

    大概就是求这个: $$G^\sum_{k|N} C_{n}^{k}$$ 显然只要把后面的$\sum_{k|N}C_{n}^{k}$求出来就好了 几个要用的定理: 欧拉定理的推论:(a和n互质) $$a ...

  6. file对象的获取 radio值的获取

    jq $("#hiddenFile").get(0).filesjs this.files; 获取radio的值 $('input:radio:checked').val(): $ ...

  7. bcolz

    raise Exception("this is an ex") bcolz总结: 0.需要用bcolz的columns需要为ndarray的列,不能直接拿list去赋值,因为我发 ...

  8. Erlang学习记录:app demo

    目录结构 │ Emakefile │ make.bat │ start.bat ├─config │ config.config │ server.app ├─ebin │ wulin_app.bea ...

  9. SSE:服务器推送事件

    SSE:Server-Sent Event,服务器推送事件 常规的Http协议是一个请求对应一个响应的这种方式的 但对于某些实时性要求比较高的需求,HTML5中新增了SSE,可以很方便的实现局部数据的 ...

  10. 计数dp+概率+大数——(抽屉问题解的个数)zoj3380

    难的地方在于计数dp..给定范围[1,n]的数去填m个位置,要求不能出现超过I个相同的数, 那就用dp[i][j]表示在阶段i,已经填了j个位置的可能解法,那么只要枚举i填的位置数k∈[0,min(j ...