12-24 tyvj水题记录(1019-1022)

Dec 24, 2016


“明明说好的已弃ACM了么?”

“然而看到水题根本控制不住双手T^T…正好c语言考试马上要来了, 没事刷刷水题”

tyvj是不兹词Chrome了么..登录不上, 于是手动评测(AC滑稽脸), 发现AC不了的话千万不要来找我(逃)

题目

http://www.tyvj.cn/p/1019

http://www.tyvj.cn/p/1020

http://www.tyvj.cn/p/1021

http://www.tyvj.cn/p/1022

第22题就不做了, 这个我以前做过一个万能转换器, 在我Github的datastructure的OperationPinciple里面

这几道题都是水题…一共做完没超过15分钟…

题解

1019

两个集合排序之后, 大对小进行映射, 然后加到答案里面就好了

答案:

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
int a[10005], b[10005];
int i, j, ans;
int main()
{
    scanf("%d", &n);
    for(i = 1; i <= n; ++i)
        scanf("%d%d", &a[i], &b[i]);
    sort(a + 1, a + n);
    sort(b + 1, b + n);

    for(i = 1; i <= n ; ++i)
        ans += abs(a[i] - b[n - i + 1]);
    printf("%d", ans);
    return 0;
}


1020

对每个数直接找最大质因数, 一次遍历下来就ok了

#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n, ma, ans;
int i, j, k;
bool isprime(int x){
    if(x <= 1) return false;
    for(j = 2; j <= sqrt(x); ++j)
        if(x % j == 0) return false;
    return true;
}
int g(int x){
    for(k = x - 1; k >= 2; --k)
        if(x % k == 0 && isprime(k)) return k;
}
int main(){
    scanf("%d", &n);
    for(i = 1; i <= n; ++i){
        int num;
        scanf("%d", &num);
        if(ma < g(num)){
            ma = g(num);
            ans = num;
        }
    }
    printf("%d", ans);
    return 0;
}


1021

每新加一条线段, 都要与之前所有的线段产生贡献, 于是每次输入的时候加上去就好了呀~

#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n, ans;
int d[10005];
int i, j;
int main()
{
    scanf("%d", &n);
    for(i = 1; i <= n; ++i){
        scanf("%d", &d[i]);
        for(j = i - 1; j >= 1; --j)
            ans += abs(d[i] - d[j]);
    }
    printf("%d\n", 2 * ans);
    return 0;
}

1022

我曾经写过n进制转换m进制的东西