设为首页 加入收藏

TOP

ZOJ 3789 Abs Problem
2015-07-20 17:45:48 来源: 作者: 【 】 浏览:2
Tags:ZOJ 3789 Abs Problem

有时候像这种题,没有明显的思路,感觉像规律题。那么先暴力打表,再找规律就很快了。

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3798

先上我的暴力打表,这种肯定是TLE的,只用它发现规律就好了。

#include
  
   
#include
   
     #include
    
      #define INF 0x3f3f3f3f #define N 100 using namespace std; int f[N]; int mi[N],ma[N]; int cal(int n) { int p=1; for(int i=1;i<=n;i++) p*=i; return p; } int main() { int n; while(scanf("%d",&n)==1) { for(int i=1;i<=n;i++) f[i]=i; int k=cal(n),Min=INF,Max=-INF; for(int i=0;i
     
      =Max) { Max=b; for(int i=1;i<=n;i++) ma[i]=f[i]; } } printf("%d %d\n",Min,Max); for(int i=1;i<=n;i++) printf("%d ",mi[i]); puts(""); for(int i=1;i<=n;i++) printf("%d ",ma[i]); puts(""); } return 0; }
     
    
   
  

多输入几个N,就能发现,逆序得到最小的,把逆序中最大的n放到最后就能得到最大的。

故简单题,水之~

#include
  
   
#include
   
     #define N 50000+5 using namespace std; int f[N]; int main() { int n; while(scanf("%d",&n)==1) { for(int i=1;i<=n;i++) f[i]=i; int Min=0,Max=0; for(int i=n;i>0;i--) Min=abs(Min-f[i]); for(int i=n-1;i>0;i--) Max=abs(Max-f[i]); Max=abs(Max-f[n]); printf("%d %d\n",Min,Max); for(int i=n;i>1;i--) printf("%d ",f[i]); printf("%d\n",f[1]); for(int i=n-1;i>0;i--) printf("%d ",f[i]); printf("%d\n",f[n]); } return 0; }
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 2028 When Can We Meet? (又.. 下一篇C++ 性能剖析 (四):Inheritanc..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·你必须要弄懂的多线 (2025-12-25 04:22:35)
·如何在 Java 中实现 (2025-12-25 04:22:32)
·Java【多线程】单例 (2025-12-25 04:22:29)
·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)