5624.良い方法
1.問題リンク
2.参照リンク
「質問」タブにヒントがあります.
A+B+C=X、すなわち「i個の数より前の3個の数の和」である.
A+B+C=XはA+B=X-Cと同じ意味です.
すなわち,現在のi個数を基準として,以前の数から得られた値(X−C)を減算して以前に一度やったことがあれば,問題の条件に合致する.
したがって,Xの値を得る前に,A+Bの値を採取する.
2.参照リンク
1.トラブルシューティング
「質問」タブにヒントがあります.
A+B+C=X、すなわち「i個の数より前の3個の数の和」である.
A+B+C=XはA+B=X-Cと同じ意味です.
すなわち,現在のi個数を基準として,以前の数から得られた値(X−C)を減算して以前に一度やったことがあれば,問題の条件に合致する.
したがって,Xの値を得る前に,A+Bの値を採取する.
2.ソースコード
//좋은 수
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int [] array = new int[n];
for(int i =0 ; i < n ; i ++) {
array[i] = Integer.parseInt(st.nextToken());
}
int mid = 200000;
boolean [] visited =new boolean[mid*2+1];
int ans =0 ;
for(int i =0 ; i < n ; i++) {
for(int j =0 ; j < i ; j++) {
if(visited[array[i] - array[j] + mid]) {
ans++;
break;
}
}
for(int j =0 ; j <= i ; j++) {
visited[array[i] + array[j] + mid ] = true;
}
}
System.out.println(ans);
}
}
Reference
この問題について(5624.良い方法), 我々は、より多くの情報をここで見つけました https://velog.io/@jms8732/5624.-좋은-수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol