A 把直角顶点放在原点, 然后让两条直角边斜着放,注意要判断斜边是否与Y轴平行
B dp[i] 表 走到i点i上的X是偶数个的步数
f[i]表示 从 "在i点时i上的X是奇数个 "变到“在i点时i上的X是偶数个” 所需走的步数
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int i, j; int dp[1003], f[1003]; int p[1003], n; const int mod = 1e9+7; void add(int &a, int b) { a += b; a %= mod; } int main() { int i, j; scanf("%d", &n); for(i = 1; i <= n; i++) scanf("%d", &p[i]); dp[1] = 1; f[1] = 1; for(i = 2; i <= n; i++) { for(j = p[i]; j < i; j++) add(f[i], f[j]); add(f[i], i-p[i]+1); add(dp[i], (1+(dp[i-1]+f[i])%mod)%mod); } printf("%d\n", (dp[n]+1)%mod); return 0; }
Codeforces Round #239 (Div. 1)(A,B),布布扣,bubuko.com
Codeforces Round #239 (Div. 1)(A,B)
原文:http://blog.csdn.net/auto_ac/article/details/22598111