首页 > 其他分享 >【LGR-182-Div.4】洛谷入门赛 #22

【LGR-182-Div.4】洛谷入门赛 #22

时间:2024-04-19 21:12:39浏览次数:28  
标签:10 洛谷 22 int cin 182 using const include

题源:【LGR-182-Div.4】洛谷入门赛 #22

目录

A 疯狂大减价

分析:两张票的先后顺序枚举一下,求出最小值。

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int n, k, ans;

int main(){
    cin>>n;
    int a = n, b = n;
    if(a >= 100) a -= 20;
    if(a >= 200) a -= 50;

    if(b >= 200) b -= 50;
    if(b >= 100) b -= 20;
    cout<<min(a,b);
    return 0;
}

B ZngivaeL 的中考

分析:之间模拟,但是代码可能较为麻烦,运用前缀和思想
s[0] -- 表示 A 的数量
s[1] -- 表示 A~B 的数量
s[2] -- 表示 A~C 的数量
s[3] -- 表示 A~D 的数量
之后怎么做,相信不用多说了吧!

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;

int main(){
    string s;
    while(cin>>s){
        int st[27]={0};
        for(int i=0; i<s.size(); i++) st[s[i]-'A'] ++;
        for(int i=1; i<4; i++) st[i] += st[i-1];

        if(st[1] >= 4 && st[0]>=1) cout<<"I'm so happy.";
        else if(st[2] >= 4) cout<<"This is ok.";
        else cout<<"Never give up.";
        cout<<endl;
    }
    return 0;
}

C 游乐场

分析:开数组模拟即可,其实还可以分析ans是否需要开 long long.

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N];

int main(){
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];

    int money = 0, ans=0;
    for(int i=1; i<=n; i++){
        int t = a[i] - a[i-1]; // 这段时间新增的零花钱
        if(money + t > 50) money = 50;
        else money += t;
        ans += money / 8, money %= 8;
    }
    cout<<ans;
    return 0;
}

D 吃苹果

分析:排序后,首尾求和就是答案,注意数据范围,开 long long。

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N];

int main(){
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];
    sort(a+1, a+1+n);
    long long ans = 1ll * a[1] + a[n];
    cout<<ans;
    return 0;
}

E 天上的气球

分析:使用二维数组记录即可;
这里可使用两个二维数组,一个记录 h,一个记录 c;
也可以使用一个二维数组,但是每个元素是一个pair<int,int> 使用 first记录 h, second记录 c;
后面如果有更低的高度就更新。

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int n,m,k;
pair<int,int> a[N][N];

int main(){
    cin>>n>>m>>k; int x,y,h,c;
    while(k--){
        cin>>x>>y>>h>>c;
        if(!a[x][y].second ||a[x][y].first > h)
            a[x][y] = make_pair(h, c);
    }
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            cout<<a[i][j].second<<" \n"[j==m];
    return 0;
}

F 神秘排列

分析:其实就是两个问题的组合

问题1:元素 1~n是否都出现了,可以使用标记数组对出现元素进行标记;
问题2:\(\forall {i}, p[i][=a[i]\),提醒:对于题目中的符号,代码中最好不变,这样思路更加清晰

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N], p[N], st[N];

int main(){
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];
    for(int i=1; i<=n; i++) {
        st[a[i]] = 1;
        p[a[i]] = i;
    }
    int s = 0;
    for(int i=1; i<=n; i++) {
        s += st[i];
        if(p[i] != a[i]) break;
    }
    cout<<(s == n ? "YES" :"NO");
    return 0;
}

G 道法考试

分析:其实就是看某写元素是否出现,可以使用for查询,但是效率低,可以利用set/map优化

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10, M=2e3+10;
int n,m,x, l[M];
set<int> se[N];
int main(){
    cin>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++){
             cin>>x; se[i].insert(x);
        }
    int ans = 0;
    for(int i=1; i<=n; i++){
        cin>>l[i];
        int t = 0;
        for(int j=1; j<=l[i]; j++) {
            cin>>x;
            t += se[i].count(x);
        }
        if(t == m) ans += 2;
    }
    cout<<ans;
    return 0;
}

H 非众数

分析:将全部非空子串求出来,一个一个判断。

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10, M=2e3+10;
int ans;
queue<string> q;

int main(){
    string s; cin>>s;
    for(int i=0; i<s.size(); i++)
        for(int j=i; j<s.size(); j++)
            q.push(s.substr(i, j-i+1));
    while(q.size()){
        s = q.front(); q.pop();
        int st[27] = {0}, mx = 0;
        for(int i=0; i<s.size(); i++){
            st[ s[i] -'a' ] ++;
            mx = max(mx, st[ s[i] - 'a']);
        }
        if(mx <= s.size() / 2) ans ++;
    }
    cout<<ans;
    return 0;
}

标签:10,洛谷,22,int,cin,182,using,const,include
From: https://www.cnblogs.com/hellohebin/p/18146733

相关文章

  • Ubuntu 22.04 和 Windows 时间冲突解决方案
    默认情况下,Ubuntu(和大多数其他Linux发行版)假设硬件时钟设置为协调世界时间(UTC+0),而Windows则假设硬件时钟设置为当地时间,这导致Ubuntu快8小时。这种差异会导致你在双启动系统中切换操作系统时,经常遇到时间显示不正确的问题。要解决这个问题,有两种常用方法,要么让Linux......
  • Ubuntu 22.04 安装 Nvidia 驱动最方便安全的方式
    刚安装好的Ubuntu22.04没有N卡驱动,输入nvidia-smi,提示没有此程序并推荐到apt安装。但是,使用apt安装nvidia驱动会有极大概率出现启动黑屏和闪屏问题。不如进入开始菜单,找到“附加驱动”:此处展示了可用的Nvidia驱动,选择自己想要的版本安装,"tested"表明其经过测试,......
  • Ubuntu 22.04中使用微信
    刚开始装了一个优麒麟原装的微信,真的好难用,就只能发送接受个文字消息,所以还是推荐安装wine版本的,链接如下:https://www.ubuntukylin.com/applications/119-cn.html还是推荐离线安装,在线安装wine环境时容易出问题,根据它的教程安装即可~1、Wine环境安装:下载链接:http://archive.ubun......
  • 串口通信原理详解232、422、485,入门必看!
    串口通信原理详解232、422、485,入门必看!混说Linux ​关注他 130人赞同了该文章本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。1.串口通讯串口通讯(SerialCommunication),是指外设和计算机间,通过数据信号线、......
  • 洛谷题单指南-动态规划1-P1077 [NOIP2012 普及组] 摆花
    原题链接:https://www.luogu.com.cn/problem/P1077题意解读:n种花选m个的选法,每种花数量为ai。解题思路:设dp[i][j]表示前i种花选j个的选法对于第i种花,可以选0,1,2...min(ai,j)个则有递推式:dp[i][j]=∑dp[i-1][j-k],k取0,1,2...min(ai,j)初始化dp[0][0]=1100分代码:#incl......
  • Codeforces 1824C LuoTianyi and XOR-Tree
    考虑到肯定如果能在这个节点让子树的值尽量相同肯定更好,这样子不会与上面的操作相冲突。于是有个\(\text{DP}\)的思路。记\(f_{u,i}\)为\(u\)子树内叶子节点的值都变为\(i\)的最小代价。这个有一个很好的性质,就是\(\maxf_{u,i}-\minf_{u,i}=1\)。这是因为考......
  • L2-022 重排链表
    原题链接题解找到终点,然后终点往前移,起点往后移,奇数时输出终点所在位置..直到起点终点重合,这时输出尾节点是-1code#include<bits/stdc++.h>usingnamespacestd;structnode{intdata,next,from;}a[100005];intmain(){intstart,n;cin>>start>>n;......
  • 软件工程日报022
     第一天第二天第三天第四天第五天所花时间(包括上课)     代码量(行)     博客园(篇)     所学知识     ......
  • Ubuntu22.04安装MySQL8
    Ubuntu22.04安装MySQL8第一部分:安装mysql使用apt安装sudoaptupdatesudoaptinstall-ymysql-server安装完成之后自动结束,不需要输入密码。更新用户密码这里默认安装的是mysql8.0版本,因为i没有输入密码;所以无法使用mysql-uroot-p进入mysql,需要执行这个命令(一定要......
  • Ubuntu22.04安装PostgreSQL15
    Ubuntu22.04安装PostgreSQL15启用PostgreSQL包存储库sudosh-c'echo"debhttp://apt.postgresql.org/pub/repos/apt$(lsb_release-cs)-pgdgmain">/etc/apt/sources.list.d/pgdg.list'wget-qO-https://www.postgresql.org/media/keys/ACCC4CF8......