2017年团体程序设计天梯赛 - 大区赛 L3-3
题意:有向图找哈密顿回路
比赛的时候剪枝只剪了vis
状压没剪对 反而只拿17分...
比赛结束后还去看了一发这个NP问题的QB(快速回溯法...但是对于本题好像大材小用...)
上网看了一个神犇的写法....
才知道我的状压剪枝不对...因为状态不同的点也被剪掉了...
应该用状压表示走过的点,再用一维这些走过的点后出口点是多少...这样可以确保状态唯一(要不合法都不合法~,另外2的20次方不大..)
写的时候因为比赛的代码有测后台数据的代码部分,刚开始没屏蔽....
下次学神犇用断言测数据~
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+;
const ll mod = 1e9+;
char ch[][];
bool vis[];
bool mk[][<<];
int n;
vector<int>v;
vector<int>g[];
int now;
bool dfs(int x,int deep=,int nx=)
{
if(deep>=n)
{
//cout<<x<<ch[x][now]<<ch[now][x]<<endl;
if(ch[x][now]=='W'||ch[now][x]=='L'){
v.push_back(x);
return true;
}
else return false;
} for(int i=;i<g[x].size();i++)
{ if(vis[g[x][i]]==false&&mk[g[x][i]][nx]==false)
{
vis[g[x][i]] = true;
if(dfs(g[x][i],deep+,nx|(<<(g[x][i]-))))
{
v.push_back(x);
return true;
}
vis[g[x][i]] = false;
mk[g[x][i]][nx] = true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",ch[i]+);
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(ch[i][j]=='W'||ch[j][i]=='L')
{
g[i].push_back(j);
}
}
}
for(int i=;i<=n;i++)
{
sort(g[i].begin(),g[i].end());
g[i].erase(unique(g[i].begin(),g[i].end()),g[i].end());
}
//正向W 反向L
v.clear();
memset(vis,,sizeof(vis));
now = ;
vis[] = true;
//if(n==18) return 0*printf("No Solution");
if(dfs())
{ for(int j=v.size()-;j>;j--)
{
printf("%d ",v[j]);
}
printf("%d\n",v[]);
return ;
}
printf("No Solution");
return ;
}
2017年团体程序设计天梯赛 - 大区赛 L3-3的更多相关文章
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...
- PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...
随机推荐
- Javascript中对文字编码的三个函数
JavaScript中对文字编码主要有3个函数 escape,encodeURI, encodeURIComponent 相应3个解码函数 unescape, decodeURI, decodeURI ...
- JAVA学习笔记——(二)
今日内容介绍 1.变量 2.运算符 01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器 ...
- Django 的 路由系统
Django 的路由系统 URL 配置(URLconf)就像Django 锁支撑网站的目录. 它的本质就是URL 与要为该URL 调用的视图函数之间的映射表. 你就是以这种方式告诉Django, 对于 ...
- Finding Comments in Source Code Using Regular Expressions
Many text editors have advanced find (and replace) features. When I’m programming, I like to use an ...
- win form treeview添加节点
//实例代码: /// <summary> /// 添加节点事件 /// </summary> /// <param name="tnodes"> ...
- day02-HTML(2)
一.新知识 1. !+tab html5的标签结构 2. Charset 编码 Ascll Ansi Unicode Gbk Gb2312 Big5 Utf-8 通用字符集 3.关 ...
- 伪类选择器 :nth-child(even) :nth-child(odd) :nth-of-type
属性 描述 CSS :active 向被激活的元素添加样式. 1 :focus 向拥有键盘输入焦点的元素添加样式. 2 :hover 当鼠标悬浮在元素上方时,向元素添加样式. 1 :link 向未被访 ...
- js转义字符
\" \/ \" 例: span = "<span onclick=\"xadmin.open('编辑','\/junyi\/member\/up ...
- 浅淡Java多线程
工作中一直忙着实现业务逻辑,多线程接触得不多.对多线程的认知,一直停留在Thread和Runnable上.最近心血来潮,找了几本多线程的书,不看不知道,一看吓一跳.原来我对多线程的理解是多么的肤浅.记 ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...