10 2013 档案

摘要:题意: 一直一个有序数组,给定一个数字n代表已知数组的第n个数,求该书是几。分析: 1,根据数组规律对其分组:1 12 123 1234 12345...... 2,首先求n在第几组中,再求n在其分组的第几个数中同时我们也可求得是该书的第几位。 3,我们分得的数组中数字依次变大,位数越来越多,但我们是要按照每一个数字来计算位置信 息。比如:123(一百二十三)是三个数,所以们就用到 log10求得其位数。 1 #include 2 #include 3 using namespace std; 4 #define size 31269 5 unsigned a[s... 阅读全文
posted @ 2013-10-17 21:52 Neptunes 阅读(194) 评论(0) 推荐(0)
摘要:*题意:在给定的方格中,按照只能向右向上的格式,求有几种方式可以从左下方到右上方。分析:根据方格的规模,m×n,肯定向右m次,向上n次,所以问题转化为从m+n步中选取m步向右(剩余的n步 自然向上)。在求组合是尽量简化运算。*代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 int main() 6 { 7 long long int a,b,m,n,ans,count; 8 while(cin>>a>>b) 9 {10 if(a==0&&b==0)11 bre... 阅读全文
posted @ 2013-10-17 21:32 Neptunes 阅读(212) 评论(0) 推荐(0)
摘要:*题意:给定一定的金额cash,在给出n中货币,每种货币有一定的数量。问:在不超过cash的条件下,用给定货币组成最接近cash的金额数是多少。*思路:完全背包问题+数量限制。要实现并不困难,不过由于数据较大,以上思路有三重循环会TLE。所以,必须优化。至于优化,可以选择二进制优化,或者把循环去掉一层。1.二进制优化是把物品个数用二进制数表示出来,以减少循环次数。2.去掉物品书的那层循环:因为我们在计算dp[i+1][j],枚举物品数量k>=1的情况时,与在计算dp[i+1][j-d[i]],枚举的k>0的情况恰好相同,所以我们可以不用在用到k循环达到优化的效果。 1 #inclu 阅读全文
posted @ 2013-10-16 12:35 Neptunes 阅读(212) 评论(0) 推荐(0)
摘要:*题意:给定三维迷宫,能走出来就输出最短用时,走不出输出*代码:#include#include#includeusing namespace std;char maze[31][31][31];bool visit[31][31][31];int queue[28000][3];int time[31][31][31];int l,c,r;int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};void bfs(int start[3],int end[3]){ int i,k,front=0,back=1,... 阅读全文
posted @ 2013-10-03 15:46 Neptunes 阅读(168) 评论(0) 推荐(0)