DIV2:
250:水题,题意是给定两个点的坐标,问连接这俩个点坐标的线段经过了多少整点 解法:gcd(x2-x1, y2-y1)-1
500:dp,题意是给定一个值fieldOrder,求非增序列且第k个数小于fieldOrder-k+1的个数 解法:dp[i][j] 表示第i个数大小是j的时候序列的个数 dp[i+1][k] += dp[i][j](k<=j,j<=fieldOrder-i+1)结果就是dp[i][j](j<=i)所有的和
#include <iostream> #include <cstdio> #include <cstring> using namespace std; long long dp[40][40]; class FIELDDiagrams { public: long long countDiagrams(int fieldOrder) { long long ans = 0; for (int i = 1; i <= fieldOrder; i++) dp[1][i] = 1; for (int i = 1; i <= fieldOrder; i++) for (int j = 1; j <= fieldOrder-i+1; j++) for (int k = 1; k <= j; k++) dp[i+1][k] += dp[i][j]; for (int i = 1; i <= fieldOrder; i++) for (int j = 1; j <= fieldOrder-i+1; j++) ans += dp[i][j]; return ans; } };
1000: