A1139 | 玩成模拟题的DFS
考试的时候有思路了,但是没写完。这题起码要40min写,思路太诡异了。
刚刚写了一段,只过了一个case,得了18分,还行。明日再战。
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 50000
#define MAX 0x06FFFFFF using namespace std; vector<int> v[];
int cnt=;
map<int,int> ID2index;
void buildConnect(int a,int b);
bool judge(int mul,int pos);
int mode=; typedef struct CP{
int a,b;
CP(int A,int B){a=A;b=B;}
}CP; bool cmp(CP a,CP b); int main() {
freopen("d:/input/A1139.txt","r",stdin);
int n,m,k;
scanf("%d%d",&n,&m);
while(m-->){
int a,b;
scanf("%d %d",&a,&b);
buildConnect(a,b);
buildConnect(b,a);
}
scanf("%d",&k);
while(k-->){
int a,b,i,j,k;
scanf("%d %d",&a,&b);
mode= a*b> ? : ;
vector<CP> ot;
int i1=ID2index[a],i2,i3;
int O1,O2;
FF(i,v[i1].size()) if(judge(v[i1][i]*a,)){//find tongXing
O1=v[i1][i];
i2=ID2index[O1];//is tongXing
FF(j,v[i2].size()) if(judge(v[i2][j]*a,)){//find yiXing
O2=v[i2][j];
i3=ID2index[O2];//is yiXing
FF(k,v[i3].size()) if(v[i3][k]==b){//find object
CP tmp(abs(O1),abs(O2));
ot.push_back(tmp);
break;
}
}
}
int s=ot.size();
sort(ot.begin(),ot.end(),cmp);
O("%d\n",s);
FF(i,s) O("%d %d\n",ot[i].a,ot[i].b);
}
return ;
} void buildConnect(int a,int b){
int index=ID2index[a];
if(index>){//find
v[index].push_back(b);
}else{
ID2index[a]=cnt;//cnt is a new index
v[cnt++].push_back(b);
}
} bool cmp(CP a,CP b){
if(a.a<b.a) return true;
else if(a.a==b.a && a.b<b.b) return true;
return false;
} bool judge(int mul,int pos){
if(mode==){
if(pos== && mul>)return true;
if(pos== && mul<)return true;
}
if(mode==){
if(pos== && mul>)return true;
if(pos== && mul>)return true;
}
return false;
}
2017年3月14日,24分:
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 10000
#define MAX 0x06FFFFFF
#define V vector<int> using namespace std; typedef struct Node{
int a,b;
Node(int a=,int b=):a(a),b(b){
}
bool operator < (const Node& obj) const
{
if(a<obj.a || (a==obj.a && b<obj.b))
return ;
return ;
}
}; vector<int> adj[LEN];
int isg[LEN];
int vis[LEN];
vector<int> path;
set<Node> ans; int N,M,K; //dfs(s,e,0,mode);
void dfs(int s,int e,int cnt,int mode){
if(cnt>) return;
if(s==e && cnt==){
ans.insert(Node(path[],path[]));
return;
}
int i;
FF(i,adj[s].size()){
int o=adj[s][i];
if(vis[o]==){
bool isOK=;
if(mode<){
if(cnt%== && isg[s]*isg[o]>) isOK=;
if(cnt%== && isg[s]*isg[o]<) isOK=;
}else{
if(isg[s]*isg[o]>) isOK=;
}
if(isOK){
vis[o]=;
path.push_back(o);
dfs(o,e,cnt+,mode);
path.pop_back();
vis[o]=;
}
}
}
} int proc(int a){
if(a<){
a=-a;
isg[a]=-;
}else{
isg[a]=;
}
return a;
} int main(){
// freopen("1139.txt","r",stdin);
int s,e,i,j,a,b;
I("%d%d",&N,&M);
while(M--){
I("%d%d",&a,&b);
a=proc(a);
b=proc(b);
adj[a].push_back(b);
adj[b].push_back(a);
}
I("%d",&K);
while(K--){
I("%d%d",&s,&e);
int mode=s*e;
s=abs(s);
e=abs(e);
ans.clear();
path.clear();
vis[s]=;
dfs(s,e,,mode);
vis[s]=;
set<Node>::iterator it=ans.begin();
O("%d\n",ans.size());
while(it!=ans.end()){
O("%04d %04d\n",it->a,it->b);
it++;
}
}
return ;
}
A1139 | 玩成模拟题的DFS的更多相关文章
- 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题
这篇文章来介绍一些模拟题,即一类按照题目要求将现实的操作转换成程序语言. zoj1003: On every June 1st, the Children's Day, there will be a ...
- noip模拟题题解集
最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...
- 8.22 NOIP 模拟题
8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...
- CSP复赛day2模拟题
没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj1472[模拟题]
Instant Complexity Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2017 Accepted: 698 ...
- ZOJ1111:Poker Hands(模拟题)
A poker deck contains 52 cards - each card has a suit which is one of clubs, diamonds, hearts, or sp ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- ACdreamoj(1105)模拟题
题意:射一次激光最多能够攻击到几个敌人(因为激光非常强大,能够在击中敌人后穿过它,而瑶瑶自己的坦克因为有特殊装置,所以不会被激光击中.激光也会直接穿过它) . 表示此处为空地 * 表示此处为障碍(激光 ...
随机推荐
- Quartz.net使用笔记
一.需求场景:每天固定时间执行某个行为/动作. 一开始想用定时器,后来无意间发现了这个插件,感觉功能太强大了,完美解决了我的问题. 二.下载地址:https://www.quartz-schedule ...
- 2019 云和数据java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.云和数据等公司offer,岗位是Java后端开发,因为发展原因最终选择去了云和数据,入职一年时间了,也成为了面 ...
- SpringBoot中执行定时任务
一:在SpringBoot中使用定时任务相当的简单.首先,我们在启动类中加入@EnableScheduling来开启定时任务. @SpringBootApplication @EnableSchedu ...
- python爬虫爬取天气数据并图形化显示
前言 使用python进行网页数据的爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该 ...
- Java深入学习(4):Future模式
Future模式: 其实相当于是前端的Ajax 比如我们使用多线程下载文件时候,每一个线程都会发送HTTP请求资源.而我如何知道,文件下载完毕呢? 也就是说,主线程如何获得子线程的执行结果呢? 创建多 ...
- ZooKeeper基本介绍
一.入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调的Apache项目.可用于服务发现,分布式锁,分布式领导选举,配置管理等. Zookeeper从设计模式角度来理解: ...
- workman即时推送
https://www.workerman.net/web-sender 下载源码解压后运行 start_for_win.bat 如果提示不成功,就把php路径配置到环境变量中去即可 运行后打开浏 ...
- Django之DRF源码分析(二)---数据校验部分
Django之DRF源码分析(二)---数据校验部分 is_valid() 源码 def is_valid(self, raise_exception=False): assert not hasat ...
- BBS之文章详情页搭建
博客评论相关 博客文章详情页搭建 {% extends 'base.html' %} {% block css %} <style> #div_digg { float: right; m ...
- expect免交互用法
一.ssh免交互远程连接linux服务器 ssh在远程连接linux系统时,会有交互,比如输入yes/no,或者需要输入密码.我们怎么避免这些交互呢!比如我们可以用telnet远程登录交换机,去备份交 ...