[水]浙大校赛补题

本来以为会巨难无比又有别的比赛可以打于是赛后补题,结果发现似乎略水,反正是找到了四个水题先贴下来

ZOJ-4099    J

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
int t;
ll x, y, n;

int main()
{
    cin >> t;
    while (t--) {
        scanf("%lld",&n);
        x = n * 8;
        y = n * 9;
        printf("%lld %lld\n",x,y);
    }
    return 0;
}

ZOJ-4099

  找相差给出数的两个合数。所以找两个最小的相差为一的合数就好了。

ZOJ-4090    A

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
pair<int, int>g[100005], b[100005];
int n, m, t;

int main()
{
    cin >> t;
    while (t--) {
        scanf("%d%d",&n,&m);
        int b0 = 0, g0 = 0;
        for (int i = 0; i < n; i++)scanf("%d", &b[i].second);
        for (int i = 0; i < m; i++)scanf("%d", &g[i].second);
        for (int i = 0; i < n; i++) {
            scanf("%d", &b[i].first);
            if (!b[i].first)b0++;
        }
        for (int i = 0; i < m; i++) {
            scanf("%d", &g[i].first);
            if (!g[i].first)g0++;
        }
        sort(b, b + n);
        sort(g, g + m);
        int ans = 0;
        int now = g0;
        for (int i = 0; i < b0&&now<m; i++)
            if (b[i].second > g[now].second) {ans++; now++;}
        now = b0;
        for(int i=0;i<g0&&now<n;i++)
            if (b[now].second < g[i].second) {ans++;now++;}
        cout << ans << endl;
    }
    return 0;
}

ZOJ-4090

  匹配高矮舞伴。按身高排序,给不同需求排一遍,完了。

ZOJ-4094    E

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n, t;
int a[105], b[105];

int main()
{
    cin >> t;
    while (t--) {
        scanf("%d", &n);
        for (int i = n - 1; i >= 0; i--)scanf("%d", &a[i]);
        for (int i = n - 1; i >= 0; i--)scanf("%d", &b[i]);
        long long tp = 0;
        bool falg = 1;
        for (int i = 0; i < n; i++) {
            if (b[i] + tp < a[i]) { falg = 0; break; }
            tp += b[i] - a[i];
        }
        if (!falg)cout << "No" << endl;
        else cout << "Yes" << endl;
    }
    return 0;
}

ZOJ-4094

  异常水,异常wa了很多次,变量名用重复了orz

ZOJ-4096    G

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n, t,k;
int a[100005],b[100005];

int main()
{
    cin >> t;
    while (t--) {
        scanf("%d%d", &n,&k);
        int ma = -1;
        int l = 0, r = 0,tp;
        for (int i = 0; i < n; i++) {
            scanf("%d", &tp);
            if (tp < 0)b[l++] = -tp;
            else a[r++] = tp;
            ma = max(ma, abs(tp));
        }
        sort(a, a + r);
        sort(b, b + l);
        long long ans = 0;
        for (int i = r - 1; i >= 0; i -= k)ans += a[i] * 2;
        for (int i = l - 1; i >= 0; i -= k)ans += b[i] * 2;
        ans -= ma;
        cout << ans << endl;

    }
    return 0;
}

ZOJ-4096

  有一点需要思考了呢。

  首先送信回来取信路程是乘2的,但是终结工作可以在送信地点,那么最远的地方就最后一次送。

  其次,近的地方可以去远的地方的时候顺路去,不然就要重复走好几次。

  最后,因为是往轴的两边送信,要分两边算。

  所以,跳k个加个双倍,最后把最大值减掉一个就完成了。(?•??•?)??

那就先这样吧。

原文地址:https://www.cnblogs.com/non-/p/10863442.html

时间: 2024-11-12 17:55:26

[水]浙大校赛补题的相关文章

CSU 1425 NUDT校赛 I题 Prime Summation

