提出 #372963
ソースコード 拡げる
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <numeric>
#include <cctype>
#include <tuple>
#include <array>
#include <climits>
#include <bitset>
#include <cassert>
#include <unordered_map>
#include <complex>
#ifdef _MSC_VER
#include <agents.h>
#endif
#define FOR(i, a, b) for(int i = (a); i < (int)(b); ++i)
#define rep(i, n) FOR(i, 0, n)
#define ALL(v) v.begin(), v.end()
#define REV(v) v.rbegin(), v.rend()
#define MEMSET(v, s) memset(v, s, sizeof(v))
#define UNIQUE(v) (v).erase(unique(ALL(v)), (v).end())
#define MP make_pair
#define MT make_tuple
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> P;
class bipartite_graph{
vector<vector<int> > Graph;
vector<int> used, match;
int V;
public:
bipartite_graph(int size) :V(size){
Graph.resize(V);
used.resize(V, 0);
match.resize(V, -1);
}
void add_edge(int from, int to){
Graph[from].push_back(to);
Graph[to].push_back(from);
}
int dfs(int v){
used[v] = 1;
for (int i = 0; i < Graph[v].size(); i++){
int x = Graph[v][i], w = match[x];
if (w < 0 || !used[w] && dfs(w)){
match[x] = v;
match[v] = x;
return 1;
}
}
return 0;
}
int matching(){
fill(match.begin(), match.end(), -1);
int res = 0;
for (int v = 0; v < V; v++){
if (match[v] >= 0) continue;
fill(used.begin(), used.end(), 0);
if (dfs(v)) res++;
}
return res;
}
};
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
cout.setf(ios::fixed);
cout.precision(20);
int m;
cin >> m;
vector<int> px(m), py(m), s(m), t(m);
rep(i, m){
cin >> px[i] >> py[i];
}
int n;
cin >> n;
px.resize(m + n);
py.resize(m + n);
s.resize(m + n);
t.resize(m + n);
FOR(i, m, m + n){
cin >> px[i] >> py[i] >> s[i] >> t[i];
}
int k = m + n;
bipartite_graph G(k*2);
auto check = [&](int a, int b){
int dsq = (px[a] - px[b]) * (px[a] - px[b]) + (py[a] - py[b])*(py[a] - py[b]);
return dsq <= (s[b] - t[a])*(s[b] - t[a]);
};
rep(i, k) FOR(j, i + 1, k){
if (j >= m && check(i, j)){
G.add_edge(i, j + k);
}
}
//cout << k - G.matching() << endl;
cout << (k - G.matching() <= m ? "YES" : "NO") << endl;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - ラボライブ タフグローバルフェスティバル |
| ユーザ | yuusune |
| 言語 | C++11 (GCC 4.9.2) |
| 得点 | 200 |
| コード長 | 2451 Byte |
| 結果 | AC |
| 実行時間 | 67 ms |
| メモリ | 6184 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 200 / 200 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, scrambled_43.txt, scrambled_44.txt, scrambled_45.txt, scrambled_46.txt, scrambled_47.txt, scrambled_48.txt, scrambled_49.txt, scrambled_50.txt, scrambled_51.txt, scrambled_52.txt, scrambled_53.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| scrambled_00.txt | AC | 27 ms | 768 KiB |
| scrambled_01.txt | AC | 22 ms | 928 KiB |
| scrambled_02.txt | AC | 24 ms | 924 KiB |
| scrambled_03.txt | AC | 64 ms | 6184 KiB |
| scrambled_04.txt | AC | 64 ms | 6180 KiB |
| scrambled_05.txt | AC | 62 ms | 6176 KiB |
| scrambled_06.txt | AC | 67 ms | 6176 KiB |
| scrambled_07.txt | AC | 67 ms | 6176 KiB |
| scrambled_08.txt | AC | 24 ms | 924 KiB |
| scrambled_09.txt | AC | 24 ms | 920 KiB |
| scrambled_10.txt | AC | 24 ms | 928 KiB |
| scrambled_11.txt | AC | 24 ms | 928 KiB |
| scrambled_12.txt | AC | 24 ms | 928 KiB |
| scrambled_13.txt | AC | 22 ms | 800 KiB |
| scrambled_14.txt | AC | 22 ms | 920 KiB |
| scrambled_15.txt | AC | 24 ms | 804 KiB |
| scrambled_16.txt | AC | 24 ms | 928 KiB |
| scrambled_17.txt | AC | 24 ms | 928 KiB |
| scrambled_18.txt | AC | 24 ms | 800 KiB |
| scrambled_19.txt | AC | 22 ms | 920 KiB |
| scrambled_20.txt | AC | 24 ms | 928 KiB |
| scrambled_21.txt | AC | 24 ms | 804 KiB |
| scrambled_22.txt | AC | 24 ms | 924 KiB |
| scrambled_23.txt | AC | 40 ms | 2976 KiB |
| scrambled_24.txt | AC | 25 ms | 1440 KiB |
| scrambled_25.txt | AC | 44 ms | 4724 KiB |
| scrambled_26.txt | AC | 28 ms | 1444 KiB |
| scrambled_27.txt | AC | 27 ms | 1312 KiB |
| scrambled_28.txt | AC | 32 ms | 2216 KiB |
| scrambled_29.txt | AC | 40 ms | 3372 KiB |
| scrambled_30.txt | AC | 33 ms | 2144 KiB |
| scrambled_31.txt | AC | 51 ms | 3744 KiB |
| scrambled_32.txt | AC | 32 ms | 1692 KiB |
| scrambled_33.txt | AC | 41 ms | 2200 KiB |
| scrambled_34.txt | AC | 28 ms | 1068 KiB |
| scrambled_35.txt | AC | 39 ms | 2080 KiB |
| scrambled_36.txt | AC | 32 ms | 1684 KiB |
| scrambled_37.txt | AC | 27 ms | 916 KiB |
| scrambled_38.txt | AC | 25 ms | 920 KiB |
| scrambled_39.txt | AC | 25 ms | 732 KiB |
| scrambled_40.txt | AC | 24 ms | 796 KiB |
| scrambled_41.txt | AC | 24 ms | 920 KiB |
| scrambled_42.txt | AC | 24 ms | 924 KiB |
| scrambled_43.txt | AC | 24 ms | 920 KiB |
| scrambled_44.txt | AC | 25 ms | 792 KiB |
| scrambled_45.txt | AC | 24 ms | 924 KiB |
| scrambled_46.txt | AC | 25 ms | 920 KiB |
| scrambled_47.txt | AC | 24 ms | 792 KiB |
| scrambled_48.txt | AC | 25 ms | 920 KiB |
| scrambled_49.txt | AC | 25 ms | 792 KiB |
| scrambled_50.txt | AC | 24 ms | 916 KiB |
| scrambled_51.txt | AC | 24 ms | 804 KiB |
| scrambled_52.txt | AC | 53 ms | 5404 KiB |
| scrambled_53.txt | AC | 22 ms | 804 KiB |