考试的时候有思路了,但是没写完。这题起码要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的更多相关文章

  1. 《ACM国际大学生程序设计竞赛题解Ⅰ》——模拟题

    这篇文章来介绍一些模拟题,即一类按照题目要求将现实的操作转换成程序语言. zoj1003: On every June 1st, the Children's Day, there will be a ...

  2. noip模拟题题解集

    最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...

  3. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

  4. CSP复赛day2模拟题

    没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...

  5. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  6. poj1472[模拟题]

    Instant Complexity Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2017   Accepted: 698 ...

  7. ZOJ1111:Poker Hands(模拟题)

    A poker deck contains 52 cards - each card has a suit which is one of clubs, diamonds, hearts, or sp ...

  8. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

  9. ACdreamoj(1105)模拟题

    题意:射一次激光最多能够攻击到几个敌人(因为激光非常强大,能够在击中敌人后穿过它,而瑶瑶自己的坦克因为有特殊装置,所以不会被激光击中.激光也会直接穿过它) . 表示此处为空地 * 表示此处为障碍(激光 ...

随机推荐

  1. SQL系列(十一)—— 函数(function)

    SQL中的函数也非常多,而且不同的DBMS提供了相应的特殊函数.但是常用的共性函数大致可以分为以下几种: 函数类型 函数 数值函数 1.算术计算:+.-.*./ 2.数值处理:ABS()绝对值处理.P ...

  2. mysql 5.7 修改root密码允许远程连接

    1.修改root密码(其他用户类似)  试过网上看的一些 在mysql数据库执行 update user set password='新密码'  where user='root' 执行说找不到字段, ...

  3. 上传文件大小与时间 Web.Config文件 httpRuntime 限制

    httpRuntime  <httpRuntime executionTimeout="90" maxRequestLength="40960" useF ...

  4. C#读写调整修改设置UVC摄像头画面-逆光对比

    有时,我们需要在C#代码中对摄像头的逆光对比进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的 ...

  5. 自定义HTTP消息拦截

    /// <summary> /// HTTP消息拦截器 /// </summary> public class RequestHandler : DelegatingHandl ...

  6. vuejs应用开发前后端分离

    我们知道,无论是web应用还是app应用都有一个前后端,前端主要负责界面交互,后端负责数据持久化.在正规公司中一般是由两个团队来分别完成前端和后端的开发,在小公司或者个人开发的项目中,前后端很有可能是 ...

  7. Pika 连接 rabbitmq 集群

    原文:https://blog.csdn.net/Tech_Salon/article/details/82890431 使用 Pika 连接 rabbitmq 集群使用 python 编程经常会用到 ...

  8. IntelliJ IDEA live template 方法配置

    ** * <p></p> * 功能描述 * $params$ * @return $return$ * @author abc * @date $time$ $date$ * ...

  9. springboot脚手架liugh-parent源码研究参考

    1. liugh-parent源码研究参考 1.1. 前言 这也是个开源的springboot脚手架项目,这里研究记录一些该框架写的比较好的代码段和功能 脚手架地址 1.2. 功能 1.2.1. 当前 ...

  10. vector中的push_back函数的意思是什么

    push_back   就是在vector的末尾插入一个元素, vector 中的erase()函数,从指定容器删除指定位置的元素或者某段范围内的元素,删除之后,返回值也是一个迭代器,指向最后一个删除 ...