传送门

文章目录

  • 目录:
    • 题意:
    • 思路:

目录:

题意:

你有nnn头奶牛,mmm中不同种类的麦片,每个麦片只有一箱,给你每个奶牛第一和第二喜欢的麦片,奶牛会先看第一喜欢的是否有,有的话直接拿走,否则看第二喜欢的是否有,有的话直接拿走,否则一箱不拿。

现在问题是奶牛排队领取,对于每个0≤i≤N−10\le i\le N-10≤i≤N−1,求如果从队伍前面移除前iii头奶牛,有多少奶牛会取走一箱麦片。

1≤n,m≤1e51\le n,m\le 1e51≤n,m≤1e5

思路:

第一反应是倒着考虑,考虑每加入一个奶牛会产生什么影响:

  • 如果加入的奶牛第一喜好没有被之前的选择,那么直接选择即可。
  • 如果加入奶牛的第一喜好被之前选择了,那么由于其排在前面一定可以跟那个奶牛抢过来,所以递归处理前面的奶牛即可。

由于一个奶牛最多会被修改三次,复杂度得以保证O(n)O(n)O(n)。

#include<bits/stdc++.h>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define Mid (tr[u].l+tr[u].r>>1)
#define pb push_back
using namespace std;const int N=1000010,INF=0x3f3f3f3f,mod=1e9+7;
typedef long long LL;int n,m;
int id[N],cnt;
int ans[N];
struct Node {int x,y;
}a[N];void dfs(int now) {if(now==-1) return;int x=a[now].x,y=a[now].y;if(id[x]==-1||id[x]>now) {dfs(id[x]);id[x]=now;} else if(id[y]==-1||id[y]>now) {dfs(id[y]);id[y]=now;} else cnt--;
}void solve() {scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) {int x,y; scanf("%d%d",&x,&y);a[i]={x,y};}memset(id,-1,sizeof(id));for(int i=n;i>=1;i--) {cnt++;int x=a[i].x;if(id[x]!=-1) dfs(i);else id[x]=i;ans[i]=cnt;}for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
}int main() {int _=1;while(_--) {solve();}return 0;
}

P6282 [USACO20OPEN] Cereal S 思维相关推荐

  1. 揭富人与穷人21个不同思维 看富豪如何脱颖而出

    <富人是怎么想的>(How Rich People Think)的作者Steve Siebold曾在近30年里采访世界各地的富豪,看究竟是什么让富豪从普通人中站出来. 他发现这和金钱基本没 ...

  2. 学习,思维三部曲:WHAT、HOW、WHY

    学习技术的三部曲:WHAT HOW WHY 我把学习归类为三个步骤:What.How.Why.经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段.下面我把这三个步骤 ...

  3. Linux架构思维导图

    Linux架构思维导图 GUI(Graphical User Interface,图形用户界面) Linux 学习路径 软件框架 Linux 桌面介绍 FHS:文件系统目录标准 Linux 需要特别注 ...

  4. github 思维导图开元软件_画思维导图记笔记的工具软件

    思维导图是很多人在做笔记的时候都会用到的一种记录方式,使用思维导图可以简单有效的表达发散性思维,能够协助人们在各种因素间平衡展开思考,从而提升自己笔记的含金量和工作效率,有没有画思维导图记笔记的工具软 ...

  5. 大数据概念思维导图_思维导图|数据化风控(信用评分建模教程)

    本文将按<数据化风控--信用评分建模教程>行文逻辑,并结合相关参考材料,为大家梳理本书涉及的重点知识,也算是自己读书笔记分享.有需要的同学可先收藏.点赞,以便回顾学习和吸收,当然,如果愿意 ...

  6. puml绘制思维导图_如何用ProcessOn画出漂亮的思维导图

    说到绘制思维导图,很多人可能都知道XMind,但不一定了解ProcessOnProcessOn - 免费在线作图,实时协作,总以为后者绘制流程图很强大,殊不知其在思维导图方面也有很强大的功能. 好工具 ...

  7. 计算机思维采用抽象和分解,凤凰机器人----什么是计算思维?凤凰机器人的编程课中是如何体现它的?...

    对于生活在科技和智能自动化时代的孩子们来说,理解计算机的思维方式,运用计算思维去解决生活中的问题,被认为和听.说.读.写.算一样,是每个人必备的思维能力.然而,到底什么才是计算思维呢? 计算思维是一种 ...

  8. tp3 普通模式url模式_《终身成长》:三个步骤打造成长型思维模式,普通人也可以成功...

    罗伯特很小是一个聪明的孩子,父母以他为傲,经常夸奖他,对他表达爱.结果他没有考上一个纽约第1名的幼儿园,父母就不像以前那样对他了,不会再经常表达爱,夸奖他,对他就越来越冷淡,他在父母眼里是一个失败者, ...

  9. 大学计算机思维导图_我学计算机,也会修电脑

    "你学啥专业?" "计算机科学." "帮我修电脑吧." "--" 现实中-- 金融专业的被问炒股 土木专业的被问装修 天 ...

最新文章

  1. Python将小于0的书数换成0的几种方式
  2. 我去,为什么最左前缀原则失效了?
  3. nodepad 关闭语法检查
  4. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨5.35%
  5. m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置...
  6. BMP文件格式详解(BMP file format) (转)
  7. R语言安装~R,Rstudio
  8. TransE模型的简单介绍TransE模型的python代码实现
  9. Uploadify-中文帮助手册
  10. 51单片机驱动LCD12864中文字库显示
  11. 【山科OJ】Problem C: Matrix Problem (III) : Array Practice
  12. 汽车驾驶 - 道路交通标线和标志
  13. for..in loops iterate over the entire prototype chain
  14. C# 调用打印机 打印 Excel
  15. JavaScript检测邮箱 e-mail
  16. http://nian.so/#网站的拓展工具编写
  17. Elasticsearch 断路器报错了,怎么办?
  18. wow盗号木马事件前后
  19. 从“中国之光”到倒闭破产,北大方正做错了什么?
  20. 高管股权激励的最优设计方案

热门文章

  1. win下nginx+php+mysql服务器套装_WNMP(Windows+Nginx+PHP+MySQL)安装
  2. 测试眉形的有哪个软件_这五款自动化软件测试工具,你最喜欢用哪个?
  3. 地壳中元素含量排名记忆口诀_Nature:利用熔融包裹体的元素和同位素示踪俯冲带流体来源...
  4. php真随机数,php 的伪随机数与真随机数实例详解
  5. 电脑用户名_仁霸下料优化软件如何找回密码、更换绑定电脑?
  6. 下面由我来给大家表演个绝活
  7. 史上最硬核的数学老师!搞发明、造大炮,让战斗民族直叫爸爸,看完我跪了......
  8. 深夜,学妹说她想做Python数据分析师
  9. window.location.reload()会掉参数吗_iPhone手机电量不够用,你真的会用苹果吗?设置好这几个就OK了!...
  10. 双目三维重建_【光电视界】简单介绍双目视觉三维重构