9271:奶牛散步

---恢复内容开始---

9271:奶牛散步

总时间限制: 
10000ms

单个测试点时间限制: 
1000ms

内存限制: 
131072kB
描述

从一个无限大的矩阵的中心点出发,一步只能向右走、向上走或向左走。恰好走N步且不经过已走的点 
共有多少种走法?

输入

一个数字,代表N,N<=1000

输出

输出有多少方案

样例输入
2
样例输出
7

由图,把方案数看作一棵树,f[n]表示到第n步有多少种走法,易得f[n]为x个三步+y个两步的和,而x的值等于f[n-1]的值(看图),通过相减得y的值为f[n-1]-f[2],所以这道题用递推,起始条件是f[1]=3,f[2]=7;用类似于斐波拉契数列的算法就能AC了.

这里上dalaoZX的代码(不开数组);
 1 #include<iostream>
 2 #include<iomanip>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstdlib>
 6 #include<cstring>
 7 #include<algorithm>
 8 using namespace std;
 9 int main()
10 {
11     int n;
12     int i;
13     int fn_1,fn_2;
14     scanf("%d",&n); //输入任意n值
15     int fn=0;
16     if(n==1)
17         fn=3; //初始化当n=1和n=2时的临界条件
18     else if(n==2)
19         fn=7;
20     else
21     {
22         fn_1=7;
23         fn_2=3;
24         for(i=3; i<=n; i++)
25         {
26             fn=(2*fn_1+fn_2)%12345; //当n>=3时fn的通式
27             fn_2=fn_1%12345;//更新fn_1和fn_2的值
28             fn_1=fn%12345;
29         }
30     }
31     cout<<fn;
32     return 0;
33 }

---恢复内容结束---

时间: 2024-10-13 13:47:29

9271:奶牛散步的相关文章

noi 9271 奶牛散步

题目链接:http://noi.openjudge.cn/ch0206/9271/ 同noi 踩方格,但是题目有问题,%12345,我也是看了discuss才知道的. #include <bits/stdc++.h> using namespace std; unsigned long long d[1005]; int main() { d[1] = 3; d[2] = 7; for(int i=3;i<=1001;i++) d[i] = (2*d[i-1] + d[i-2])%123

【noi 2.6_9271】奶牛散步(DP)

这题与前面的“踩方格”重复了,而且是大坑题!题目漏写了取模12345的条件! 详细解析请见我之前的博文——http://www.cnblogs.com/konjak/p/5936888.html 而这坑在我打了高精+滚动之后才知道..我先把这个代码贴上来.. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std

[USACO08OCT]牧场散步Pasture Walking

[USACO08OCT]牧场散步Pasture Walking 题目描述 The N cows (2 <= N <= 1,000) conveniently numbered 1..N are grazing among the N pastures also conveniently numbered 1..N. Most conveniently of all, cow i is grazing in pasture i. Some pairs of pastures are connec

饥饿的奶牛(洛谷 1868)

题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧草.你可以选择任意区间但不能有重复的部分. 对于奶牛来说,自然是吃的越多越好,然而奶牛智商有限,现在请你帮助他. 输入输出格式 输入格式: 第一行,N,如题 接下来N行,每行一个数x,y,如题 输出格式: 一个数,最多的区间数 输入输出样例 输入样例#1: 3 1 3 7 8 3 4 输出样例#1: 5 说明 1<=n<=15

AC日记——[USACO5.4]奶牛的电信Telecowmunication 洛谷 P1345

[USACO5.4]奶牛的电信Telecowmunication 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 205 #define maxm 20005 #define INF 0x3f3f3f3f int head[maxn],cnt=1,n,m,E[m

洛谷 P2742 [USACO5.1]圈奶牛Fencing the Cows

题目描述 农夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏.他建造的围栏必须包括他的奶牛喜欢吃草的所有地点.对于给出的这些地点的坐标,计算最短的能够围住这些点的围栏的长度. 输入输出格式 输入格式: 输入数据的第一行包括一个整数 N.N(0 <= N <= 10,000)表示农夫约翰想要围住的放牧点的数目.接下来 N 行,每行由两个实数组成,Xi 和 Yi,对应平面上的放牧点坐标(-1,000,000 <= Xi,Yi <= 1,000,000).数字用小数表示. 输出格式

那么大奶牛之神

题目描述 那么大奶牛之神把一个神秘数字通过信使传递给了奶牛们,但由于信件上出现了偏差,一个数字变成了两个数字,现在你需要通过这两个数字还原出大么大奶牛之神给的神秘数字.需要用第二个数字通过加(+),减(-),乘(*),除(/),次幂(^),阶乘(!),开平方(√)这几个符号凑出第一个数字.使用第二个数字的次数最少的时候,那么使用次数就是神秘数字. 例如第一个数字是300,第二个数字是7,那么7用得最少是6次,所以神秘数字是6.具体方法如图用了6个7.虽然最优解的算式不是唯一的,但是并不妨碍得到最

[USACO08NOV]奶牛混合起来Mixed Up Cows

题目描述 Each of Farmer John's N (4 <= N <= 16) cows has a unique serial number S_i (1 <= S_i <= 25,000). The cows are so proud of it that each one now wears her number in a gangsta manner engraved in large letters on a gold plate hung around her

codevs 3060 抓住那头奶牛 x

3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它,他开始在数轴的N 点(0≤N≤100000),奶牛在同一个数轴的K 点(0≤K≤100000). 约翰有两种移动方式:1 分钟内从x 点移动到x+1 或x-1:1 分钟内从x 点移动到2x.假设奶牛不会移动,约翰抓住它需要多少时间? 输入描述 Input Description 一行两个整数N 和K