UVa11968 - In The Airport

简介: UVa11968 - In The Airport
importjava.io.IOException;
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
importjava.io.BufferedReader;
importjava.io.PrintWriter;
importjava.io.OutputStreamWriter;
importjava.io.StreamTokenizer;
publicclassMain{
publicstaticbooleanDEBUG=false;
publicBufferedReadercin;
publicPrintWritercout;
publicStreamTokenizertokenizer;
publicintn, m, k;
publiclongtotal;
publiclong[] mArr, nArr, kArr;
publicvoidinit()
    {
try {
if (DEBUG) {
cin=newBufferedReader(newInputStreamReader(
newFileInputStream("d:\\OJ\\uva_in.txt")));
            } else {
cin=newBufferedReader(newInputStreamReader(System.in));
            }
        } catch (IOExceptione) {
e.printStackTrace();
        }
cout=newPrintWriter(newOutputStreamWriter(System.out));
tokenizer=newStreamTokenizer(cin);
    }
publicStringnext()
    {
try {
tokenizer.nextToken();
if (tokenizer.ttype==StreamTokenizer.TT_EOF)
returnnull;
elseif (tokenizer.ttype==StreamTokenizer.TT_WORD)
returntokenizer.sval;
elseif (tokenizer.ttype==StreamTokenizer.TT_NUMBER) 
returnString.valueOf((int)tokenizer.nval);
        } catch (IOExceptione) {
e.printStackTrace();
        }
returnnull;
    }
publicvoidinput()
    {
try {
n=Integer.parseInt(next());
m=Integer.parseInt(next());
k=Integer.parseInt(next());
total=0;
mArr=newlong[m];
kArr=newlong[k];
nArr=newlong[n-m-k];
for (inti=0; i<m; i++) {
mArr[i] =Long.parseLong(next());
total+=mArr[i];
            }
for (inti=0; i<k; i++) {
kArr[i] =Long.parseLong(next());
total+=kArr[i];
            }
inttmpn=n-m-k;
for (inti=0; i<tmpn; i++) {
nArr[i] =Long.parseLong(next());
total+=nArr[i];
            }
        } catch (Exceptione) {
e.printStackTrace();
        }
    }
publicvoidsolve(intt)
    {
cout.printf("Case #%d: ", t);
intans1=0, ans2=0;
for (inti=0; i<m; i++) {
longtmp1=n*mArr[i] -total;
longtmp2=n*mArr[ans1] -total;
if (Math.abs(tmp1) <Math.abs(tmp2)) ans1=i;
elseif (Math.abs(tmp1) ==Math.abs(tmp2) &&mArr[i] <mArr[ans1]) ans1=i;
        }
for (inti=0; i<k; i++) {
longtmp1=n*kArr[i] -total;
longtmp2=n*kArr[ans2] -total;
if (Math.abs(tmp1) <Math.abs(tmp2)) ans2=i;
elseif (Math.abs(tmp1) ==Math.abs(tmp2) &&kArr[i] <kArr[ans2]) ans2=i;
        }
cout.printf("%d %d", mArr[ans1], kArr[ans2]);
cout.println();
cout.flush();
    }
publicstaticvoidmain(String[] args)
    {
try {
Mainsolver=newMain();
solver.init();
intt=Integer.parseInt(solver.next());
for (inti=1; i<=t; i++) {
solver.input();
solver.solve(i);
            }
        } catch (Exceptione) {
e.printStackTrace();
        }
    }
}
目录
相关文章
uva10152 ShellSort
uva10152 ShellSort
64 0
uva 11806 - Cheerleaders
点击打开链接 题意:在一个n行m列的矩形里面放k个相同的石子,要求第一行,最后一行,第一列,最后一列都要有石子。问有几种方法? 思路: 1 如果题目没有要求“第一行,最后一行,第一列,最后一列都要有石子”,那么答案就是C[n*m][k],我们用C[i][j]表示i个里面选择j个的组合数。
825 0
|
机器学习/深度学习 人工智能
uva 10870 Recurrences
点击打开uva 10870 思路:构造矩阵+矩阵快速幂 分析: 1 题目给定f(n)的表达式 f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n -3) + .
737 0
uva 1203 Argus
点击打开链接uva 1203 思路: 优先队列 分析: 1 题目要求前k个事件的编号,我们利用优先队列来维护即可 2 优先队列保存的是一个struct,因此我们需要重载 s.
1299 0
uva 10730 - Antiarithmetic?
点击打开链接uva 10730 思路:枚举等差中项 分析: 1 给定一个n个数的序列判断是否有等差子序列 2 很明显我们如果要判断是否有等差子序列的话,只要去判断是否有长度为3的等差子序列 3 对于n
847 0
uva 1388 - Graveyard
点击打开链接uva1388 思路:数学 分析: 1 我们把原先的n个墓碑看成是园内的正n变形,现在的n+m个墓碑看成是园内的正n+m变形。那么通过画图我们可以知道当这个两个正多边形有一个点重合的时候移动的总距离最小 2 那么我们把这个圆进...
1019 0
uva10859Placing Lampposts
题意:给你一个n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮,每盏灯将照亮以他为一个端点的所有边,在灯的总数最小的前提下,被两盏灯同时照亮的边数应当尽量大。 分析:d(i,j)表示i的父节点放灯的状态为j(1表示放,0不放),以i为根的树的最小x值     x=Ma+c, a表...
793 0