USACO 3.4 Electric Fence

用一根平行x轴的直线扫描三角形,求交点,然后计算中间点的数,求和即可。

#include <iostream>
#include 
<fstream>
#include 
<cmath>

using namespace std;

ifstream fin(
"fence9.in");
ofstream fout(
"fence9.out");

#ifdef _DEBUG
#define out cout
#define in cin
#else
#define out fout
#define in fin
#endif

void solve()
{
    
int n,m,p;
    
in>>n>>m>>p;

    
int res = 0;

    
int s,e;
    
for(int y=1;y<m;++y){
        s 
= n*y/m+1;
        e 
= ( y*(n-p)%m==0 ) ? (y*(n-p)/m-1+p) : floor(((double)y*(n-p)/m)+p);
      
//  out<<y<<" "<<s<<" "<<e<<endl;
        res += max(0,(e-s+1));
    }

    
out<<res<<endl;
}

int main(int argc,char *argv[])
{
    solve(); 
    
return 0;
}



posted on 2009-07-10 22:19 YZY 阅读(324) 评论(0)  编辑 收藏 引用 所属分类: AlgorithmUSACO


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

积分与排名

最新评论

阅读排行榜