14/02/21 04:20:01.59
>45行目 if(data.data[i].x < border_x)
//ここは間違えてて、ゴメンなさい。m(_ _)m
>100, 115行目 × //大きい の想定関数 ac+b とデータの誤差の√平方和
>100, 115行目 ○ //大きい方の想定関数 ac+b とデータの誤差の√平方和
//ここも間違えてて、ゴメンなさい。m(_ _)m
//159行目より修正
int max_x = Integer.MIN_VALUE;
int min_x = Integer.MAX_VALUE;
int iSeepestDecentValue;
while((line = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line);
int x = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int sum = Integer.parseInt(st.nextToken());
for(int i = 0; i < n; i++)
data.add(new Point((double)x, 1.0));
for(int i = 0; i < sum - n; i++)
data.add(new Point((double)x, 0.0));
if(x > max_x)
max_x = x;
//修正
if(x < min_x)
min_x = x;
}
PointList input_data = new PointList(data);
//修正
//再急降下法で使用する最大傾斜の値。0 より大きくなければいけません。
iSeepestDecentValue = ( max_x - min_x ) / 100;
iSeepestDecentValue = ( 0 >= iSeepestDecentValue ) ? 1 : iSeepestDecentValue;
System.out.println(solve(input_data, max_x, min_x, iSeepestDecentValue));