Codeforces Round #481 (Div. 3)

Codeforces 题解 (不断更新,一起上分) 目录 Educational Codeforces Round 45 (Rated for Div. 2) Educational Codeforces Round 45 (Rated for Div. 2) 题目:A. Commentary Boxes题解 题目:B Micro-World 题解 题目:C Bracket Sequences Concatenation Problem 题解 题目:D Graph And Its Complement 题解 题目:E Po... 阅读详情

比较简单的一场,除了个别题目需要小心一些细节之外都很裸很暴力;
A.
xjb乱搞就行。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool appear[1005];
int main()
{
    int n,i,j,num[100];vector<int>ans;
    cin>>n;
    for(i=1;i<=n;i++)cin>>num[i];
    for(i=n;i;i--){
        if(!appear[num[i]]){
            ans.push_back(num[i]);appear[num[i]]=true;
        }
    }
    cout<<ans.size()<<endl;
    for(auto i=ans.rbegin();i!=ans.rend();i++)
        cout<<*i<<' ';

    return 0;
}

B.
连续3个x就记录一下就完了

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int f[105];
int main()
{
    int n,i,j,cnt=0;
    cin>>n;string str;cin>>str;
    for(i=0;i<str.size();i++){
        if(str[i]=='x'){
            f[i]=1;
            if(i&&f[i-1]){
                f[i]+=f[i-1];f[i-1]=0;
            }
        }
    }
    for(i=0;i<n;i++){
        if(f[i]>2){
            cnt+=f[i]-2;
        }
    }
    cout<<cnt<<endl;

    return 0;
}

C.
二分一下就ok

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
ll sum[200005];
int main()
{
    int n,m,i,j,k;
    cin>>n>>m;
    for(i=1;i<=n;i++){
        scanf("%lld",&sum[i]);sum[i]+=sum[i-1];
    }
    for(i=1;i<=m;i++){
        ll num;scanf("%lld",&num);
        ll pos=lower_bound(sum+1,sum+1+n,num)-sum;
        if(sum[pos]==num){
            cout<<pos<<' '<<sum[pos]-sum[pos-1]<<endl;
        }
        else{
            cout<<pos<<' '<<num-sum[pos-1]<<endl;
        }
    }

    return 0;
}

D.
两两之间的差只有t=(最后一个数-第一个数)/(n-1) 或者t+1或者t-1 3种可能,第一个数也只有3种可能,暴力枚举扫一遍就行了。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
    int n,i,j,num[100005],num1[100005];
    cin>>n;
    for(i=1;i<=n;i++)scanf("%d",&num[i]);
    if(n==1||n==2){
        cout<<0<<endl;return 0;
    }
    int cha=(num[n]-num[1])/(n-1);
    bool isok1=false;
    int pos[3]={cha-1,cha,cha+1};int minn=100000;
    for(i=-1;i<=1;i++){
        for(int k=0;k<3;k++) {
            int cnt = 0;memcpy(num1,num,sizeof(num));
            num1[1] += i;if(i)cnt++;
            bool isok = true;
            for (j = 2; j <= n; j++) {
                if (abs(num1[j - 1] + pos[k] - num1[j]) > 1) {
                    isok = false;
                    break;
                } else {
                    if (num1[j - 1] + pos[k] != num1[j]) {
                        cnt++;
                        num1[j] = num1[j - 1] + pos[k];
                    }
                }
            }
            if (isok) {
                isok1 = true;
                minn = min(minn, cnt);
            }
        }
    }
    if(isok1){
        cout<<minn<<endl;
    }
    else{
        cout<<-1<<endl;
    }
    //cout<<-14/3<<endl;

    return 0;
}

E.
考虑整个过程中的最大最小值即可。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
    int num[1005]={0},n,i,j,w;
    cin>>n>>w;int cnt=0,maxn=-(1<<30),minn=1<<30;
    for(i=1;i<=n;i++) {
        cin >> num[i], cnt += num[i];
        maxn = max(maxn, cnt);
        minn = min(minn, cnt);
    }
    if(abs(maxn)>w||abs(minn)>w){
        cout<<0<<endl;return 0;
    }
    if(maxn>=0&&minn>=0){
        cout<<w-maxn+1<<endl;
    }
    else if(maxn>=0&&minn<=0){
        if(w-maxn<abs(minn)){
            cout<<0<<endl;
        }
        else{
            cout<<w-maxn-abs(minn)+1<<endl;
        }
    }
    else{
        cout<<w-abs(minn)+1<<endl;
    }

    return 0;
}

