C. Game Master

Problem - 1608C - Codeforces

有一点点痛苦,假思路果然不对

思路:可以用图论来解决,如果我现在考虑A,但是存在一个B两个赛场的值都比A大,那么A就不能够成功,但是如果存在一个C能够把B去掉,那么就是可以的,所以我们可以考虑用一个图来维护,如果a能够去掉b则把a向b连一条边,但是我们并不用将所有的边建出来,我们可以分别对a与b进行排序,然后进行建变只建i,i+1然后再用tarjan进行缩点,我们能够知道在一个连通块能的一定可以只剩下一个,而将连通块内的其他点删掉,并且所有后继节点一定可以被删掉,所以只有当缩点后入度为0的店有1个,那么这个入度为0的联通快就是满足条件的所有点

记得memset

// Problem: C. Game Master
// Contest: Codeforces - Codeforces Round 758 (Div.1 + Div. 2)
// URL: https://codeforces.com/problemset/problem/1608/C
// Memory Limit: 256 MB
// Time Limit: 1000 ms#include<iostream>
#include<cstring>
#include<string>
#include<sstream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<vector>
#include<set>
#include<unordered_map>
#include<ctime>
#include<cstdlib>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> PII;
typedef pair<int,pair<int,int> > PIII;
const double eps=1e-7;
const int N=5e5+7 ,M=5e5+7, INF=0x3f3f3f3f,mod=1e9+7;
const long long int llINF=0x3f3f3f3f3f3f3f3f;
inline ll read() {ll x=0,f=1;char c=getchar();while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {x=(ll)x*10+c-'0';c=getchar();} return x*f;}
inline void write(ll x) {if(x < 0) {putchar('-'); x = -x;}if(x >= 10) write(x / 10);putchar(x % 10 + '0');}
inline void write(ll x,char ch) {write(x);putchar(ch);}
void stin() {freopen("in_put.txt","r",stdin);freopen("my_out_put.txt","w",stdout);}
bool cmp0(int a,int b) {return a>b;}
template<typename T> T gcd(T a,T b) {return b==0?a:gcd(b,a%b);}
template<typename T> T lcm(T a,T b) {return a*b/gcd(a,b);}
void hack() {printf("\n----------------------------------\n");}int T,hackT;
int n,m,k;
struct Node{int a,b,id;
};
int ans[N];
Node w[N];
int h[N],e[M],ne[M],idx;
int dfn[N],low[N];
int ssc_cnt;
int id[N];
int timestemp;
int stk[N],top;
bool in_stk[N];
int din[N];void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}void tarjan(int u) {dfn[u]=low[u]=++timestemp;stk[++top]=u,in_stk[u]=true;for(int i=h[u];i!=-1;i=ne[i]) {int j=e[i];if(!dfn[j]) {tarjan(j);low[u]=min(low[u],low[j]);}else if(in_stk[j]) low[u]=min(low[u],dfn[j]);}if(dfn[u]==low[u]) {int y;++ssc_cnt;do{y=stk[top--];id[y]=ssc_cnt;in_stk[y]=false;}while(y!=u);}
}void solve() {n=read();ssc_cnt=0;timestemp=0;memset(id,0,sizeof id);memset(din,0,sizeof din);memset(low,0,sizeof low);memset(dfn,0,sizeof dfn);memset(h,-1,sizeof h);idx=0;for(int i=1;i<=n;i++) w[i].a=read(),w[i].id=i;for(int i=1;i<=n;i++) w[i].b=read();sort(w+1,w+1+n,[&](Node &a,Node &b) {return a.a>b.a;});for(int i=1;i<n;i++) add(w[i].id,w[i+1].id);sort(w+1,w+1+n,[&](Node &a,Node &b) {return a.b>b.b;});for(int i=1;i<n;i++) add(w[i].id,w[i+1].id);for(int i=1;i<=n;i++) {if(!dfn[i]) {tarjan(i);}}for(int i=1;i<=n;i++) {for(int j=h[i];j!=-1;j=ne[j]) {int a=i,b=e[j];int fa=id[a],fb=id[b];if(fa!=fb) din[fb]++;}}vector<int> vis;for(int i=1;i<=ssc_cnt;i++) {if(!din[i]) vis.push_back(i);}if(vis.size()!=1) {for(int i=1;i<=n;i++) printf("0");printf("\n");}else {memset(ans,0,sizeof ans);int t=vis[0];for(int i=1;i<=n;i++) if(id[i]==t) ans[i]=1;for(int i=1;i<=n;i++) printf("%d",ans[i]);printf("\n");}
}   int main() {// init();// stin();scanf("%d",&T);// T=1; while(T--) hackT++,solve();return 0;
}

