【问题描述】

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

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

事实上,东海未填平的区域还需要至少体积为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. Java Jar 包加密 -- XJar

    Java Jar 包加密 一.缘由 Java的 Jar包中的.class文件可以通过反汇编得到源码.这样一款应用的安全性就很难得到保证,别人只要得到你的应用,不需花费什么力气,就可以得到源码. 这时候 ...

  2. Docker Dockerfile 指令详解与实战案例

    Dockerfile介绍及常用指令,包括FROM,RUN,还提及了 COPY,ADD,EXPOSE,WORKDIR等,其实 Dockerfile 功能很强大,它提供了十多个指令. Dockerfile ...

  3. MySQL LOAD DATA INFILE—批量从文件(csv、txt)导入数据

    最近做的项目,有个需求(从Elastic Search取数据,业务运算后),每次要向MySQL插入1300万数据左右.最初用MySQL的executemany()一次插入10000条数据,统计的时间如 ...

  4. Jmeter系列(31)- 获取并使用 JDBC Request 返回的数据

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 Jmeter 使用 JDBC R ...

  5. Hystrix入门教程

    Hystrix入门教程 一·什么是Hystrix?Hystrix有什么作用?使用Hystrix有哪些适用场景 Hystrix是springCloud的组件之一,Hystrix 可以让我们在分布式系统中 ...

  6. js基础练习题(3)

    8.this 1.举例说说apply方法和call方法的作用和区别 2.读下面代码,写程序结果 function identify () { return this.name.toUpperCase( ...

  7. xshell界面变成半透明的怎么办?

    在工具——选项查看选项卡去掉使窗口透明的前的勾就可以了

  8. Jquery的一些方法

    $.trim(str);说明:去掉字符串首尾空格.

  9. JS动画三剑客——setTimeout、setInterval、requestAnimationFrame

    一.前言 前端实现动画效果主要有以下几种方法:CSS3中的transition 和 animation ,Javascript 中可以通过定时器 setTimeout.setinterval,HTML ...

  10. hive中内置函数

    查看函数的详细使用方法 desc function extended 函数名 例如: 1).desc function extended locate locate(substr, str[, pos ...