[Icpc] zoj 1037 Gridland (water C++ / Java)
规律 : 偶数行或偶数列必定存在全部为1的路径把所有点连起来, 否则m行n列中存在 m*n-1个1 和 一个 sqrt(2) 的路径连起所有点
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cstdlib> #include <cmath> using std::cin; using std::cout; using std::endl; using std::string; typedef string String; int main() { int T; scanf("%d", &T); for (int i = 1; i <= T; i++) { int a, b; scanf("%d%d", &a, &b); printf("Scenario #%d:\n", i); if (((a * b) & 0x1) == 0) { printf("%.2f\n", (double)(a*b)); } else { printf("%.2f\n", (double)(a*b) + 0.41); } printf("\n"); } return 0; }
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int T = in.nextInt(); for (int i = 1; i <= T; i++) { int a = in.nextInt(); int b = in.nextInt(); System.out.printf("Scenario #%d:\n", i); if ((a * b) % 2 == 0) { System.out.printf("%.2f\n", (double)(a*b)); } else { System.out.printf("%.2f\n", (double)(a*b - 1) + 1.41); } System.out.println(); } } }