当前位置: 首页 > news >正文

23.3.4打卡 AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)A~E

F题题面都看不懂嘞!开摆!
没找到合适的markdown, 截图网页翻译了我真是天才
比赛链接:
https://atcoder.jp/contests/abc291

A题

题意

给出一个字符串, 找到第一个大写字母的下标
题面
简单题就不多说了, 直接放代码

代码

void solve()
{cin>>str;n=str.size();str=" "+str;rep(i,1,n){if(str[i]<='Z'){cout<<i<<endl;return;}}return;
}

B题

题意

给出n*5个裁判, 去掉n个最高分和n个最低分, 剩下的全加起来求平均数, 精度要求10−510^{-5}105
网页翻译发癫说此网站不支持翻译麻了没图了

题解

我用优先队列pop了n次然后读取了前3*n个

代码

void solve()
{cin>>n;priority_queue<ll>q;   rep(i,1,n*5){R ant;q.push(ant);}rep(i,1,n) q.pop();cnt=n*3;ans=0;rep(i,1,cnt){ans+=q.top();q.pop();}double a=1.0*ans/cnt;printf("%.10lf\n",a);return;
}

C题

题意

给出一个字符串只包含UDLR模拟前后左右, 从0,0开始走, 问是否会走之前走过的点
题面

题解

用map储存pair类型查重即可

代码

void solve()
{cin>>n>>str;str=" "+str;ll x,y;x=y=0;map<pair<ll,ll>,ll>mp;mp[{0,0}]++;rep(i,1,n){auto v=str[i];if(v=='R') x++;if(v=='L') x--;if(v=='U') y++;if(v=='D') y--;if(mp.count({x,y})){yesreturn;}mp[{x,y}]++;}noreturn;
}

D题

题面

有N张卡片排成一排, 正反面各有一个数字, 初始卡牌全部为正面, 卡牌可以随意翻面, 问有多少种方式使得在正面的卡牌数字不同题面

题解

组合数学想了贼久, 然后发现其实是个dp
需要考虑四种情况

与上一个同面元素是否相同
与上一个异面元素是否相同

如果是相同的情况, 那么当前这个卡牌必须翻面(也就是无法转移状态)
然后其他情况都能专题状态, 写个2维dp就好了

代码

void solve()
{cin>>n;vector<ll>a(n+1),b(n+1);rep(i,1,n) R a[i]>>b[i];f[1][0]=f[1][1]=1;rep(i,2,n){if(a[i]!=a[i-1]) f[i][0]=(f[i-1][0]+f[i][0])%mod; if(a[i]!=b[i-1]) f[i][0]=(f[i-1][1]+f[i][0])%mod; if(b[i]!=b[i-1]) f[i][1]=(f[i-1][1]+f[i][1])%mod; if(b[i]!=a[i-1]) f[i][1]=(f[i-1][0]+f[i][1])%mod; }cout<<(f[n][0]+f[n][1])%mod<<endl;return;
}

E题

题意

现在有一个打乱顺序的排列A, 1~n, 给出m个x和y
x和y的含义是AXi<AYiA_{Xi}<A_{Yi}AXi<AYi
按1~n的顺序输出 原本排列在A排列中的位置
题面

题解

按照样例1画个图先
在这里插入图片描述
是不是很像一个图, xy就是y通向x有向边
如此建一个图
存下每个边的终点, 找出图的起点
如果没有终点的点>=2说明这个图不合法直接输出no完事
然后遍历一遍图, 记录下顺序就好了, 注意重边感谢样例3的重边提醒我, 不然铁wa

代码


void solve()
{cin>>n>>m;rep(i,1,m){ll x,y;cin>>x>>y;g[x].push_back(y);to[y]++;}queue<ll>q;vector<ll>ans(n+1);rep(i,1,n)if(to[i]==0) q.push(i);ll pos=0;while(q.size()){if(q.size()>=2) {noreturn;}ll tp=q.front();q.pop();ans[tp]=++pos;for(auto it:g[tp]){to[it]--;if(to[it]==0) q.push(it);}}yesrep(i,1,n) cout<<ans[i]<<' ';return;
}
http://www.lryc.cn/news/28952.html

相关文章:

  • Gem5模拟器,一些运行的小tips(十一)
  • 【JAVA】List接口
  • Hbase RegionServer的核心模块
  • 【Java开发】JUC进阶 01:Lock锁详解
  • 关于登录校验的解决方案以及原理(回顾知识点)--项目开发那点事(自问自答版本)
  • 【数据结构】邻接矩阵和邻接图的遍历
  • 设计跳表(动态设置节点高度)
  • 基于神经辐射场(Neural Radiance Fileds, NeRF)的三维重建- 简介(1)
  • 【AI面试】NMS 与 Soft NMS 的辨析
  • 一文让你彻底理解Linux内核多线程(互斥锁、条件变量、读写锁、自旋锁、信号量)
  • 利用python写一个gui小公举--环境搭建
  • 英飞凌Tricore实战系列02_ENDINIT属性看门狗原理及应用
  • Java Number类
  • C++构造和析构
  • docker安装即docker连接mysql(window)
  • HMM-维特比算法
  • 【C++初阶】2. 类和对象_1
  • kotlin把函数作为参数转递给另一个函数
  • 海思嵌入式开发-005-OpenHarmony源码编译问题
  • 指针的进阶续(笔试题强化练习)
  • 一个供参考的计算机的学习路线
  • React(五):受控组件、高阶组件、Portals、Fragment、CSS的编写方式
  • MATLAB——系统环境
  • 2 GateWay工作流程+GateWay搭建
  • 【微信小程序】富文本rich-text的图片预览效果的几种方法
  • 通信网络-Socket、Java中的网络支持、多线程服务器
  • 搞懂 JS this、call、apply、bind
  • 力扣209长度最小的子数组
  • 【mysql是怎样运行的】-InnoDB数据页结构
  • VIM实用指南(10)语法自动补全插件coc.nvim