自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

moyan_min的专栏

知我者,为我心忧;不知我者,谓我何求。向编程努力……永不放弃,永不言败!!!

  • 博客(34)
  • 问答 (5)
  • 收藏
  • 关注

原创 128 - Software CRC

描述:crc检测题目,还好最近刚学了,要不然还真不会#include #include char str[1100];char t[]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int main(){ // freopen("a.txt","r",stdin); int len;

2013-04-27 15:06:55 664

原创 10306 - e-Coins

描述:刚开始没看懂题目,原来是要凑出一个数(x,y),使得x^2+y^2==s^2#include #include int v[310][310],arr[45][2];int pow_two(int x,int y){ return x*x+y*y;}int main(){ // freopen("a.txt","r",stdin); int n,m,t,

2013-04-26 14:26:48 796

原创 590 - Always on the run

描述:没什么难度,比较水一点的题#include #include struct fli{ int d[10]; int flight[10][35]; int sum; int count;};fli f[12];int main(){// freopen("a.txt","r",stdin); int n,m,k,t=0,p;

2013-04-25 17:46:49 647

原创 10006 - Carmichael Numbers

描述:需要筛选和幂取模,要不然普通算法就会超时,只有合数并且满足所有的a(2<a<n)a^n%n=a才能输出The number %d is a Carmichael number.,否则输出%d is normal.#include #include #include bool prime[65005];void solve(){ memset(prime,0,sizeof(

2013-04-25 13:24:52 586

原创 10651 - Pebble Solitaire

描述:对于这道题,实在想不出如何用动规,所以就直接bfs#include #include char s[5010][15];int main(){ // freopen("a.txt","r",stdin); int n,flag; while(scanf("%d",&n)!=EOF) for(int i=0; i<n; i++)

2013-04-23 15:47:28 611

原创 138 - Street Numbers

描述:有m,n两个数字,求得区间[m,n]==[1,m],输出十组m,n#include #include int main(){ int n=8,m=6,arr[10]={0}; printf("%10d%10d\n",m,n); arr[0]=1; for(int i=1; i<10; i++) { arr[i]=m;

2013-04-23 14:05:29 655

原创 10051 - Tower of Cubes

描述:麻烦的题,需要记录走过的路程,而且和最短路还有些车别#include struct cube{ int val; int sum; int no; int x; int y;};cube v[510][6];char str[6][7]= {"front","back","left","right","top","bottom"};int

2013-04-22 13:08:54 663

原创 10534 - Wavio Sequence

描述:由于数组会到10000,所以普通的记忆化搜索会超时,需要改进一下#include int n,sum,len;int v[10010][2],arr[10010],s[10010];int min(int x,int y){ return x>y?y:x;}int max(int x,int y){ return x>y?x:y;}int cal(int

2013-04-18 19:08:42 540

原创 10069 - Distinct Subsequences

描述:可恶的奇葩题,不但要求记忆化搜索,而且还要求高精度,大数据 10^100,真受不了,非得开了个大数才解决的,开小数还超时#include #include #define N 100000000char str[10010],s[110];int v[110][10010][13],len[110][10010];int max(int x,int y){ return

2013-04-17 14:55:53 814

原创 825 - Walking on the Safe Side

描述:计算从点(1,1)到点(n,m)一共有多少条路径#include #include int arr[110][110];int main(){ // freopen("a.txt","r",stdin); int t,n,m,len; scanf("%d",&t); while(t--) { memset(arr,0,sizeo

2013-04-16 16:33:25 540

原创 620 - Cellular Structure

描述:这道题具体是怎么回事,我也不清楚,先看看这位大神的题解吧http://hi.baidu.com/knowledgetime/item/1e890017baa663fd87ad4eb5#include #include int main(){ // freopen("a.txt","r",stdin); int n,len; char s[10010];

2013-04-15 22:24:41 662

原创 10404 - Bachet's Game

