注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水居

云在青山水在天,人在江湖不得闲

 
 
 

日志

 
 

灵异,又见灵异USACO5.2  

2010-07-08 12:28:56|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查看全文


第一次是GPU的Cg编程,里面用了一个while(true),结果只循环了若干次,还没满足break的每件就退出了。又不会调试,百思不得其解,最后无奈下查Cg手册,终于发现是Cg编译器对while(true)进行优化,悄悄地把while(true)改成了一个循环。
今天又灵异了,USACO的5.2题fence3,用了一个递归函数,本机调试也通过,运行也成功了,可是一提交就报运行超时,万般无奈下加了一句计算递归层数的代码,结果竟然通过了!!!
    if(++hjz>1000){
        fout<<"Holishit"<<endl;
        return;
    }
很明显,从来没有执行到这里过,因为如果执行到这里,肯定答案会出错,但就是加了这么一句没用的代码,USACO就通过了,否则总报超时!!

#include <iostream>
#include <fstream>
#include <iomanip>
#include <climits>
#include <algorithm>
#include <cmath>
using namespace std;

//mountain climbing, unable to prove it works, but it works.
//but it does NOT work in USACO
ifstream fin("fence3.in");
ofstream fout("fence3.out");
int N;
int midx,midy;
double best,oldlen;
struct point{
    int sx,sy;
    int ex,ey;
}p[150];
bool used[1000][1000];

struct d{
    int x,y;
}dirs[8]={ {-1,-1},{-1,0},{-1,1}, {0,-1}, {0,1}, {1,-1},{1,0},{1,1}};

inline double dist(int ix,int iy){
    double x = (double)ix/10,
           y = (double)iy/10;
    double res=0;
    for(int i=0;i<N;i++){
        if(p[i].sx<x && p[i].ex>x){
            res+=abs(p[i].sy-y);
        }
        else if(p[i].sy<y && p[i].ey>y){
            res+=abs(p[i].sx-x);
        }
        else{
            double dx=min(abs(p[i].sx-x), abs(p[i].ex-x)),
                   dy=min(abs(p[i].sy-y), abs(p[i].ey-y));
            res+=sqrt(dx*dx+dy*dy);
        }
    }
    return res;
}
void mountainclimb(){
    //current state
    //Jessus, who can tell me what is the problem
    static int hjz=0;
    if(++hjz&

查看全文

  评论这张
 
阅读(597)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018