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

Saffah's Blog

 
 
 

日志

 
 

BestCoder Round #19 命题报告  

2014-11-24 13:11:09|  分类: BestCoder |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
BestCoder Round #19 命题报告

不写了= =因为发现写出来跟解题报告都是一样一样的……
直接去http://bestcoder.hdu.edu.cn看好了……

贴代码:

1001 Alexandra and Prime Numbers (HDU 5108)
#include <cstdio>

inline int maxdiv(int x){
    int ans;
    for(int i = 2; i * i <= x; ++i) if(x % i == 0){
        ans = i;
        while(x % i == 0) x /= i;
    }
    if(x > 1) return x; else return ans;
}

int main(){
    int n;
    while(scanf("%d", &n) != EOF)
        if(n == 1) printf("0\n");
        else printf("%d\n", n / maxdiv(n));
    return 0;
}
1002 Alexandra and A*B Problem (HDU 5109)
#include <cstdio>
#include <cstring>
#define f(x, y, z) for(int x = (y); x <= (z); ++x)

typedef long long LL;
LL pow10[18];

int a, s, sl; char ss[16];

inline LL minfront(int backlen){
    int base = (ss[0] == '0');
    for(int front = base; front <= a; ++front){
        LL ffront = ((LL) front * pow10[sl] + (LL) s) * pow10[backlen];
        int back = (a - ffront % (LL) a) % a;
        if(back < pow10[backlen]) return (ffront + (LL) back) / (LL) a;
    }
    return 0x1f1f1f1f1f1f1f1fLL;
}

int main(){
    pow10[0] = 1;
    f(i, 1, 17) pow10[i] = pow10[i - 1] * 10LL;
    while(scanf("%d%s", &a, ss) != EOF){
        sl = strlen(ss); sscanf(ss, "%d", &s);
        LL ans = 0x1f1f1f1f1f1f1f1fLL;
        f(backlen, 0, 4){
            LL c = minfront(backlen);
            if(c < ans) ans = c;
        }
        printf("%I64d\n", ans);
    }
    return 0;
}
1003 Alexandra and COS (HDU 5110)
#include <cstdio>
#define f(x, y, z) for(int x = (y); x <= (z); ++x)

int n, m, q;
int a[1008][1008], sa[1008][1008], sar[1008][1008], ans[32][1008][1008];
char buf[1008];

inline int getans(int x, int y, int d){
    int ans = 0;
    for(int i = x, l = y, r = y; i > 0; i -= d, l -= d, r += d){
        if(l < 1) l = 1; if(r > m) r = m;
        ans += sa[i][r] - sa[i][l - 1];
    }
    // printf("getans %d %d %d = %d\n", x, y, d, ans);
    return ans;
}

inline void read(int &x){
    char c = getchar();
    while(c < '0') c = getchar();
    x = c - '0'; c = getchar();
    while(c >= '0'){
        x = x * 10 + (c - '0'); c = getchar();
    }
}
char asdf[256], *cb = asdf;
inline void writeln(int x){
    if(x){
        while(x){
            *(cb++) = x % 10 + '0'; x /= 10;
        }
        while(cb != asdf) putchar(*(--cb));
    }else putchar('0');
    putchar('\n');
}

int main(){
    while(scanf("%d%d%d", &n, &m, &q) != EOF){
        f(i, 1, n){
            scanf("%s", buf + 1);
            f(j, 1, m) a[i][j] = (buf[j] == 'X');
        }
        f(i, 1, n){
            sa[i][0] = 0;
            f(j, 1, m) sa[i][j] = sa[i][j - 1] + a[i][j];
        }
        f(d, 1, 30){
            f(i, 1, n) f(j, 1, m){
                int til = j + d * 2;
                if(til <= m) sar[i][j] = sa[i][til] - sa[i][j];
                else sar[i][j] = sa[i][m] - sa[i][j];
                if(i - d > 0 && j + d <= m) sar[i][j] += sar[i - d][j + d];
                // printf("sar %d %d %d = %d\n", d, i, j, sar[d][i][j]);
            }
            f(i, 1, n) f(j, 1, m){
                if(i - d > 0 && j - d > 0) ans[d][i][j] = ans[d][i - d][j - d] + sar[i - d][j - d] + a[i][j]; else ans[d][i][j] = getans(i, j, d);
                // printf("ans %d %d %d = %d\n", d, i, j, ans[d][i][j]);
            }
        }
        while(q--){
            int x, y, d; read(x); read(y); read(d);
            if(d <= 30) writeln(ans[d][x][y]); else writeln(getans(x, y, d));
        }
    }
    return 0;
}
1004 Alexandra and Two Trees (HDU 5111)
先不贴……AC人数太少了QAQ贴出来容易出问题
  评论这张
 
阅读(243)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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