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();
        }
    }
}
目录
相关文章
uva 10340 all in all
输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串是。
43 0
uva375 Inscribed Circles and Isosceles Triangles
uva375 Inscribed Circles and Isosceles Triangles
42 0
概率dp - UVA 11021 Tribles
Tribles  Problem's Link:  http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059   Mean:  有k个细菌,每个细菌只能存活一天,在死去之前可能会分裂出0,1,2....n-1个细菌,对应的概率为p0,p1,p2....pn-1。
829 0
|
机器学习/深度学习
uva 11538 Chess Queen
点击打开链接 题意:给定一个n*m的矩阵,问有多少种方法放置两个相互攻击的皇后?规定在同一行同一列和同对角线的能够相互攻击 思路: 1 先考虑同一行的情况,n行就有n种情况,每一行有m*(m-1)种,总的是n*m*(m-1); 2 考虑同...
820 0
uva 10273 Eat or Not to Eat?
点击打开链接uva 10273 思路: 暴力求解 分析: 1 题目要求没有吃掉的奶牛的个数已经最后一次吃掉奶牛的天数 2 没有其它的方法只能暴力,对于n头牛的n个周期求最小公倍数,然后在2个公倍数之内暴力求解 代码: #inclu...
830 0
|
C++
uva 11136 Hoax or what
点击打开链接uva 11136 思路: STL 分析: 1 题目意思比较不好理解,理解了题目之后我们可以利用STL的multiset来做 2 每次找到最大和最小的值,然后求解即可 代码: #include #include #in...
846 0
uva 1394 - And Then There Was One
点击打开链接uva 1394 思路: 数学递推 分析: 1 题目是一道变形的约瑟夫环变形问题 2 网上看到一篇很好的数学递推法 问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。
995 0
uva 10730 - Antiarithmetic?
点击打开链接uva 10730 思路:枚举等差中项 分析: 1 给定一个n个数的序列判断是否有等差子序列 2 很明显我们如果要判断是否有等差子序列的话,只要去判断是否有长度为3的等差子序列 3 对于n
846 0