• 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 许可协议。转载请注明出处!
  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/6055536.html
Copyright © 2020-2023  润新知