C. Game Master相关推荐

  1. git 创建分支并合并到master 上

    1 创建一个dev的分支 git branch dev 2 切换到dev 分支上 git checkout dev (创建并切换是git checkout -b 分支名) -------------- ...

  2. 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

    在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...

  3. git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理

    一.创建用户 1.创建管理gitlab的开发人员的用户 2.配置用户信息 3.将用户添加到java-daem组中 4.用户登录成功后,在用户界面为用户添加ssh认证 5.在linux主机中将maste ...

  4. Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class

    标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理? 程序纹理将简单的数学转换为无限的真实感着色器,具有无限的多样性和分辨率. 超越看起来像一团像素特写的图像纹理,运用程序纹理的力量, ...

  5. c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D

    c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D MP4 |视频:h264,1280×720 |音频:aac,48000 Hz 语言:英语+机译中 ...

  6. Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

    Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...

  7. 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...

    1.本地创建一个本地仓库  2.关联远程端: git remote add origin git@github.com:用户名/远程库名.git 3.同步远程仓库到本地 git pull 这个时候会报 ...

  8. 完全隐藏Master Page Site Actions菜单只有管理员才可以看见

    1. 在Master Page Head 增加下面的Style <style type="text/css"> .ms-cui-tt { visibility:hidd ...

  9. SQL Server 中master..spt_values的应用

    今天在做数据分析报表的时候遇到一个这样的问题. 表结构如下. 部门编码.部门名称.部门人员ID(中间用逗号分割) 我想通过和人员表链接,查询出一个新的数据集,查询出的结果集格式如下: 人员信息(ID或 ...

  10. ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型

    ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利.然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage ...

最新文章

  1. VUE—从入门到飞起(四)
  2. 左侧固定,右侧自适应的布局方式(新增评论区大佬教的方法)
  3. python 结巴分词(jieba)学习
  4. [TC SRM 685 div1 lev1] MultiplicationTable2
  5. light oj -1245 - Harmonic Number (II)
  6. SCPPO(二十八):通过JS实现自动刷新进度
  7. NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
  8. shell脚本语言和java_shell脚本学习与总结
  9. 川土微 | CA-IS3105W 全集成 DC-DC 转换器
  10. 基于粒子群的ieee30节点优化、配电网有功-无功优化
  11. 如何编写PMP项目管理中的项目立项书
  12. Rocket Kitten 报告
  13. VC安装驱动详细解释
  14. 知乎日报富文本处理android,一个追求高效的学习者手机里装有哪些APP?
  15. NURBS Curves
  16. 通过微信公众平台获取公众号文章
  17. 科技部等6部门发文,推动AI场景创新;『精益副业』教程序员优雅做副业;『可扩展系统』设计全教程;人物动作数据集;前沿论文 | ShowMeAI资讯日报
  18. Photoshop CC 2019入门知识手册
  19. 《卓有成效的管理者》笔记,第一章 卓有成效是可以学会的
  20. C#模仿腾讯QQ源码下载(附效果图)_张童瑶的博客

热门文章

  1. 初识qml——PathView xyz轴 路径属性 旋转效果 鼠标键盘控制
  2. docker 安装 sshd_2018_lcf
  3. 【杂文】CM 倒下了,但还有这些第三方安卓 ROM 让你刷个痛快
  4. 第九届蓝桥杯国一参赛感想
  5. java标识符命名规范 java关键字 标识符
  6. java.util.IllegalFormatConversionException: %d can't format com.mogujie.tt.protobuf.IMBaseDefine$Re
  7. JS鼠标滚轮事件mousewheel实现翻页(记录)
  8. Linux应用开发【第一章】Framebuffer应用开发
  9. 简单javascript计算器
  10. Newcoder练习题