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 正在思考一个有趣的问题. 今天在课 ...
随机推荐
- Java学习笔记12
循环 打印一个字符串(例如: "Welcome to Java!") 100次,就需要吧下面的输出语句重复写100遍,这是相当繁琐的: System.out.println(&qu ...
- context元素大概解说
Context元素代表一个web应用,运行在某个特定的虚拟主机上.如Servlet Specification 2.2或以后版本中描述的那样,每个web应用基于一个Web Application Ar ...
- 常见input输入框 点击 发光白色外阴影 focus
先看看具体实现的效果 第一就是点击input 实现的效果 默认谷歌点击input是蓝色边框 去掉用outline:0; 实现效果用focus 默认状态的边框颜色一般较重 如border:1px s ...
- loopback文档翻译
最近在学习loopback,期间在strongloop的官网翻译了部分文章. 见:https://docs.strongloop.com/pages/viewpage.action?pageId=60 ...
- UIScrollView的基本使用
UIScrollView的用法很简单 将需要展示的内容添加到UIScrollView中 设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉 ...
- iOS开发UI中懒加载的使用方法
1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其getter方法.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载 ...
- linuxmint 17安装qt5.3.1
从官方网站上下载的安装包,双击安装即可. 新建项目编译时,出现错误:cannot find -lGL 解决的方法:安装libgl1-mesa-dev,当然在安装时会安装其他的一些依赖包 在命令行中输入 ...
- $.prop()和$.attr() 区别用法
都用于读取和设置DOM元素节点的属性 不同: $.attr()用于DOM元素本身的属性 $.prop()用于DOM节点对应的JS属性(源于DOM元素到JS对象的映射) 源于两者在jquery类库的实现 ...
- Linux下用于查看系统当前登录用户信息 w命令
作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正在做什么.本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法. 1. 使用w ...
- php自动加载
初學PHP時,最早會面對的問題之一就是require與include差別何在?require_once與include_once又是什麼?弄懂這些問題之後,如果不使用framework,直接開發,便常 ...