zoukankan      html  css  js  c++  java
  • 2019年1月31日训练日记

    今天做的题目比较少,发现不会的有点多。。。
    今天写两个题目:2129逆置换,2119 吃龙虾。

    2129逆置换

    输入一个1到n的排列,p[1], p[2], …, p[n],
    即1到n都出现了1次的一个长度为n的数组p。
    对于每个满足1 <= i <= n的i,求下标j使得p[j] = i。
    1 <= n <= 100000
    输入
    第一行一个整数n,表示排列长度
    接下来n行,每行一个整数p[i],表示排列的内容。
    输出
    第一行输出一个排列长度n,为了方便造数据。
    输出共n行,其中第i行包含一个整数j,使得p[j]=i。
    输入样例

    4
    4
    3
    1
    2
    

    输出样例

    4
    3
    4
    2
    1
    

    代码一:

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<iomanip>
    using namespace std;
    int a[100001];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        cin>>a[i];
        cout<<n<<endl;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(a[j]==i)
                cout<<j<<endl;
                continue;
            }
        }
        return 0;
    }
    

    超时。。。

    代码二:

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<vector>
    using namespace std;
    int main()
    {
        int n;
        int a[100001],b[100001];
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            b[a[i]]=i;
        }
        cout<<n<<endl;
        for(int i=1;i<=n;i++)
            cout<<b[i]<<endl;
        return 0;
    }
    

    2119 吃龙虾

    小瓜非常喜欢吃龙虾,一个阳光明媚的星期天早晨,他来到海鲜市场采购龙虾。海鲜市场里一共有n只龙虾,每只龙虾重ai克。由于小瓜非常挑剔,他只吃重大于等于m克的龙虾,于是他打算把所有重大于等于m克的龙虾买回家。请你帮小瓜算一下他一共将会买多少克龙虾。
    输入
    第一行两个整数n(1<=n<=100000),m(1 <=m <= 100000),表示市场中有n只龙虾,小瓜只吃重大于等于m克的龙虾。
    接下来n行,每行一个整数ai(0<=ai<100000),表示第i只龙虾重ai克。
    输出
    一行一个整数,表示小瓜最后一共会买的龙虾的克数。
    输入样例

    5 5
    4
    6
    2
    3
    8
    

    输出样例

    14
    

    代码如下:

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<iomanip>
    using namespace std;
    int h[100001];
    int main()
    {
        int a,b;
        long long s=0;
        cin>>a>>b;
        for(int i=1;i<=a;i++)
            cin>>h[i];
        for(int i=1;i<=a;i++)
        {
            if(h[i]>=b)
                s+=h[i];
        }
        cout<<s<<endl;
        return 0;
    }
    

    此题代码中的s要定义为long long 形式,定义为int有一组数据越界了,会出现错误。
    其中那组数据好大。。。
    本想复制粘贴一下。。。无奈数据太多太大,网页直接卡死。。。

  • 相关阅读:
    转载:史上最全|阿里那些牛逼带闪电的开源工具,你知道几个?
    互怼、IPO、雷潮、寒冬,2018 互联网圈的那些事儿
    微信迎来又一次重大改版 7.0 版本
    公众号文章目录
    聊几个与赚钱相关的小事情
    使用docker Registry快速搭建私有镜像仓库
    开源组件ELK日志系统配置与管理
    Mysql MHA高可用集群架构
    强大的开源企业级数据监控利器Lepus安装与配置管理
    关于下载gitbash客户端
  • 原文地址:https://www.cnblogs.com/study-hard-forever/p/12130070.html
Copyright © 2011-2022 走看看