首页 > 其他分享 >D40 2-SAT POJ3683 Priest John's Busiest Day

D40 2-SAT POJ3683 Priest John's Busiest Day

时间:2024-08-07 20:17:06浏览次数:4  
标签:include int Busiest add Priest low dfn John

视频链接:D40 2-SAT POJ3683 Priest John's Busiest Day_哔哩哔哩_bilibili

 

 

 

POJ 3683 -- Priest John's Busiest Day (poj.org)

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N=2005;
int n;
int head[N],to[N*N],ne[N*N],idx;
int dfn[N],low[N],tim,stk[N],top,scc[N],cnt;
int s[N],t[N],d[N];


void add(int a,int b){
  to[++idx]=b,ne[idx]=head[a],head[a]=idx;
}
void tarjan(int x){
  dfn[x]=low[x]=++tim;
  stk[++top]=x;
  for(int i=head[x];i;i=ne[i]){
    int y=to[i];
    if(!dfn[y]){ //若y尚未访问
      tarjan(y);
      low[x]=min(low[x],low[y]);
    }
    else if(!scc[y]) //若y已访问且未处理
      low[x]=min(low[x],dfn[y]);
  }
  
  if(low[x]==dfn[x]){ //若x是SCC的根
    ++cnt;
    for(int y=-1;y!=x;)
      scc[y=stk[top--]]=cnt;
  }
}
int main(){
  scanf("%d",&n);
  for(int i=0;i<n;i++){
    int s0,s1,t0,t1,dd;
    scanf("%d:%d %d:%d %d",&s0,&s1,&t0,&t1,&dd);
    s[i]=s0*60+s1;
    t[i]=t0*60+t1;
    d[i]=dd;
  }
  for(int i=0;i<n;i++)
    for(int j=0;j<i;j++){
      if(s[j]+d[j]>s[i]&&s[i]+d[i]>s[j]) 
        add(i,j+n),add(j,i+n); //i,j重叠
      if(t[j]>s[i]&&s[i]+d[i]>t[j]-d[j]) 
        add(i,j),add(j+n,i+n); //i,j+n重叠
      if(s[j]+d[j]>t[i]-d[i]&&t[i]>s[j]) 
        add(i+n,j+n),add(j,i); //i+n,j重叠
      if(t[j]>t[i]-d[i]&&t[i]>t[j]-d[j]) 
        add(i+n,j),add(j+n,i); //i+n,j+n重叠
    }
  
  for(int i=0;i<n*2;i++) if(!dfn[i])tarjan(i);
  for(int i=0;i<n;i++)
    if(scc[i]==scc[i+n]){puts("NO");return 0;}
  puts("YES");
  for(int i=0;i<n;i++){
    if(scc[i]<scc[i+n]) printf("%02d:%02d %02d:%02d\n",
        s[i]/60,s[i]%60,(s[i]+d[i])/60,(s[i]+d[i])%60);
    else printf("%02d:%02d %02d:%02d\n",
        (t[i]-d[i])/60,(t[i]-d[i])%60,t[i]/60,t[i]%60);
  }
}

 

练习:

Wedding - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 

标签:include,int,Busiest,add,Priest,low,dfn,John
From: https://www.cnblogs.com/dx123/p/18335147

相关文章

  • Johnson 全源最短路算法以及 Primal-Dual 原始对偶算法
    Johnson全源最短路算法引入:多源最短路问题,设点数为\(n\)边数为\(m\)。我们有如下方案:floyd,时间复杂度\(O(n^3)\),适合任意图。Bellman-ford(SPFA),时间复杂度\(O(n^2m)\),适合任意图。Dijkstra,时间复杂度\(O(nm\logm)\),适合非负权图。综上分析,我们发现:Dijkstra的时间......
  • centos系统构建安装john导致的编译问题error: size of array element is not a multip
    blake2.h:112:5:error:sizeofarrayelementisnotamultipleofitsalignment112|blake2b_stateS[4][1];|^~~~~~~~~~~~~blake2.h:113:5:error:sizeofarrayelementisnotamultipleofitsalignment113|blake2b_stateR[1];......
  • Johnson-Lindenstrauss Lemma 随即投影
    michael 作者忘忧草不是大佬。我感觉我说的挺具体的了,一共就两行代码,一行构建随机矩阵,一行做矩阵乘法。你会python的话可以这么写:g_matrix=numpy.random.normal(size=(n,m))output=numpy.matmul(input,g_matrix)2021-12-08​回复​1mic......
  • Johnson法则
    2条的流水作业调度问题的贪心做法。题目:有n个作业要在两台机器M1和M2组成的流水线上完成加工。每个作业i都必须先花时间ai在Mi上加工,然后花时间bi在M2上加工确定n个作业的加工顺序,使得从作业1在机器M1上加工开始到作业n在机器M2上加工为止所用的总时间最短做法:(1)把所有......
  • 在Minitab中进行正态能力分析(顺便计算出Cpk)—— 熟悉非正态数据转换(Box-Cox与Johnson
    一、下面是用Minitab表达的正态分布能力分析,也可直接计算出了Cpk,1.普通正态分布能力分析,注意Cpk,Ppk的值>1.33,表明能力充足;性能指标中ppm1.11*10-6(每百万个钟有1.11个不合格品,说明质量控制的比较好)     2.Johnson变换后的正态分布能力分析 3.Box-Cox变换 ......
  • Johnson算法
    一、算法简析\(Johnson\)算法可以求解带负权边的中小图的全源最短路径。算法步骤:建立虚拟源点\(0\),从\(0\)至其它各点添加权值为\(0\)有向边。用\(spfa\)算法求出从\(0\)至其它各点的最短路径h[i]。将原图中边的权值改为:\(w(u,v)+h[u]-h[v]\),建立了一张新图。以......
  • 题解 CF1942F【Farmer John's Favorite Function】
    萌萌F题,上大分。首先,如下定义\(g(i)\):\(g(1)=\lfloor\sqrt{a_1}\rfloor\);对于所有\(i>1\),\(g(i)=\lfloor\sqrt{g(i-1)+a_i}\rfloor\)。也就是将\(f(i)\)的每一步运算后都向下取整。注意到\(\lfloorf(i)\rfloor=g(i)\)恒成立,于是我们只需要转而求每次修改后\(g(n......
  • CF1942F Farmer John's Favorite Function
    题意简述定义\(f_i=\sqrt{f_{i-1}+a_i},f_0=0\)。有\(q\)次操作,每次操作单点修改一个\(a_i\)的值,每次修改后求\(\lfloorf_n\rfloor\)的值。\(n,q\le2\times10^5,0\lea_i\le10^{18}\)。分析发现这个\(f_i\)不是整数非常不利于我们做题,考虑将它变成整数。令新的......
  • CodeForces 1942F Farmer John's Favorite Function
    洛谷传送门CF传送门考虑一些复杂度带根号的做法。考虑分块,对于一个块,我们需要处理出一个数经过这个块会变成哪个数。以下假设块长\(\ge10\)(最后一个块块长可能\(<10\),暴力处理即可)。观察这个递推式\(f_i=\left\lfloor\sqrt{f_{i-1}+a_i}\right\rfloor\),发现对于一......
  • John Deere Service Advisor EDL V3 Electronic Data Link Diagnostic Kit
    JohnDeereServiceAdvisorEDLV3ElectronicDataLinkDiagnosticKitisapowerfultooldesignedspecificallyforheavy-dutymachineryusedinconstruction,agriculture,enginesbyJohnDeere.Thisdiagnosticadapterisessentialfortechniciansandoper......