F.
主要就是要高效解决两个问题:对于每个人而言有几个人能力值比他低?对于每个人而言比他能力值低的人里面有几个是有矛盾的?二分就ok

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
const int N=2e5+5;
typedef long long ll;
int a[N],b[N],ans[N];
int main()
{
    int n,k,i,j,l;
    cin>>n>>k;
    for(i=1;i<=n;i++){
        scanf("%d",&a[i]);b[i]=a[i];
    }
    sort(b+1,b+1+n);
    for(i=1;i<=k;i++){
        scanf("%d%d",&j,&l);
        if(a[j]>a[l])ans[j]--;
        else if(a[l]>a[j])ans[l]--;
    }
    for(i=1;i<=n;i++){
        ans[i]+=lower_bound(b+1,b+1+n,a[i])-b-1;
    }
    for(i=1;i<=n;i++)
        cout<<ans[i]<<' ';
    cout<<endl;

    return 0;
}

G.
贪心题,把考试按考试时间从小排到大,然后每个考试尽量选择最靠前的可用的日子来复习即可,这样一定是最优的。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int days[105];
struct exam{
    int s,d,c,id;
    bool operator<(const exam v)const{
        return d<v.d;
    }
}exam1[105];
int main()
{
     int n,m,i,j,k;
     cin>>n>>m;
     for(i=1;i<=m;i++){
         scanf("%d%d%d",&exam1[i].s,&exam1[i].d,&exam1[i].c);days[exam1[i].d]=m+1;exam1[i].id=i;
     }
     sort(exam1+1,exam1+1+m);
     for(i=1;i<=m;i++){
         for(j=exam1[i].s;exam1[i].c&&j<=n&&j<exam1[i].d;j++){
             if(!days[j]){
                 days[j]=exam1[i].id;exam1[i].c--;
             }
         }
         if(exam1[i].c){
             cout<<-1<<endl;return 0;
         }
     }
     for(i=1;i<=n;i++)
         cout<<days[i]<<' ';
     cout<<endl;

     return 0;
}
XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD XC95144XL-10TQG144I 属于 Xilinx 的 XC9500XL 高性能 CPLD 家族,是一颗面向 3.3V 低电压系统的可编程逻辑器件。该器件以小封装、高速响应和良好的系统兼容性为设计目标,常用作系统控制/ glue-logic、I/O 缓冲、状态机、总线桥接与接口协议前端等场景中的可重编程逻辑单元。产品支持现场(in-system)编程与 IEEE-1149.1 JTAG 边界扫描,能在系统板上直接更新逻辑。 阅读详情

相关推荐

Centos7.9使用kubeadm部署K8S集群

使用kubeadm部署一个k8s集群,单master+2worker节点。

lldhsds的专栏 1300

Codeforces Round #481 (Div. 3) 全题解

A题,题目链接:http://codeforces.com/contest/978/problem/A 解题心得:题意就是让你将这个数列去重,重复的数只保留最右边的那个,最后按顺序打印数列。set+map。 #include <bits/stdc++.h> using namespace std; const int maxn = 10...

weixin_30457465的博客 279

TypeScript的安装与使用

TypeScript的安装与使用

qq_51589308的博客 600

Codeforces #481(Div.3) A~E

A题 题解: 从右往左历 B题 题解: 子串含连续的超过两个的x需要计算:num-2 所有的加起来即为答案 C题 题解: 先求1dormitory最后一个room总编号,2dormitory,3,4…… 然后判断问到的总编号是哪个dormitory,然后是哪个room 注意因为问到的编号递增,所以可以从上次问到的dormitory往后历 D题 题解: 确定了前三项,就确定了整个等差数列 前三项每一项都有三种可能,0,+1,-1 总共27种可能,判断每种可能能否构成等差数列, 若有多解,改动项数最少即为答案

m0_46308034的博客 250

rk3588s-摄像头适配gc8034

若还打开失败,需要看下XML中文件配置是否与DTS配置信息一致,或者XML参数配置是否有异常;MIPI摄像头是有上电时序要求,具体时序要查看sensor芯片对应的datasheet进行修改,如果时序不满足,sensor无法正常,此时用i2ctool去查看设备可能无法扫面到设备,即是i2c设备找不到。RK3588或者RK3588S有路MIPI-PHY,驱动开发工程师需要根据对应的硬件原图进行配置,以下会讲解分别使用MIPI-DPHY和MIPI-D/CPHY如何在DTS配置mipi摄像头的回环链路。

Yxx8066的博客 2200

webview腾讯x5内核离线安装

离线集成腾讯TBS浏览器服务,彻底解决官方下载限流问题,永久免费

观千剑而后识器,操千曲而后晓声。 7908

codeforces 481 div3 A(数组的去重操作)

A. Remove Duplicates Petya has an array aa consisting of nn integers. He wants to remove duplicate (equal) elements. Petya wants to leave only the rightmost entry (occurrence) for each element of the ...

king9666的博客 212

InfiniteTalk (Wan2.1) 数字人 A800 落地实战:从依赖地狱到完美运行的保姆级指南

摘要:本文详细记录了在A800(80GB)服务器上部署InfiniteTalk开源数字人项目的完整流程。该项目基于阿里Wan2.1视频生成模型,支持无限时长流式生成,但环境配置极其复杂。作者总结了18个关键问题点,包括Python版本冲突、CUDA算子缺失等,并提供了黄金配置方案:使用Python3.10+PyTorch2.5.1环境,精准控制FlashAttention等核心库版本,以及针对A800的显存优化策略。最终实现480P视频30秒/步的生成速度,相比默认配置提升3.7倍性能。

软件工程师文艺 2041

Codeforces978G Petya's Exams(贪心+模拟)

G. Petya's Exams time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Petya studies at university. The current academic year finishes w...

Amove 1322

拉曼光谱入门:10.显微拉曼与共聚焦技术

本文系统阐述了显微拉曼光谱技术与共聚焦原理的融合机制,详细解析了从激光激发、针孔空间滤波到光谱采集的完整光路架构,阐明了共聚焦设计在提升三维空间分辨率、抑制荧光背景及实现微区无损层析方面的核心优势,并探讨了关键光学器件的性能边界与系统技术局限。

qq_53529450的博客 166

手把手教你学simulink实例--基于Simulink的轨道交通车辆悬挂系统仿真

轨道交通车辆悬挂系统是保证列车运行平稳性、舒适性和安全性的重要组成部分。通过悬挂系统的合理设计,可以有效减小车辆在运行过程中受到的轨道不平顺和振动影响。基于MATLAB/Simulink平台进行悬挂系统仿真,可以对悬挂系统的动力学行为、控制策略以及性能优化等环节进行建模与分析,从而验证系统的设计性能并优化参数。本项目旨在构建一个完整的轨道交通车辆悬挂系统仿真模型,包括悬挂系统动力学建模、控制策略模块以及性能评估模块,并通过仿真验证系统的稳定性和舒适性。

MHD0815的博客 1032

Codeforces#481(div3) A. Remove Duplicates

A. Remove DuplicatesPetya has an array aa consisting of nn integers. He wants to remove duplicate (equal) elements.Petya wants to leave only the rightmost entry (occurrence) for each element of the ar...

美丽的大黄人 464

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Codeforces Round #481 (Div. 3)(A-G)题解

Codeforces Round #481 (Div. 3)(A-G)题解 传送门 A. Remove Duplicates 思路:先用一个vis[]vis[]vis[]记录那些数出现过,储存他们最后一次出现位置,然后排个序输出即可。 时间复杂度:O(n)O(n)O(n) 实际上不用排序,直接顺序遍历对应匹配输出即可。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=50+5,M=1e6

Harris-H的博客 719

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Codeforces Round #481 (Div. 3) ABCDEFG

A. Remove Duplicates传送门:http://codeforces.com/contest/978/problem/A题目大意:  给出n个数字,去重,按每个数字最后出现的位置输出。思路:  从最后开始查,不重复就入栈,之后输出栈中所有元素。AC代码:#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstrin...

__喵喵喵的博客 273

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Codeforces Round #481 (Div. 3) C. Letters

Codeforces Round #481 (Div. 3) C. Letters 题目地址:http://codeforces.com/contest/978/problem/C   题解:有n个宿舍,每个宿舍人不一样多,有m封信,每封信送给对应的第m间房间,问这封信是给第几个宿舍,第几间房的。   方法:做题目的时候没有看到信的编号是不断升高...

qq_42052818的博客 150

Codeforces Round #481 (Div. 3) B. File Name

Codeforces Round #481 (Div. 3) B. File Name 题目地址:http://codeforces.com/contest/978/problem/B   题解:一串文件名里不能出现连续的xxx,询问进行几次操作后,文件名才不会出现xxx。   方法:只要遍历一遍字符串里有几个xxx就可以了。   代码:(代码较丑...

qq_42052818的博客 124

Codeforces Round #481 (Div. 3) A. Remove Duplicates

Codeforces Round #481 (Div. 3) A. Remove Duplicates 题目地址:http://codeforces.com/contest/978/problem/A   题解:给一串长度为n的数组,然后删去相同的数字(从右往左)。   方法:题目n和数组ai给的范围都很小,所以可以放一个vis[1500]的数组表...

qq_42052818的博客 139

Codeforces Round #481 (Div. 3)【完结】

2022.3.1 题目地址:https://codeforces.com/contest/978 目录A. Remove Duplicates【模拟】 A. Remove Duplicates【模拟】 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N],st[N],n; set<int>s; vector<int>ve; int main(void) { cin&gt.

辉小歌的博客 654

Codeforces Round #481 (Div. 3) E,F,G

目录 CodeForces - 978EE - Bus Video System CodeForces - 978FF - Mentors CodeForces - 978GG - Petya's Exams CodeForces - 978EE - Bus Video System 题意:在每个公交站台记录,车辆走时人数y - 车辆来时人数x。有n个公交站台,公交车得容量为w,给出每个站台得记录b[i]。问公交车出发时的人数可能的情况有?(如果没有这样的情况输出0) 思路:假设初始出...

DeathYmz的博客 700

Codeforces Round #481 (Div. 3) 解题报告

A - Remove Duplicates 题目大意: 现在有一个长度为n的一串数字,要将其中相同的数字删掉。删除的规则:如果数字相同时保留最右边的那一个。输出删除之后的数字串 大致思路: 暴力模拟情况就好···虽然我感觉我写的非常复杂,应该有更简单的写法。 代码: #include<bits/stdc++.h> using namespace std; const int ...

aa8193664的博客 127

Codeforces Round #481 (Div. 3) C. Letters

C. Letters 题目链接-C. Letters 题目大意 给出一个大学里宿舍楼的数量和每栋宿舍楼的房间数量ananan,所有房间的编号都是从111到a1+a2+⋯+ana1+a2+⋯+ana1+a2+⋯+an,确定宿舍楼号和房间号 解题思路 附上代码 #pragma GCC optimize("-Ofast","-funroll-all-loops") //#pragma GCC dia...

Fiveneves的博客 284

Codeforces Round #481 (Div. 3) A,B,C

目录 CodeForces - 978A A - Remove Duplicates CodeForces - 978BB - File Name CodeForces - 978CC - Letters CodeForces - 978A A - Remove Duplicates 题意:给一个序列,删除重复的数字。相同的数字只保留一个最右边的。 思路:设置一个vis数组,和一个x数组,从右往左判断重复,第一次出现加入x,倒序输出。 代码: #include<bits...

DeathYmz的博客 611

Codeforces Round #481 (Div. 3) 题解

文章目录A. Remove DuplicatesB. File NameC. LettersD. Almost Arithmetic ProgressionE. Bus Video SystemF. MentorsG. Petya's Exams A. Remove Duplicates 题意 给你一个有nnn个整数的数组,现在需要删掉重复的元素,仅保留每个元素最右边的那个,且元素的相对顺序不应改变。 解题思路 利用mapmapmap记录每个值最后出现得位置,再桶排序输出即可。 AC代码 /

pursuit的博客 442
上一篇: Educational Codeforces Round 44 (Rated for Div. 2)
下一篇: (模板)扩展KMP算法
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值