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