Codeforces Beta Round #17
途中から初参加。
Noldbach problem
解もprimerじゃなきゃいけないって条件を見落としていて、何故ExampleBがNoになるのか終了ギリギリまで分からなかった。
英語読解の問題だなー。
#include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; bool primer(const int n){ int i=2; while(n>=i*i){ if(n%i == 0) return false; i++; } return true; } int nextprimer(int n){ while(true){ n++; if(primer(n)) return n; } return 0; } int main(){ int n,k; cin >> n >> k; int count = 0; bool count_test; for(int i=2; i<=n; i++){ if(!primer(i)) continue; count_test=false; for(int j=2; j<=(i-1)/2 && count_test==false && count < k; j++){ if(primer(j)){ if(j<i-j-1 && primer(i-j-1) && i-j-1 == nextprimer(j)){ count++; count_test=true; } } } } if(count == k){ cout << "YES" << endl; }else{ cout << "NO" << endl; } }
Hierarchy
変数名はもうちょっと綺麗にかけるようになりたい。
qualが大きい方から考えていけばおっけー。
#include <algorithm> #include <iostream> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; int comparevec(vector<int> n){ int max = n[0]; int maxnum = 0; for(unsigned int i=1; i<n.size(); i++){ if(max<n[i]){ max=n[i]; maxnum = i; } } return maxnum; } struct app{ int a; int b; int c; }; int main(){ int result = 0; int n; cin >> n; vector<int> qual; for(int i=0; i<n; i++){ int m; cin >> m; qual.push_back(m); } int m; cin >> m; vector<app> appl; for(int i=0; i<m; i++){ int a,b,c; cin >> a >> b >> c; app applic; applic.a = a; applic.b = b; applic.c = c; appl.push_back(applic); } int maxnum = comparevec(qual); qual[maxnum] = -1; for(int i=0; i<n-1; i++){ maxnum = comparevec(qual); qual[maxnum] = -1; int cost = 1000001; for(unsigned int j=0; j<appl.size(); j++){ if(appl[j].b-1 == maxnum){ if(qual[appl[j].a-1] == -1){ if(cost>appl[j].c){ cost = appl[j].c; } } } } if(cost < 1000001){ result += cost; }else{ cout << -1 << endl; return 0; } } cout << result << endl; return 0; }
Balance
見てない。
NotePad
文字列使ってcの余りをとっていけば解を出せるところは分かったんだけど、時間切れ。
Palisection
見てない。