这个题本来有希望在比赛里面出了的 当时也想着用递推 因为后面的数明显是由前面的推过来的 但是在计算的时候 因为判重的问题 ...很无语.我打算用一个tot[i]来存i的总种树,tot[i]+=tot[j]//j为可以由j推到i的一系列数,但这样是不对的,会产生大量重复计算... 看了下标程才发现要用二维来计算出种类总数,f[i][j]+=sum(f[i-j][k]) 表示在推i数的时候,第一个素数为j的种类数,注意j一定为素数,而且k不能大于j...标程里面处理的比较简练,就学了下他的写法. 至

[2015hdu多校联赛补题]hdu5371 Hotaru&#39;s problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-sequence,现在给你一个数字串,问你这个串中最长的N-sequence子串长度 解:可以想到A-A是一个回文串,-AA也是一个回文串,那么首先Manacher跑一遍求出所有回文子串 可以想到任意两个互相覆盖的回文子串都可以表示成N-sequence 然后有三种搞法: 1.时间复杂度O(N*logN

[2015hdu多校联赛补题]hdu5348 MZL&#39;s endless loop

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1,如果无解输出-1 解:考虑奇数度的点一定会成对出现(因为所有度数和肯定是偶数个->因为一条边产生两度~),那么我们可以将奇数度的点两两一连消除掉(两奇数度点的出度入读差的绝对值都为1, 路径上的点的差绝对值为0) 然后偶数度的点可以成环,那么可以搜出所有的环 1 /* 2 * Problem: 3

第十届山东省acm省赛补题(2)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second      Memory Limit: 65536 KB Recall the definition of the median of  elements where  is odd: sort these elements and the median is the -th largest element.

PKU2018校赛 H题 Safe Upper Bound

http://poj.openjudge.cn/practice/C18H 题目 算平均数用到公式\[\bar{x}=\frac{x_1+x_2+x_3+\cdots+x_n}{n}\] 但如果用int型计算,那么\(x_1+x_2+x_3+\cdots+x_n\)可能会超过\(2^{31}-1\) 算6个数的平均数可以这么算 Calculate the average of\(x_1,x_2,x_3\)\[\bar{x}_1=\frac{x_1+x_2+x_3}{3}\]Calculate t

2019浙大校赛--J--Extended Twin Composite Number(毒瘤水题)

毒瘤出题人,坑了我们好久,从基本的素数筛选,到埃氏筛法,到随机数快速素数判定,到费马小定理,好好的水题做成了数论题. 结果答案是 2*n=n+3*n,特判1,2. 以下为毒瘤题目: 题目大意: 输入一个数n, 输出两个合数(即非素数)a,b 实现 n+a=b 解题思路 3n=n+2n; 特判1.2 代码: 1 #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 typedef long long ll; 5

15th浙大校赛 zoj3860-3868

比赛链接: here 题目对应到ZOJ3860~3868 A Find the Spy 水 #include<cstdio> #include<map> #include<cstring> #include<iostream> using namespace std; map<int,int>mp; map<int,int>::iterator it; int main() { int T,n,x; scanf("%d&qu

2018WFU校赛B题

我们在ACM的题目中已经了解了什么是ACM了,ACM还是很残酷的了(? _ ?),那么现在你就要解决一个ACM最简单的题了,简单到省赛和区域赛都不会出这种简单的题.ls很强,即使每年都在ACM这个大坑里,但是他依旧关心自己的排名.但是排名规则真的很令人烦恼,因为它是按平均分排的并且他们学习的科目数量是不一定的.所以你的任务就来了,ls的班里有n名同学,每个同学有3门课程,现在你要根据他们的成绩总和从大到小排名如果成绩相同则按他们名字的字典序(字典序当然就是字典的顺序啦)排名. Input 第1行

[2015hdu多校联赛补题]hdu5302 Connect the Graph

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5302 题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w0,度为1的点数w1,度为2的点数w2,与黑边图中度为0的点数b1,度为1的点数b1,度为2的点数b2,要你输出任意一个符合条件的原图,如果不能,输出-1 (注1:无论是黑边图,还是白边图,给出的