NOIp #2009
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的更多相关文章
- 最优贸易 NOIP 2009 提高组 第三题
题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...
- NOIP 2009 潜伏者
P1071 潜伏者 题目描述 RR 国和 SS 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 SS 国的 RR 国间谍小 CC 终于摸清了 SS 国军用密码的编码规则: ...
- 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...
- NOIP 2009 靶形数独(DLX)
小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作 ...
- noip 2009 细胞分裂
/*数论题 考察唯一分解定理 当然用到一些技巧*/ #include<iostream> #include<cstdio> #include<cstring> #d ...
- noip 2009 道路游戏
/*10分钟的暴力 意料之中的5分..*/ #include<iostream> #include<cstdio> #include<cstring> #defin ...
- 【noip 2009】 乌龟棋 记忆化搜索&动规
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- [NOIp 2009]靶形数独
Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他 ...
- [NOIp 2009]Hankson的趣味题
Description Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课 ...
随机推荐
- Arcgis10安装说明
注意无需覆盖任何文件,只需根据文章后面的内容自己随机建一个任意格式的文本文件即可 安装license manager,将后面的license 内容新建一个文本文档拷贝进去.使用这个文件作为lice ...
- [Head First设计模式]身边的设计模式——适配器模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- esnext:最后一个参数后面也允许加逗号了
https://jeffmo.github.io/es-trailing-function-commas 目前是一个 stage 3 的提案,Chakra 和 JSC 已经实现了,它允许我们在函数定义 ...
- tyvj1004 滑雪
描述 trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜. 例如样例中的那个矩形,可以从某 ...
- 练习:使用nmcli 配置网络连接
显示所有连接 # nmcli con show 显示活动连接的所有配置信息 # nmcli con show "System eth0" --->引号内为连接的网卡名称 显示 ...
- pathinfo()、dirname()、basename()获得文件的路径,名称等信息说明
在PHP中,若想通过函数获得一个文件的路径.名称,或者是扩展名等,是非常容易的一件事.可以使用dirname().basename().pathinfo()等多种途径获得相应的信息. 假设现在有一个图 ...
- 知识联结梳理 : I/O多路复用、EPOLL(SELECT/POLL)、NIO、Event-driven、Reactor模式
为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平. I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题.它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数, ...
- Hibernate参数一览表
参考文章地址:http://www.blogjava.net/i369/articles/194855.html Hibernate 参数设置一览表 属性名 用途 hibernate.dialect ...
- cf596d
题意:有一排等高的树木,高度都为h.给出每棵树在数轴上的坐标,每次有可能是最左边或者最右边的立着的树倒下,概率都是0.5.最终所有树都倒下.每棵树在倒下的时候有p的概率向左倒,1-p的概率向右倒.如果 ...
- Unity3D 查找Update函数体为空的类
如果是大项目,有很多Update空跑还是多少有些效率损耗,那我们就把他们都找出来. 先引用Mono.Cecil //代码 using UnityEngine; using UnityEditor; u ...