考试的时候有思路了,但是没写完。这题起码要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. -UI调试工具 SAK 布局 MD

    目录 目录 SwissArmyKnife 接入方式 自动初始化版本 支持的功能 可配置项 原理 自定义功能 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndro ...

  2. eclipse从svn检出maven项目

    使用Eclipse从svn检出项目. 打开Eclipse,在project explorer空白区域右键鼠标移至import选择import. 2 之后选择svn-->从svn检出项目,然后输入 ...

  3. 将html中的内容生成PDF并且下载

    <head> @*需要引用的js库*@ <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0. ...

  4. mybatis日志,打印sql语句,输出sql

    mybatis日志,打印sql语句,输出sql<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...

  5. Ext.bind函数说明

    bind( fn, [scope], [args], [appendArgs] ) : FunctionCreate a new function from the provided fn, chan ...

  6. Android中自定义水球

    如图所示: 自定义属性: 在values下创建attrs.xml 文件 <?xml version="1.0" encoding="utf-8"?> ...

  7. I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

    遇到了这个问题,意思是你的 CPU 支持AVX AVX2 (可以加速CPU计算),但你安装的 TensorFlow 版本不支持 解决:1. 如果是初学者 或者 没有太大计算速度的需求,在开头加上这两行 ...

  8. php与阿里云短信接口接入

    使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId  相当于你的个人账户密钥: 2. accessKeySec ...

  9. Spring框架的AOP编程,最通俗的语言解释,易懂易学

    第七章:AOP技术 前言: AOP技术是根据动态代理设计模式进行的技术.动态代理技术分jdk动态代理和cglib动态代理 jdk动态代理特点: (1)继承java.lang.reflect.proxy ...

  10. window10体验terminal

    体验window-terminal(preview),很不错可以直接登录服务器通过ssh 01.打开store 02.搜索terminal 03.体验ssh主机 04.很爽,可以ctrl + 鼠标滚轮 ...