广州花都网站建设网络推广代理怎么做
写了两道题
刚开始用的之前做组合输出的方法,时间超限了,想不出怎么优化,后面看了题解,代码如下
#include <stdio.h>
#include <stdlib.h>
int n,min=2e9;
int a[11],b[11];
//搜索
void hly(int s,int x,int y)
{//当s>n时搜索完毕if(s>n){//检查是否为清水if(x==1&&y==0)return;//更新最小值if(min>abs(x-y))min=abs(x-y);return;}//添加该配料hly(1+s,x*a[s],y+b[s]);//不添加该配料hly(1+s,x,y);return;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d",&a[i],&b[i]);}//搜索hly(1,1,0);printf("%d\n",min);return 0;
}
固定了正方形的右下角(i,j),此时答案为Min(i,j),枚举求和。
同理,固定矩形右下角(i,j),显然此时矩形个数为i*j。
得出答案
#include <stdio.h>
#include <stdlib.h>
int min(int a,int b)
{if(a<b)return a;return b;
}
int main()
{int n,m,i,j;long long x=0,y=0;scanf("%d %d",&n,&m);for(i=1;i<=n;i++){for(j=1;j<=m;j++){x+=min(i,j);y+=i*j;}}printf("%lld %lld\n",x,y-x);return 0;
}