由于之前此题java超时,最后曲线救国,刷了无数题之后,找到了一个java快速io
源码先贴出来 已ac
import java.io.
BufferedReader;
import java.io.
IOException;
import java.io.
InputStreamReader;
import java.io.
StreamTokenizer;
public
class Main {
static
StreamTokenizer in = new
StreamTokenizer(new
BufferedReader(new
InputStreamReader(
System.
in)));
static int nextInt() throws
IOException{
in.nextToken();
return (int)
in.nval;}
static
String next() throws
IOException{
in.nextToken();
return in.sval;}
public static void main(
String[] args) throws
IOException {
int gradePb[], gradePs =
0, n, m, wrongCnt[];
int maxCnt =
0;
String str, ansStr[];
StringBuilder sb = new
StringBuilder();
char ch;
n = nextInt();
m = nextInt();
gradePb = new int[m];
wrongCnt = new int[m];
ansStr = new
String[m];
int a, b, c, ttemp;
for(int i =
0; i < m; i++)
{
a = nextInt();
b = nextInt();
c = nextInt();
ttemp = c;
sb.append(c);
while(ttemp-- >
0)
{
str =
next();
sb.append(str);
}
ansStr[i] = sb.toString();
gradePb[i] = a;
sb.delete(
0, sb.length());
}
for(int i =
0; i < n; i++)
{
for(int j =
0; j < m; j++)
{
in.nextToken();
while((char)
in.ttype !=
')')
{
if(
in.ttype ==
StreamTokenizer.
TT_NUMBER) sb.append((int)
in.nval);
if(
in.ttype ==
StreamTokenizer.
TT_WORD) sb.append(
in.sval);
in.nextToken();
}
str = sb.toString();
sb.delete(
0, sb.length());
if(ansStr[j].equals(str)) gradePs+=gradePb[j];
else wrongCnt[j]++;
}
System.out.println(gradePs);
gradePs =
0;
}
for(int i =
0; i < m; i++)
{
if(maxCnt < wrongCnt[i]) maxCnt = wrongCnt[i];
}
if(maxCnt >
0)
{
System.out.print(maxCnt);
for(int i =
1; i <= m; i++)
{
if(wrongCnt[i-
1] == maxCnt)
System.out.print(
" "+i);
}
}
else
{
System.out.print(
"Too simple");
}
/
/ System.out.println("all time is :"+(end-start)+"ms");
}
}
思悟
提交次数就不说了。。。简直要怀疑人生了。用尽各种javaIO的操作,优化再优化,无奈,java无法像c/c++可以非常便捷轻快的边读取数据边处理,但是不得不说javaIO的操作还是很舒服的,如果没有这么大时间消耗的话会更好吧!
转载请注明原文地址: https://ju.6miu.com/read-1201326.html