zoukankan      html  css  js  c++  java
  • EOJ Monthly 2018.3

    985月赛我只喜欢ECNU.jpg

    A. 打工时不可能打工的

    Time limit per test: 2.0 seconds

    Memory limit: 256 megabytes

    我 Ayano 就是破产,吃白菜,从这里跳下去,也绝对不打一天工!

    然而现实是,没有钱就还是得打工的,否则生活无法继续啊。

    现在你已经身无分文,信用卡也不欠钱,n 天后就是你的信用卡最后还款期,你必须在第 n 天结束时还清所有的借款。(这 n天里你通过信用卡借的款项也必须在那时还清)你知道接下来 n 天每天打工的收入 ai 和你预计的开销 bi,你想要打尽量少天数的工,又不至于破产。

    每天的开销是一定发生的,打工只能按天为单位打工。

    Input

    第 1 行包含一个整数 n 表示总天数。(1n200 000
    第 2 行包含 n 个整数,第 i 个整数表示 ai
    第 3 行包含 n 个整数,第 i 个整数表示 bi。(1ai,bi100 000

    Output

    如果你在 n 天后能还清信用卡,输出最少的打工天数;如果不能,输出 Game Over!

    Examples

    input
    3
    1 2 3
    1 1 1
    
    output
    1

    就是你要还的钱是一定的,选择钱最多的天打工就是了

    #include<bits/stdc++.h>
    using namespace std;
    const int N=200005;
    int a[N];
    int main()
    {
        ios::sync_with_stdio(false);
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>a[i];
        long long s=0;
        for(int i=0,x;i<n;i++)
            cin>>x,s+=x;
        sort(a,a+n);
        long long f=0;
        for(int i=0;i<n;i++)
        {
            f+=a[n-i-1];
            if(f>=s)
            {
                cout<<i+1<<"
    ";
                return 0;
            }
        }
        cout<<"Game Over!
    ";
        return 0;
    }
    B. 蛇形矩阵

    Time limit per test: 2.0 seconds

    Memory limit: 256 megabytes

    蛇形矩阵是我最喜欢的矩阵之一。n 阶蛇形矩阵由前 n2 个正整数顺时针从外到内盘绕而成。

    例如四阶具有如下形式:

    1  2  3  4
    12 13 14 5
    11 16 15 6
    10 9  8  7
    

    五阶(奇数阶数)在中心位置略有不同:

    1  2  3  4  5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9
    

    由于这种盘绕的方式过分诡异,无法简单的用数学语言表示。所以无聊又过分的出题人想让你算出这个矩阵每一行的和。

    Input

    输入一个整数 n (1n200 000)。

    Output

    输出 n 行 n 个整数,依次为每一行的和。

    Examples

    input
    4
    
    output
    10
    44
    48
    34
    
    input
    5
    
    output
    15
    76
    91
    88
    55
    
    input
    1
    
    output
    1

    这个规律还是很好找的,就是等差数列啊,然后每次取首尾两个求一下前缀和,因为一个+1一个-1所以那个和是相等的

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=200005;
    ll a[N];
    int main()
    {
        int n;
        cin>>n;
        ll l=1,r=n,f=n,s=0;
        a[1]=(l+r)*f/2;
        a[n]=a[1]+(f-1)*2*f;
        for(int i=2;i<=(n+1)/2;i++)
        {
            s+=r;
            l+=4*f-4,f=f-2,r=l+f-1;
            s+=l;
            a[i]=s+(l+r)*f/2;
            a[n-i+1]=a[i]+(f-1)*2*f;
        }
        for(int i=1;i<=n;i++)
            cout<<a[i]<<"
    ";
    
    }
  • 相关阅读:
    Win7 华硕电脑自带摄像头无法打开 方法思路介绍
    P3520 [POI2011]SMI-Garbage
    二分图的最大匹配(模板)
    #数列分块入门 2
    数列分块入门#1
    线段树(标记下传乘法和加法)
    最小费用最大流
    最大流算法(模板)
    编译器出现/mingw32/bin/ld.exe:Permission denied 错误
    1298 圆与三角形
  • 原文地址:https://www.cnblogs.com/BobHuang/p/8688565.html
Copyright © 2011-2022 走看看