数学问题

题目详情:

给你两个长度为n的正整数序列分别为{a1,a2,a3...an},{b1,b2,b3...bn},0<ai,bi<=100;

设S=max{x1*a1+x2*a2+x3*a3+...+xn*an,(1-x1)*b1+(1-x2)*b2+(1-x3)*b3+...+(1-xn)*bn},xi为整数。0<=xi<=1。

请你求出S的最小值。

输入描写叙述:

输入包括多组測试数据。以文件结尾。

每组測试数据包括三行行,第一行为一个正整数n(0<n<=100);第二行输入的是ai,第三行输入的是bi,每两个数以空格隔开。

输出描写叙述:

对于每组測试数据输出对应的答案。

答题说明:

输入例子:

3

2 9 4

2 1 8

3

1 2 3

2 1 1

输出例子:

4

2

/*
思路:
a[],b[]数组中相应坐标位置的数据不同则取最小的那个(取到相应的count1,count2中去)。
同样的数据(存到c[]数组中)待后面动态规划分组。 动态规划的根据是,分两组的差值和 count1与count2的差值最接近然后求结果。
*/
#include "stdio.h"
#include "stdlib.h"
#define maxn 100+10 int a[maxn],count1,b[maxn],count2,n;
int c[maxn],len; inline double abs(double x)
{
return x>0?x:-1*x;
} int fun(int size)
{
int index;
double s1,tmp;
int *buf=(int *)malloc(sizeof(int)*size);
s1=(size-count2+count1)/2.0; //最佳分组中最小一组的和,去与s1最接近的值
buf[0]=0; index=1; tmp=buf[0];
for(int i=1;i<=size;i++){
buf[i]=0; buf[i]=buf[i-1];
for(int j=0;j<len;j++){
if(i-c[j]>=0 && buf[i]<c[j]+buf[i-c[j]]){
buf[i]=c[j]+buf[i-c[j]];
}
} if(abs(s1-buf[i])<=abs(s1-tmp)){
tmp=buf[i];
index=i;
}else{
break;
}
// printf("%d ",buf[i]);
} return (count2+buf[index])>(count1+size-buf[index])?(count2+buf[index]):(count1+size-buf[index]);
} int main()
{ while(scanf("%d",&n) && n>0)
{
int i,sum;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
} for(i=0,len=0,count1=0,count2=0,sum=0;i<n;i++){
scanf("%d",&b[i]);
if(a[i]<b[i]){
count1+=a[i];
}else if(a[i]>b[i]){
count2+=b[i];
}else{
c[len++]=a[i];
sum+=a[i];
}
} if(count1>count2){
int tmp=count2; count2=count1; count1=tmp;
} if(len>0){
printf("%d\n",fun(sum));
}else{
printf("%d\n",count1>count2?count1:count2);
} }
}

本人愚昧。代码不优,超时的说,拿出来衬托一下大神同一时候希望大神们给些改良意见。感谢

CSDN挑战编程交流群:372863405

CSDN挑战编程——《数学问题》的更多相关文章

  1. CSDN挑战编程——《绝对值最小》

    绝对值最小 题目详情: 给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0<=i,j<n). 比如:A={1, 4, -3}, 则: |A[0] + A[0]| ...

  2. CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...

  3. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  4. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  5. csdn在线编程里面的一个排列组合题

    是csdn在线编程里面的一个问题 回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串. 输入:非空仅由小写字母组成的字符 ...

  6. C语言:输入10个整数,找出其中绝对值最小的数

    1 输入10个整数,找出其中绝对值最小的数(10分) 题目描述 输入10个整数,找出其中绝对值最小的数 输入 十个整数 输出 绝对值最小的数 样例输入 -10 -2 30 40 50 60 70 80 ...

  7. 挑战编程 uva100 3n+1

    挑战编程 刘汝佳 的第一道习题  热身题 熟悉下提交格式 题意 #include <iostream> #include <algorithm> using namespace ...

  8. TZOJ 4024 游戏人生之梦幻西游(连续子段和绝对值最小)

    塔神酷爱玩梦幻西游这款游戏,这款游戏以著名的章回小说<西游记>故事为背景,透过Q版的人物,营造出浪漫的网络游戏风格.塔神以追求天下无敌为目标,从一个默默无闻的菜鸟,打拼到了登峰造极的大师, ...

  9. 编程算法 - 最小的k个数 红黑树 代码(C++)

    最小的k个数 红黑树 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用红黑树(multiset) ...

随机推荐

  1. 对DNSPOD添加域名解析的一些见解

    1.主机记录这步比较简单,输入“www”表示比较常规的域名例如www.abc.com,“@”表示abc.com,“ * ”表示泛解析,匹配所有*.abc.com的域名. 2.记录类型这步,一般常用A记 ...

  2. SQL SERVER 2012疑难问题解决方法

    问题一: 问题描述 SQL SERVER 2012 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. (System.Data) 解决办法 管理员身份运行 cmd ->  输入 netsh ...

  3. 关于Core Data的一些整理(二)

    关于Core Data的一些整理(二) 创建NSManagedObject的子类时,有一点是在这中间要强调的一点是,要不要勾选 Use scalar properties for primitive ...

  4. SQL UPDATE 经典

    1 sql中用另一个表的一列来更新数据库表 SELECT TOP 1000 [a] ,[b] ,[c] FROM [单元测试项目].[dbo].[A] SELECT TOP 1000 [a] ,[b] ...

  5. 【USACO 2.1.3】三值的排序

    [题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ...

  6. 如何做好Flex与Java交互

    三种flex4与Java顺利通信的方式是: flex与普通java类通信RemoteObject; flex与服务器交互HTTPService; flex与webservice交互WebService ...

  7. SxsTrace工具使用方法(转)

    http://blog.sina.com.cn/s/blog_494e45fe0102dtt3.html Windows7平台上有一个强大的SxsTrace工具,可以跟踪调试应用程序运行时需要的动态库 ...

  8. html a标签

    <a> 标签定义超链接,用于从一张页面链接到另一张页面. <a> 元素最重要的属性是 href 属性,它指示链接的目标. 在所有浏览器中,链接的默认外观是: 未被访问的链接带有 ...

  9. struts2中的路径问题

    <?xml version="1.0" encoding="GB18030" ?><%@ page language="java&q ...

  10. 10:Hello, World!的大小

    总时间限制:  1000ms 内存限制:  65536kB 描述 还记得在上一章里,我们曾经输出过的“Hello, World!”吗? 它虽然不是本章所涉及的基本数据类型的数据,但我们同样可以用siz ...