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 许可协议。转载请注明出处!
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/6055536.html
Copyright © 2011-2022 走看看