首页 技术 正文
技术 2022年11月18日
0 收藏 554 点赞 2,887 浏览 1463 个字

4978: [Lydsy1708月赛]泛化物品

Time Limit: 5 Sec  Memory Limit: 256 MB
Submit: 220  Solved: 70
[Submit][Status][Discuss]

Description

泛化物品是背包问题里的一个概念,泛化物品并没有固定的体积和费用,而是它的费用随着分配给它的体积而变化。在背包容量为V-1的背包问题中,泛化物品是一个定义域为[0,V)中的整数的函数h,当分配给它的体积为v时,花费的费用就是h(v)。这个定义有一点点抽象,另一种理解是一个泛化物品就是一个数组h[0..V-1],给它体积v,费用为h[v]。这就是所谓的泛化物品。定义泛化物品的和:g,h都是泛化物品,若泛化物品f满足f(v)=min{g(k)+h(v-k)},其中0<=k<=v且0<=k,v-k<n,则称f是g与h的和,即f=g+h。现给定两个定义域均为[0,n)的泛化物品a,b,试求出c=a+b。

Input

第一行包含一个正整数n(1<=n<=100000),表示定义域中的n。第二行包含n个整数a_0,a_1,…,a_{n-1}(0<=a_i<n),表示泛化物品a。第三行包含n个整数b_0,b_1,…,b_{n-1}(0<=b_i<n),表示泛化物品b。输入数据保证a和b都是0到n-1的随机排列。

Output

对于每组数据输出一行2n-1个整数,依次表示c_0,c_1,…,c_{2n-2}。

Sample Input

5
3 4 2 0 1
2 3 0 4 1

Sample Output

5 6 3 2 2 0 1 1 2

HINT

Source

claris原创,本oj版权所有,翻版必究

思路:没有什么特别的方法,但是由于数据是随机的,我们可以排序,先得出大部分结果,然后剩余部分靠暴力。

排序是指a,b分别排序,用最小的部分更新答案。 这里只用前2000个就ok的。

(不知道为什么我两个上面的两个for语句为什么就错了。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const int inf=1e9;
int a[maxn],pos1[maxn],b[maxn],pos2[maxn],ans[maxn];
int main()
{
int N; scanf("%d",&N);
rep(i,,*(N-)) ans[i]=inf;
rep(i,,N-) scanf("%d",&a[i]),pos1[a[i]]=i;
rep(i,,N-) scanf("%d",&b[i]),pos2[b[i]]=i;
rep(i,,*(N-)) ans[i]=inf;
/*rep(i,0,min(N-1,2000)) 但是不知道这个为什么是错的
rep(j,0,min(N-1,2000)){
int p=pos1[i]+pos2[j];
ans[p]=min(ans[p],i+j);
}*/
rep(i,,min(,*(N-)))
rep(j,max(,i-(N-)),min(i,N-)){
int p=pos1[j]+pos2[i-j];
ans[p]=min(ans[p],i);
}
rep(i,,*(N-)) {
if(ans[i]>=inf){
rep(j,max(,i-(N-)),min(i,N-))
ans[i]=min(ans[i],a[j]+b[i-j]);
}
}
rep(i,,*(N-)) printf("%d ",ans[i]);
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,897