描述:博弈题目,第一次看这种题,实在不,明白什么意思,后来才知道是博弈题目,由于是巴什博弈(Bash Game)。(i=1;i=0,num[i-arr[j]]==0则代表Stan可以移动石块,数组num标记为1,(开始时全部初始化为零,num[0]=1,零代表Ollie刚刚在此处移动数组),直到出现num[n]为1时,终止循环,此时就可以输出Stan wins,否则最后就输出Ollie wins

2013-04-15 20:46:08 671

原创 437 - The Tower of Babylon

描述:给出n种长方体,每种长方体无数个,将这些长方体按照长和宽依次递减的趋势依次增加高度,求最大的高度是多少#include #include int n,m,t,sum;int arr[100][3];int max(int x,int y){ return x>y?x:y;}void swap(int &x,int &y){ if(x>y) {

2013-04-14 13:06:45 526

原创 10285 - Longest Run on a Snowboard

描述:寻找一个数,从这个数上、下、左、右四个方向寻找一堆数,使之为递增或者递减数列,输出这个数列的个数#include #include int n,m,t,sum;int arr[110][110],visit[110][110],num[110][110];char s[110];int max(int x,int y){ return x>y?x:y;}int df

2013-04-14 00:47:46 894

原创 10465 - Homer Simpson

描述:输入三个数n,m,t,寻找一堆n和m,使之和为t,如果不存在,那么则寻找最接近(小于等于)t的数,并求出此时所包含的最多的n与m的个数和这个数与t的差值,并输出这两个数#include int main(){ // freopen("a.txt","r",stdin); int n,m,t,count,sum,flag,pos,v; while(scanf("%d

2013-04-13 14:36:53 594

原创 531 - Compromise

描述:比较最长子序列,然后输出这个最长子序列#include #include int n,m,flag,arr[110][110],num[110][110];char str[110][35],v[110][35];void show(int x,int y){ if(x==n||y==m) return; if(num[x][y]==1) {

2013-04-13 10:43:38 560

原创 10130 - SuperSale

描述:水题不解释#include #include int t,n,m,sum,p,q;int arr[1010][2],w[110],v[50010][2];int main(){ // freopen("a.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d",&n);

2013-04-12 16:26:28 665

原创 624 - CD

描述:题意:输入两个数n,m和m个数,计算一堆数的和,寻找最接近n并且小于n的数,找到后把凑成这个和的数全部输出即可#include #include struct Cd{ int flag; int pos;};Cd count[50010];void show(int x){ if(x) show(count[x].pos); if(x)prin

2013-04-12 12:34:10 557

原创 348 - Optimal Array Multiplication Sequence

描述:状态转移方程min(v,dp(x,i)+dp(i+1,y)+num[x][0]*num[i][1]*num[y][1]);数据量只有10,不大,主要是存储步骤#include #include int num[15][2],s[15][15],count[15][15];int dp(int x,int y){ int &v=count[x][y]; if(v) r

2013-04-11 21:51:40 688

原创 562 - Dividing coins

描述:把硬币平分成两份,寻找与平均数差值最小的就可以#include #include bool s[50010];int num[110];int main(){ int n,t,sum,flag,p,m; // freopen("a.txt","r",stdin); scanf("%d",&t); while(t--) { sc

2013-04-10 13:59:38 537

原创 357 - Let Me Count The Ways

描述:这道题还好,相比起上一题没有精度问题#include long long s[30010];int v[6]= {1,5,10,25,50};void solve(){ s[0]=1; for(int i=0; i<5; i++) for(int j=v[i]; j<30010; j++) s[j]+=s[j-v[i]];}

2013-04-08 16:14:53 647

原创 147 - Dollars

描述:可恶的精度问题,真让人受不了了了了了……#include long long s[6010];int v[13]= {1,2,4,10,20,40,100,200,400,1000,2000};void solve(){ s[0]=1; for(int i=0; i<11; i++) for(int j=v[i]; j<6010; j++)

2013-04-08 16:06:11 551

原创 10192 - Vacation

描述:依然是最长子序列问题……#include #include int max(int a,int b){ if(a>b) return a; else return b;}char str[2][110];int s[110][110];int main(){ //freopen("a.txt","r",stdin); int n,m,flag

2013-04-08 14:49:30 631

原创 10066 - The Twin Towers

描述:查找最长子序列问题,前面好几道都是这样的题#include #include int max(int a,int b){ if(a>b) return a; else return b;}int num[110][2],s[110][110];int main(){ //freopen("a.txt","r",stdin); int n,m,f

2013-04-08 14:37:03 688

原创 10131 - Is Bigger Smarter?

描述:题意很简单,先快排一下,然后从中选择即可,因为我觉得只用数组有些麻烦,所以用了结构体#include #include struct Ele{ int We; int Iq; int sum; int next; int pos;};Ele count[1010];int cmp(const void *p1 ,const void *p

2013-04-08 13:45:14 597

原创 116 - Unidirectional TSP

描述:实际就是从这个数组找最小,状态方程是:s[i][j]+=min(min(s[a][j+1],s[b][j+1]),s[c][j+1]);但是难得不是这,而是寻找一条路径满足行坐标尽量的小,只能从右往左找了#include #include int min(int a,int b){ if(a>b) return b; else return a;}int main

2013-04-07 18:40:31 854

原创 10003 - Cutting Sticks

描述:题目难度为 2,将一条长为n的木棍切成m+1块,但是切割顺序不同,寻找状态方程s[x][y]=min(s[x][y],s[x][i]+s[i][y]+s[y]-s[x]);然后就可以敲代码了代码一(递归,耗时较多):#include #include int num[55],s[55][55];int min(int a,int b){ if(a>b) return b;

2013-04-06 20:37:41 1011

原创 674 - Coin Change

描述:dp问题,需要状态转移,并且还需要统计,如果每次都要进行计算的话,也会超时的#include int num[7500];int main(){ // freopen("a.txt","r",stdin); int n,v[6]= {1,5,10,25,50}; num[0]=1; for(int i=0; i<5; i++) for(i

2013-04-05 10:52:50 652

原创 10405 - Longest Common Subsequence

描述:要命的题,回车也算字符,只要是字符就要算才行,绝不能用scanf读取字符串#include #include #define N 1010char str[N],s[N];int num[N][N];int main(){ // freopen("a.txt","r",stdin); while(gets(str)) { gets(s);

2013-04-04 15:55:46 642

原创 103 - Stacking Boxes

描述:像刘汝佳书上一样需要转化成有向图,然后再统计路最长的就可以了#include #include #include #define N 32int n,m,sum;int num[N][12],s[N],pos[N];bool next[N][N];int cmp(const void *p1,const void *p2){ return *(int *)p1 -

2013-04-04 15:01:34 509

原创 111 - History Grading

描述:题意倒是挺难理解的:给出一个整数n,下一行有n个数,这是正确答案,但是需要转化一下 10 3 1 2 4 9 5 10 6 8 7 ->代表第一件事发生在下标3,第二件事发生在下标1,第三件事发生在下标2……-> 2 3 1 4 6 8 10 9 5 7,以后的输入都要转化,并且和第一次输入的作比较,查找两个数组最大的子序列,输出最大子序列个数#include #include int

2013-04-04 10:34:13 863

原创 10148 - Advertisement

描述:区间选点问题,刘汝佳书上有这题,自己看看就会了#include #include #include int s[1010][2];bool str[20010];int cmp(const void *p1,const void *p2){ if(((int *)p1)[1] > ((int *)p2)[1]) return 1; else if(((int *

2013-04-03 16:06:11 718

原创 757 - Gone Fishing

描述:暴力+贪心,先定向选择依次只能到达第一个湖、第二个湖……最后一个湖,就会变成选择最优解问题,选择和最大的就可以了,注意有可能数据都是为零的时候,这是把所有的时间都用在第一个湖就可以了#include #include int main(){ // freopen("a.txt","r",stdin); int t[30],f[30],d[30],s[30]; i

2013-04-03 14:11:52 589

原创 10827 - Maximum sum on a torus

描述:比上一题还要麻烦的题,不过改进了方法,比上一题耗时还要少,先把输入的数组复制成三分,分别在右,下,右下三个地方,然后计算从0下标到当前下标的和,然后再暴一下就可以了#includeint main(){ // freopen("a.txt","r",stdin); int t,n,count,sum; int num[160][160]; scanf("%

2013-04-01 19:10:02 887

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除