constint maxn = 1e3 + 7; int n, m, x, y; vector<int> G[maxn]; int cor[maxn]; intdfs(int u, int c){ cor[u] = c; for (auto v : G[u]) { if (cor[v] == c) return0; if (!cor[v] && !dfs(v, -c)) return0; } return1; } voidrun(){ for (int i = 1; i <= n; ++i) G[i].clear(); for (int i = 1, u, v; i <= m; ++i) { scanf("%d %d", &u, &v); G[u].push_back(v); G[v].push_back(u); } memset(cor, 0, sizeof(cor)); for (int i = 1, u; i <= x; ++i) { scanf("%d", &u); cor[u] = 1; } for (int i = 1, u; i <= y; ++i) { scanf("%d", &u); cor[u] = -1; } for (int i = 1; i <= n; ++i) { if (cor[i] && !dfs(i, cor[i]) || !cor[i] && !G[i].size()) { puts("NO"); return; } } for (int i = 1; i <= n; ++i) { if (!cor[i] && !dfs(i, 1) && !dfs(i, -1)) { puts("NO"); return; } } puts("YES"); }
publicclassMain{ static BigDecimal n, m; static BigDecimal two = new BigDecimal("2"); static BigDecimal five = new BigDecimal("5"); static BigDecimal c = init().divide(two); publicstaticvoidmain(String[] args){ Scanner in = new Scanner(System.in); while (in.hasNext()) { n = new BigDecimal(in.next()); m = new BigDecimal(in.next()); if (n.compareTo(m) < 0) { BigDecimal tmp; tmp = n; n = m; m = tmp; } n = n.subtract(m).multiply(c); n = n.setScale(0, BigDecimal.ROUND_DOWN); if (n.equals(m) == true) { System.out.println("0"); } else System.out.println("1"); } } static BigDecimal init(){ BigDecimal l = new BigDecimal("2"); BigDecimal r = new BigDecimal("3"); BigDecimal mid = null; for (int i = 1; i <= 500; ++i) { mid = l.add(r).divide(two); if (mid.multiply(mid).compareTo(five) <= 0) { l = mid; } else r = mid; } return mid.add(new BigDecimal("1")); } }
D - A Simple Math Problem
solved by Tryna. 2:57(+1)
题意: 给出a和b,找到了一组x和y,满足x + y = a和LCM(x,y) = b如果没有就输出 No Solution
题解: 首先我们需要知道这样一个结论,如果i,j是互质的,那么i + j 和 i*j也是互质的。已知x + y = a 和 LCM(x, y) = b,变形为x * y / gcd(x,y) = b,设gcd(x,y) = k,x = k * i,y = k * j所以得到了k * (i + j) = a和k*i*j = b,因为i,j互质,所以i + j, i * j互质,所以gcd(a,b) = k = gcd(x,y)。知道了这个就很好写了,我们有两个方程,分别是x + y = a 和 x * y = k * b,我们采用代入消元法消去y,就得到了x^2 - a*x + k*b = 0,然后就采用求根公式求解,求出来的解也必须要满足x + y = a和LCM(x,y) = b,这里没考虑周到白给了一发。