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:字符串大水

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<map>
using namespace std; map<char,char> m;
int used[];
string dst,key,con; void Error_lrb(){puts("Failed");exit();} int main(){
// freopen("spy.in","r",stdin);freopen("spy.out","w",stdout); cin>>con>>key>>dst;
for(int i=;i<key.size();i++){
if(!m.count(con[i])){
if(used[key[i]]) Error_lrb();
m[con[i]]=key[i],used[key[i]]=;
}
else if(m[con[i]]!=key[i]) Error_lrb();
} for(char i='A';i<='Z';i++) if(!m.count(i))Error_lrb(); for(int i=;i<dst.size();i++){
if(m.count(dst[i])) cout<<m[dst[i]];
else Error_lrb();
} puts("");
fclose(stdin);fclose(stdout);return ;
}

T2 Hankson 的趣味题

T3 最优贸易

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstdlib>
#include<vector>
#define INF 0x3f3f3f3f
#define ll long long
#define maxn 200005
using namespace std; int cmp[maxn];//强联通映射表
int c_lrb[maxn];//正常点
int cu[maxn];//强联通最高价
int cl[maxn];//强联通最低价
int white_list[maxn];
int N,M; vector<int> G_lrb[maxn],rG_lrb[maxn];//正常点邻接表
vector<int> G[maxn];//强联通邻接表 void init_(){
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++) scanf("%d",&c_lrb[i]);
for(int i=;i<=M;i++){
int x,y,op;
scanf("%d%d%d",&x,&y,&op);
if(op==){
G_lrb[x].push_back(y);rG_lrb[y].push_back(x);
}
else{
G_lrb[x].push_back(y);rG_lrb[x].push_back(y);
G_lrb[y].push_back(x);rG_lrb[y].push_back(x);
}
}
memset(cl,0x3f,sizeof(cl));
} //scc
//////////////////////////////////////////////////////////// int vis[maxn];
vector<int> vec;
void dfs(int x){
if(!white_list[x]) return;
vis[x]=;
for(int i=;i<G_lrb[x].size();i++){
if(!vis[G_lrb[x][i]]) dfs(G_lrb[x][i]);
}
vec.push_back(x);
} void rdfs(int x,int k){
cmp[x]=k;
vis[x]=;
cl[k]=min(cl[k],c_lrb[x]);
cu[k]=max(cu[k],c_lrb[x]); for(int i=;i<rG_lrb[x].size();i++){
if(!vis[rG_lrb[x][i]]) rdfs(rG_lrb[x][i],k);
}
// puts("x");
} void build(int x){
vis[x]=;
int k=cmp[x];
for(int i=;i<G_lrb[x].size();i++){
if(cmp[G_lrb[x][i]]!=k){
if(!vis[G_lrb[x][i]]) build(G_lrb[x][i]);
if(white_list[G_lrb[x][i]])G[k].push_back(cmp[G_lrb[x][i]]);
}
}
} void make_list(){
queue<int> q;
q.push(N);
while(!q.empty()){
int x=q.front();q.pop();
if(vis[x]) continue;white_list[x]=vis[x]=;
for(int i=;i<rG_lrb[x].size();i++){
q.push(rG_lrb[x][i]);
}
}
} int k=;
void scc(){
memset(vis,,sizeof(vis));
make_list();
memset(vis,,sizeof(vis));
for(int i=;i<=N;i++) if(!vis[i]) dfs(i);
memset(vis,,sizeof(vis));
for(int i=vec.size()-;i>=;i--){
int x=vec[i];
if(!vis[x]) rdfs(x,++k);
} memset(vis,,sizeof(vis));
build();
} ////////////////////////////////////////////////////////////
int s,t,ans;//此时节点数为p void work_dfs(int x,int pre_low){
pre_low=min(cl[x],pre_low);
ans=max(ans,cu[x]-pre_low); for(int i=;i<G[x].size();i++){
if(!vis[G[x][i]]) work_dfs(G[x][i],pre_low);
}
} void work(){
s=cmp[],t=cmp[N];
memset(vis,,sizeof(vis));
work_dfs(s,cl[s]);
// for(int i=1;i<=N;i++) printf("%d\n",white_list[i]);
// puts("");
printf("%d",ans);
} int main(){
// freopen("trade.in","r",stdin);//freopen("trade.out","w",stdout);
//注意超时
init_();
scc();
work(); fclose(stdin);fclose(stdout);return ;
}

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

T4 靶形数独

NOIp #2009的更多相关文章

  1. 最优贸易 NOIP 2009 提高组 第三题

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  2. NOIP 2009 潜伏者

    P1071 潜伏者 题目描述 RR 国和 SS 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 SS 国的 RR 国间谍小 CC 终于摸清了 SS 国军用密码的编码规则: ...

  3. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  4. NOIP 2009 靶形数独(DLX)

    小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作 ...

  5. noip 2009 细胞分裂

    /*数论题 考察唯一分解定理 当然用到一些技巧*/ #include<iostream> #include<cstdio> #include<cstring> #d ...

  6. noip 2009 道路游戏

    /*10分钟的暴力 意料之中的5分..*/ #include<iostream> #include<cstdio> #include<cstring> #defin ...

  7. 【noip 2009】 乌龟棋 记忆化搜索&动规

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  8. [NOIp 2009]靶形数独

    Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他 ...

  9. [NOIp 2009]Hankson的趣味题

    Description Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课 ...

随机推荐

  1. 基于canvas的陈列订货的分析

    订货会软件中又新增了进行陈列订货,即一杆衣服订的显示出来,没订的不显示出来 主要遇到的问题是如何呈现,原先老是想着定位,left,top但是花出来的图容易出现原先的数据填写错误导致后期的图片的呈现出现 ...

  2. Canvas绘制渐变

    1.绘制线性渐变 Canvas提供了用于创建线性渐变的函数createLinearGradient(x0,y0,x1,y1),坐标点(x0,y0)是起点 ,(x1,y1)是终点 创建一个渐变色 var ...

  3. 【转】搞不清FastCgi与php-fpm之间是个什么样的关系?

    我在网上查fastcgi与php-fpm的关系,查了快一周了,基本看了个遍,真是众说纷纭,没一个权威性的定义. 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-f ...

  4. 【ZJOI2013】k大数查询 BZOJ 3110

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位 ...

  5. what's cloud computing? IaaS

    Cloud computing has changed the ITC industry. Companies like Amazon, Google and Microsoft have built ...

  6. angularjs里对JS的lowercase和uppercase的完善

    读angularjs的源码开头. var lowercase = function (string) { return isString(string) ? string.toLowerCase() ...

  7. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  8. 四种常见的 POST 提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  9. FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

    1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备F ...

  10. 使用 lsyncd 本地目录实时备份

    转自 https://segmentfault.com/a/1190000002737213 2.1安装lsyncd # rpm -ivh http://dl.fedoraproject.org/pu ...