题目直通车:Codeforces 1027F. Session in BSU

思路:

对第一门考试,使用前一个时间,做标记,表示该时间已经用过,并让第一个时间指向第二个时间,表示,若之后的考试时间和当前第一个时间冲突时,可以找到当前第二个时间来代替

对每一门考试,如果前一个时间没有被使用过,直接用前一个时间,否则看前一个时间和后一个时间分别可以指向哪一个时间,假设指向x,y,看x和y的状态和大小,如果x,y都已经使用过,表示无解,否则的话,选择较小的,并更新时间指向的状态

时间的指向状态更新需要用 map离散数据并用并查集维护

#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<list>
#include<climits>
#include<bitset>
using namespace std;
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("input.in", "r", stdin);freopen("output.in", "w", stdout);
#define left asfdasdasdfasdfsdfasfsdfasfdas1
#define tan asfdasdasdfasdfasfdfasfsdfasfdas
typedef long long ll;
typedef unsigned int un;
const int desll[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
const ll mod=1e9+7;
const int maxn=2e6+7;
const int maxm=1e6+7;
const double eps=1e-4;
int m,n;
int ar[maxn];
pair<int,int> pa[maxn];
map<int,int> ma;
bool wa[maxn];
int f[maxn];
int fin(int x)
{return f[x]==x?x:f[x]=fin(f[x]);
}
int main()
{scanf("%d",&n);m=0;for(int i=0;i<n;i++)scanf("%d%d",&pa[i].first,&pa[i].second),ar[m++]=pa[i].first,ar[m++]=pa[i].second;sort(ar,ar+m);m=unique(ar,ar+m)-ar;for(int i=0;i<m;i++){ma[ar[i]]=i;}for(int i=0;i<m;i++)f[i]=i;memset(wa,0,sizeof(wa));int ans=0;for(int i=0;i<n;i++){int a=pa[i].first,b=pa[i].second;if(!wa[ma[a]]){wa[ma[a]]=1;ans=max(ans,a);f[ma[a]]=ma[b];continue;}int x=fin(ma[a]);int y=fin(ma[b]);//分别寻找a,b指向的时间if(wa[x] && wa[y]){printf("-1\n");return 0;}if(wa[x]==false && wa[y]==false){if(ar[x]<ar[y]){f[x]=y;//更新时间指向的状态wa[x]=1;ans=max(ans, ar[x]);}else{f[y]=x;//更新时间指向的状态wa[y]=1;ans=max(ans, ar[y]);}}else if(!wa[x]){wa[x]=1;ans=max(ans, ar[x]);}else{wa[y]=1;ans=max(ans, ar[y]);}f[ma[a]]=y;//更新时间指向的状态}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/wa007/p/9557601.html

Codeforces 1027F. Session in BSU相关推荐

  1. 省选专练CF1027F Session in BSU

    如果你做过SCOI2010连续攻击游戏 就会一眼发现做法--并查集维护二分图 这个做法: 并查集要特意把祖先放的较大 这样祖先就是这个联通块的最大权 #include<bits/stdc++.h ...

  2. 2022面试200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring

    200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring等等 带图MD在资源https://download.csdn.net/download/m0_47987937/86509 ...

  3. Codeforces 915 E Physical Education Lessons

    题目描述 This year Alex has finished school, and now he is a first-year student of Berland State Univers ...

  4. session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面

    1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...

  5. codeforces:ProblemMset

    最近一个月在codeforces上做的题(做个记录) 后面太多了就不把代码一一放出了,只放置了链接,可根据链接找到提交的代码. 最小子矩阵 #include <iostream> #inc ...

  6. 震惊! 某男子一夜之间竟把codeforces题库刷穿

    这就是江湖上失传已久的自动AC机 大概就是爬取codeforces的题目的答案 然后再交上去以达到刷题的目的 注意!这样会给服务器一些没有必要的压力 学术目的 别乱用 注意!这样会给服务器一些没有必要 ...

  7. Struts2 Cannot create a session after the response has been committed 一个不起眼的错误

    严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException:  Cannot c ...

  8. 解决nginx负载均衡的session共享问题

    之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx session共享问题,查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享服务器有多台,用ngi ...

  9. 你想了解的Cookie和Session就在这~

    目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...

最新文章

  1. CVPR Oral:我给大家表演一个无中生有|北航商汤耶鲁
  2. php框架是不是累赘,PHP框架,伤不起啊,伤不起
  3. CENTOS6.3下zabbix安装部署
  4. POJ-2480 Longge's problem 积性函数
  5. 笔记-信息系统安全管理-网络安全防御
  6. Deep Learning菜鸡篇,我的第一个深度神经网络
  7. 用C语言实现简单的停车场管理
  8. JavaScript初阶(二)
  9. jsp mysql更新表数据库_一个关于JSP更新数据库MySQL中的表的问题!
  10. centos7搭建ELK Cluster集群日志分析平台(四):Fliebeat-简单测试
  11. go lang chrome 爬虫 (MAC 系统)
  12. 怎么看软件的编写代码
  13. ubuntu风扇转速控制与系统状态监控
  14. Java面向对象编程之三大特性
  15. java实验指导书 eclipse_《Java语言程序设计实验指导书》实验指导书.doc
  16. S.O. 推出程序员身价计算器,看看自己值多少钱?
  17. 移动端中的vMin和vMax
  18. 数据结构与算法实验4——字符串和数组 7-5 病毒变种
  19. 算法逻辑题-海盗分金币问题
  20. Android实训-家庭财务管理系统

热门文章

  1. Collection集合--ArrayList源码读后感总结
  2. 百度输入法发布AI版本10.0,重磅推出“AI助聊”功能
  3. 为什么传值时加号变成了空格_为什么中英文字间距不一样?我想谈谈我的理解...
  4. String类中常用的方法
  5. maven使用小技巧 optional
  6. Unity5x编辑器的视图二
  7. 根号三的用计算机怎么表示,计算器根号3怎么打
  8. 鸿蒙并不是为手机开发而是为物联网,华为确定发布“鸿蒙OS”确定 物联网同样可以搭载...
  9. Android开发工具:Git,Github,GitBook
  10. Windoes上安装(升级)虚拟化VMware Workstattion Pro软件、序列码激活软件