zoukankan      html  css  js  c++  java
  • 17/10-17/11做题记录

    1.Luogu P1155 双栈排序

    Code:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define inf 0x7fffffff
     5 #define MN 1005
     6 #define ME 1000005
     7 using namespace std;
     8 inline int in(){
     9     int x=0;bool f=0; char c;
    10     for (;(c=getchar())<'0'||c>'9';f=c=='-');
    11     for (x=c-'0';(c=getchar())>='0'&&c<='9';x=(x<<3)+(x<<1)+c-'0');
    12     return f?-x:x;
    13 }
    14 struct edge{
    15     int to,next;
    16 }e[ME];
    17 int head[MN],col[MN],a[MN],f[MN],st1[MN],st2[MN];
    18 int n,cur,c1,c2,cnt=0;
    19 inline void ins(int x,int y){
    20     e[++cnt].to=y;e[cnt].next=head[x];head[x]=cnt;
    21 }
    22 inline bool dfs(int u,int c){
    23     col[u]=c;
    24     for (int i=head[u];i;i=e[i].next){
    25         int v=e[i].to;
    26         if (col[v]==c) return 0;
    27         if (col[v]==-1) dfs(v,c^1);
    28     }return 1;
    29 }
    30 int main()
    31 {
    32     n=in();f[n+1]=inf;memset(col,-1,sizeof(col));
    33     for (int i=1;i<=n;++i) a[i]=in();
    34     for (int i=n;i;--i) f[i]=min(a[i],f[i+1]);
    35     for (int i=1;i<=n;++i)
    36     for (int j=i+1;j<=n;++j){
    37         if (a[i]<a[j]&&a[i]>f[j+1]) ins(i,j),ins(j,i);
    38     }for (int i=1;i<=n;++i) if(col[i]==-1)
    39     if (!dfs(i,0)) {printf("0");return 0;}cur=1;
    40     for (int i=1;i<=n;++i){
    41         if (!col[i]) st1[++c1]=a[i],printf("a ");
    42         else st2[++c2]=a[i],printf("c ");
    43         while ((c1&&st1[c1]==cur)||(c2&&st2[c2]==cur)){
    44             while (c1&&st1[c1]==cur) printf("b "),--c1,++cur;
    45             while (c2&&st2[c2]==cur) printf("d "),--c2,++cur;
    46         }
    47     }return 0;
    48 }

    2.Luogu P1099 树网的核

    Code:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define inf 0x3f3f3f3f
     5 #define ME 605
     6 #define MN 303
     7 using namespace std;
     8 inline int in(){
     9     int x=0;bool f=0; char c;
    10     for (;(c=getchar())<'0'||c>'9';f=c=='-');
    11     for (x=c-'0';(c=getchar())>='0'&&c<='9';x=(x<<3)+(x<<1)+c-'0');
    12     return f?-x:x;
    13 }
    14 struct edge{
    15     int to,next,val;
    16 }e[ME];
    17 int head[MN],dis[MN][MN],st[MN];
    18 int n,m,s,t,dmx=0,md=inf,res=inf,mx=0,dx,dy,cnt=0,v,ct=0;
    19 bool vis[MN],mk=0;
    20 inline void ins(int x,int y,int v){
    21     e[++cnt].to=y;e[cnt].next=head[x];head[x]=cnt;e[cnt].val=v;
    22     dis[x][y]=v;
    23 }
    24 inline void dfs(int u){
    25     if (u==dy) {mk=1;return;}
    26     for (int i=head[u];i;i=e[i].next){
    27         int v=e[i].to;
    28         if (!vis[v]){
    29             vis[v]=1;st[++ct]=v;dfs(v);
    30             if (mk) return;--ct;
    31         }
    32     }
    33 }
    34 
    35 int main()
    36 {
    37     n=in();m=in();
    38     memset(dis,0x3f,sizeof(dis));
    39     for (int i=1;i<=n;++i) dis[i][i]=0;
    40     for (int i=1;i<n;++i){
    41         s=in();t=in();v=in();
    42         ins(s,t,v);ins(t,s,v);
    43     }
    44     for (int k=1;k<=n;++k)
    45     for (int i=1;i<=n;++i)
    46     for (int j=1;j<=n;++j)
    47     dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    48     for (int i=1;i<=n;++i)
    49     for (int j=i+1;j<=n;++j){
    50         if (dmx<dis[i][j]) dmx=dis[i][j],dx=i,dy=j;
    51     }vis[dx]=1,st[++ct]=dx;dfs(dx);memset(vis,0,sizeof(vis));
    52     for(int i=1;i<=ct;++i)
    53     for(int j=i;j<=ct;++j){
    54         int sum=dis[st[i]][st[j]],mx=0;if (sum>m) break;
    55         for (int k=1;k<=n;++k){
    56             md=inf;for (int l=i;l<=j;++l)
    57             md=min(md,dis[k][st[l]]);mx=max(mx,md);
    58         }res=min(res,mx?mx:inf);
    59     }printf("%d",res);return 0;
    60 }

    <not_completed>

  • 相关阅读:
    [NOI2010] 能量采集 (数学)
    mysql双主操作记录
    linux查看版本
    netty
    idea修改文件,target目录对应的文件消失
    oracle11g的分区(range、list)索引测试
    There is a cycle in the hierarchy解决办法
    git学习转廖雪峰
    解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
    nginx之 proxy_pass
  • 原文地址:https://www.cnblogs.com/codingutopia/p/record1710-11.html
Copyright © 2011-2022 走看看