zoukankan      html  css  js  c++  java
  • NOIp #2009

    http://files.cnblogs.com/files/radiumlrb/NOIP2009%E6%8F%90%E9%AB%98%E7%BB%84%E5%A4%8D%E8%B5%9B%E8%AF%95%E9%A2%98.pdf

    T1 潜伏着 Label:字符串大水

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<cstdlib>
     6 #include<map>
     7 using namespace std;
     8 
     9 map<char,char> m;
    10 int used[99];
    11 string dst,key,con;
    12 
    13 void Error_lrb(){puts("Failed");exit(0);}
    14 
    15 int main(){
    16 //    freopen("spy.in","r",stdin);freopen("spy.out","w",stdout);
    17     
    18     cin>>con>>key>>dst;
    19     for(int i=0;i<key.size();i++){
    20         if(!m.count(con[i])){
    21             if(used[key[i]]) Error_lrb();
    22             m[con[i]]=key[i],used[key[i]]=1;
    23         }
    24         else if(m[con[i]]!=key[i]) Error_lrb();
    25     }
    26     
    27     for(char i='A';i<='Z';i++) if(!m.count(i))Error_lrb();
    28     
    29     for(int i=0;i<dst.size();i++){
    30         if(m.count(dst[i])) cout<<m[dst[i]];
    31         else Error_lrb();
    32     }
    33     
    34     puts("");
    35     fclose(stdin);fclose(stdout);return 0;
    36 }

    T2 Hankson 的趣味题

    T3 最优贸易

      1 #include<iostream>
      2 #include<cstring>
      3 #include<cstdio>
      4 #include<algorithm>
      5 #include<queue>
      6 #include<cstdlib>
      7 #include<vector>
      8 #define INF 0x3f3f3f3f
      9 #define ll long long
     10 #define maxn 200005
     11 using namespace std;
     12 
     13 int cmp[maxn];//强联通映射表
     14 int c_lrb[maxn];//正常点
     15 int cu[maxn];//强联通最高价 
     16 int cl[maxn];//强联通最低价 
     17 int white_list[maxn];
     18 int N,M;
     19 
     20 vector<int> G_lrb[maxn],rG_lrb[maxn];//正常点邻接表
     21 vector<int> G[maxn];//强联通邻接表 
     22 
     23 void init_(){
     24     scanf("%d%d",&N,&M);
     25     for(int i=1;i<=N;i++) scanf("%d",&c_lrb[i]);
     26     for(int i=1;i<=M;i++){
     27         int x,y,op;
     28         scanf("%d%d%d",&x,&y,&op);
     29         if(op==1){
     30             G_lrb[x].push_back(y);rG_lrb[y].push_back(x);
     31         }
     32         else{
     33             G_lrb[x].push_back(y);rG_lrb[x].push_back(y);
     34             G_lrb[y].push_back(x);rG_lrb[y].push_back(x);
     35         }
     36     }
     37     memset(cl,0x3f,sizeof(cl));
     38 }
     39 
     40 //scc
     41 ////////////////////////////////////////////////////////////
     42 
     43 int vis[maxn];
     44 vector<int> vec;
     45 void dfs(int x){
     46     if(!white_list[x]) return;
     47     vis[x]=1;
     48     for(int i=0;i<G_lrb[x].size();i++){
     49         if(!vis[G_lrb[x][i]]) dfs(G_lrb[x][i]);
     50     }
     51     vec.push_back(x);
     52 }
     53 
     54 void rdfs(int x,int k){
     55     cmp[x]=k;
     56     vis[x]=1;
     57     cl[k]=min(cl[k],c_lrb[x]);
     58     cu[k]=max(cu[k],c_lrb[x]);
     59     
     60     for(int i=0;i<rG_lrb[x].size();i++){
     61         if(!vis[rG_lrb[x][i]]) rdfs(rG_lrb[x][i],k);
     62     }
     63 //    puts("x");
     64 }
     65 
     66 void build(int x){
     67     vis[x]=1;
     68     int k=cmp[x];
     69     for(int i=0;i<G_lrb[x].size();i++){
     70         if(cmp[G_lrb[x][i]]!=k){
     71             if(!vis[G_lrb[x][i]]) build(G_lrb[x][i]);
     72             if(white_list[G_lrb[x][i]])G[k].push_back(cmp[G_lrb[x][i]]);
     73         }
     74     }
     75 }
     76 
     77 void make_list(){
     78     queue<int> q;
     79     q.push(N);
     80     while(!q.empty()){
     81         int x=q.front();q.pop();
     82         if(vis[x]) continue;white_list[x]=vis[x]=1;
     83         for(int i=0;i<rG_lrb[x].size();i++){
     84             q.push(rG_lrb[x][i]);
     85         }
     86     }
     87 }
     88 
     89 int k=0;
     90 void scc(){
     91     memset(vis,0,sizeof(vis));
     92     make_list();
     93     memset(vis,0,sizeof(vis));
     94     for(int i=1;i<=N;i++) if(!vis[i]) dfs(i);
     95     memset(vis,0,sizeof(vis));
     96     for(int i=vec.size()-1;i>=0;i--){
     97         int x=vec[i];
     98         if(!vis[x]) rdfs(x,++k);
     99     }
    100     
    101     memset(vis,0,sizeof(vis));
    102     build(1);
    103 }
    104 
    105 ////////////////////////////////////////////////////////////
    106 int s,t,ans;//此时节点数为p 
    107 
    108 void work_dfs(int x,int pre_low){
    109     pre_low=min(cl[x],pre_low);
    110     ans=max(ans,cu[x]-pre_low);
    111     
    112     for(int i=0;i<G[x].size();i++){
    113         if(!vis[G[x][i]]) work_dfs(G[x][i],pre_low);
    114     }
    115 }
    116 
    117 void work(){
    118     s=cmp[1],t=cmp[N];
    119     memset(vis,0,sizeof(vis));
    120     work_dfs(s,cl[s]);
    121 //    for(int i=1;i<=N;i++) printf("%d
    ",white_list[i]);
    122 //    puts("");
    123     printf("%d",ans);
    124 }
    125 
    126 int main(){
    127 //    freopen("trade.in","r",stdin);//freopen("trade.out","w",stdout);
    128     //注意超时 
    129     init_();
    130     scc();
    131     work();
    132     
    133     fclose(stdin);fclose(stdout);return 0;
    134 }

    写了一个强联通分量,果然T了

    T4 靶形数独

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    Sentinel实现熔断和限流
    Nacos 服务注册和配置中心
    SpringCloud Sleuth 分布式请求链路跟踪
    SpringCloud Stream消息驱动
    SpringCloud Bus消息总线
    SpringCloud Config分布式配置中心
    Geteway服务网关
    Hystrix断路器
    libecc:一个可移植的椭圆曲线密码学库
    第四十二个知识点:看看你的C代码为蒙哥马利乘法,你能确定它可能在哪里泄漏侧信道路吗?
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/6055536.html
Copyright © 2011-2022 走看看