【问题描述】

发鸠之山,其上多柘木。有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨。是炎帝之少女,名曰女娃。女娃游于东海,溺而不返,故为精卫。常衔西山之木石,以堙于东海。——《山海经》

精卫终于快把东海填平了!只剩下了最后的一小片区域了。同时,西山上的木石也已经不多了。精卫能把东海填平吗?

事实上,东海未填平的区域还需要至少体积为v的木石才可以填平,而西山上的木石还剩下n块,每块的体积和把它衔到东海需要的体力分别为k和m。精卫已经填海填了这么长时间了,她也很累了,她还剩下的体力为c。

这题是让我们用最小的体力搬最大的体积。

我一开始没用最小的体力,

就对了一个点

很尴尬

看看我只对了一个点的代码吧:

#include<iostream>
#include<cstdio>
using namespace std;
int v,n,c,ans;
int f[],tj[],tl[];
int main()
{
cin>>v>>n>>c;
for(int i=;i<n;i++)
{
cin>>tj[i];
cin>>tl[i];
}
ans=c;//记剩余体力的变量
for(int i=;i<n;i++)
{
for(int j=c;j>=;j--)
{
if(j>=tl[i])//是否有足够的体力搬运
{
if(f[j-tl[i]]+tj[i]>f[j])//搬过来是否体积会更大
{
f[j]=f[j-tl[i]]+tj[i];
if(j==c)//是否体力为c
{
//cout<<ans<<" "<<i<<endl;
ans-=tl[i];//减去需要的体力
//cout<<ans<<endl;
}
}
}
}
}
//cout<<f[c]<<" "<<n<<endl;
if(v-f[c]>)//如果不能填完,输出 Impossible
{
cout<<"Impossible"<<endl;
return ;
}
cout<<ans<<endl;//输出剩余的体力
return ;
}

在死磕了几天后

突然发现我求的是体力为c,谁出填完剩余最多的体力

我改了代码:

#include<iostream>
#include<cstdio>
using namespace std;
int v,n,c;
int f[],tj[],tl[];
int main()
{
cin>>v>>n>>c;
for(int i=;i<n;i++)
{
cin>>tj[i];
cin>>tl[i];
}
for(int i=;i<n;i++)
{
for(int j=c;j>=;j--)
{
if(j>=tl[i])//是否有足够的体力搬运
{
f[j]=max(f[j-tl[i]]+tj[i],f[j]);//求出当前体力最多可以搬运的最大体积
}
}
}
for(int i=;i<c;i++)//循环,搜索可以填满的最小体力
{
if(f[i]>=v)//如果填满了,就输出剩余的体力
{
cout<<c-i<<endl;
return ;
}
}
cout<<"Impossible"<<endl;
return ;
}

然后,就A了(*^-^*)

P1050 精卫填海的更多相关文章

  1. P1050

    问题 F: P1050 时间限制: 1 Sec  内存限制: 128 MB提交: 37  解决: 27[提交][状态][讨论版] 题目描述 一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串. ...

  2. P1510 精卫填海

    P1510 精卫填海二分答案二分背包容量,判断能否满足v.判断的话就跑01背包就好了. #include<iostream> #include<cstdio> #include ...

  3. 洛谷 P1510 精卫填海

    洛谷 P1510 精卫填海 题目描述 [版权说明] 本题为改编题. [问题描述] 发鸠之山,其上多柘木.有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨.是炎帝之少女,名曰女娃.女娃游于东海,溺 ...

  4. VIJOS-P1625 精卫填海

    JDOJ 1587 VIJOS-P1625 精卫填海 https://neooj.com/oldoj/problem.php?id=1587 洛谷 P1510 精卫填海 https://www.luo ...

  5. 洛谷P1050 循环【java大数】

    题目:https://www.luogu.org/problemnew/show/P1050 题意:给定一个数$n$,问$n$的幂次的最低$k$位的循环节是多少. 思路:这真是我做过最难的java大数 ...

  6. P1050 螺旋矩阵

    P1050 螺旋矩阵 转跳点:

  7. tyvj P1050 最长公共子序列

    题目链接:http://tyvj.cn/p/1050 题解: 裸题,只是为了测试LCS模板写对没有…… #include<cstdio> #include<cstring> # ...

  8. luogu P1510 精卫填海

    题目描述 [版权说明] 本题为改编题. [问题描述] 发鸠之山,其上多柘木.有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨.是炎帝之少女,名曰女娃.女娃游于东海,溺而不返,故为精卫.常衔西山之 ...

  9. 洛谷P1510 精卫填海

    //01背包 求背包内物品价值超过某一定值时的最小体积 #include<bits/stdc++.h> using namespace std; ; ; int n,v_tot,w_tot ...

随机推荐

  1. ADB命令 使用

    简介 ADB,即 Android Debug Bridge  ,它是 Android 开发/测试人员不可替代的强大工具 .安卓调试桥 (Android Debug Bridge, adb),是一种可以 ...

  2. linux最小化安装命令补全

    bash-completion 需要安装bash-completion才能补全,安装后,重新打开一个窗口就能生效.

  3. 第一章、认识Shiro

    Shiro简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Securi ...

  4. Linux上的Systemctl命令

    LinuxSystemctl是一个系统管理守护进程.工具和库的集合,用于取代System V.service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器.通过Syste ...

  5. 深拷贝和浅拷贝以及void里的return用法

    Object o1=new Object(); Object o2; int i1=3,i2; 浅拷贝 o2=o1;i2=i1; 深拷贝 o2=new Object();o2=o1.clone(); ...

  6. centos 6.5 dhcp桥接方式上网络设置

    首先虚拟机和主机之间采用桥接模式 然后在虚拟机中进行设置,首先进入到目录 /etc/sysconfig/network-scripts/ [root@localhost ~]# cd /etc/sys ...

  7. Cannot resolve symbol window

    参照官网执行如下代码的时候,报了Cannot resolve symbol window错误. val windowedCounts = words.groupBy( window($"ti ...

  8. 4W字的后端面试知识点总结(持续更新)

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  9. gdi和gdi+比较

    http://www.360doc.com/content/10/1013/17/1066008_60709410.shtmlhttp://www.360doc.com/content/10/1013 ...

  10. SpringBoot开发案例之异常处理并邮件通知

    前言 在项目开发中,对于异常处理我们通常有多种处理方式,比如:控制层手动捕获异常,拦截器统一处理异常.今天跟大家分享一种注解的方式,统一拦截异常并处理. 异常处理 在spring 3.2中,新增了@R ...