团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码。体现代码技巧,比赛技巧。 https://github.com/congmingyige/cccc_code

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <iostream>
using namespace std; #define ll long long /*
1肯定是要放在第一位 节省空间 所有数字前移一位(k作为k-1,0作为n)。
2^20 -> 2^19 如果
使用康拓展开 19!< max long long
而不是20进制,使用两个变量 2^19*19*8 /1024/1024 =76
*/ const int maxn=;
const int inf=1e9;
const double eps=1e-; ll value[maxn],num[<<maxn][maxn];
bool f[<<maxn][maxn],vis[maxn],r[maxn+][maxn+];
int ii,a[maxn],v=,n,pr[maxn],g_pr=; void dfs(int k,int d)
{
int i;
if (k==)
{
int j,l,gl;
ll num1;
for (i=;i<=ii;i++)
if (f[v][a[i]])
for (j=;j<=n-;j++)
if (!vis[j] && r[a[i]][j])
{
gl=;
for (l=;l<j;l++)
if (vis[l])
gl++;
num1=num[v][a[i]]+value[-ii]*(j-gl);
if (!f[v|<<j][j] || num1<num[v|<<j][j])
{
f[v|<<j][j]=;
num[v|<<j][j]=num1;
}
}
return;
}
for (i=d;i<=n-;i++)
{
v+=<<i;
a[k]=i;
vis[i]=;
dfs(k-,i+);
vis[i]=;
v-=<<i;
}
} void work()
{
int i;
if (n==)
{
if (r[][] && r[][])
printf("1 2");
else
printf("No Solution");
exit();
}
for (i=;i<=n-;i++)
if (r[n-][i])
f[<<i][i]=,num[<<i][i]=value[]*i;
for (ii=;ii<=n-;ii++)
dfs(ii,);
} int main()
{
int i,j,k,ind,x,y;
ll v;
char c;
value[]=;
for (i=;i<=;i++)
value[i]=value[i-]*i; scanf("%d",&n);
for (i=;i<n;i++) ///start from 0 (2^0 = 1)
{
x=(i==)?n-:i-;
scanf("%c",&c);
for (j=;j<n;j++)
{
y=(j==)?n-:j-;
scanf("%c",&c);
if (c=='W')
r[x][y]=;
else if (c=='L')
r[y][x]=;
}
}
work(); j=(<<(n-))-;
num[j][n-]=9e18;
ind=n-; for (i=;i<=n-;i++)
if (f[j][i] && r[i][n-] && num[j][i]<num[j][ind])
ind=i; if (ind==n-)
{
printf("No Solution");
return ;
} memset(vis,,sizeof(vis));
v=num[j][ind];
printf("%d",);
for (i=;i>=-n;i--)
{
j=v/value[i];
k=;
while (vis[k])
k++;
while (j--)
{
k++;
while (vis[k])
k++;
}
printf(" %d",k+);
vis[k]=;
v%=value[i];
} return ;
}
/*
20
-WWWWWWWWWWWWWWWWWWW
W-WWWWWWWWWWWWWWWWWW
WW-WWWWWWWWWWWWWWWWW
WWW-WWWWWWWWWWWWWWWW
WWWW-WWWWWWWWWWWWWWW
WWWWW-WWWWWWWWWWWWWW
WWWWWW-WWWWWWWWWWWWW
WWWWWWW-WWWWWWWWWWWW
WWWWWWWW-WWWWWWWWWWW
WWWWWWWWW-WWWWWWWWWW
WWWWWWWWWW-WWWWWWWWW
WWWWWWWWWWW-WWWWWWWW
WWWWWWWWWWWW-WWWWWWW
WWWWWWWWWWWWW-WWWWWW
WWWWWWWWWWWWWW-WWWWW
WWWWWWWWWWWWWWW-WWWW
WWWWWWWWWWWWWWWW-WWW
WWWWWWWWWWWWWWWWW-WW
WWWWWWWWWWWWWWWWWW-W
WWWWWWWWWWWWWWWWWWW- 3
-WW
W-W
WW- 3
-WD
D-W
WD-
*/
团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩的更多相关文章
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(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 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
随机推荐
- MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现
一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在 ...
- IT java培训机构名单(不全)
基本都是借着招聘的幌子来招生的 1 百影世纪(北京)文化传媒有限公司 2 北京博创智软科技有限公司 3 北京博达远创科技发展有限公司 4 北京春玉影视文化传媒有限公司 5 北京顶测科技有限公司 6 北 ...
- [20190401]跟踪dbms_lock.sleep调用.txt
[20190401]跟踪dbms_lock.sleep调用.txt --//自己在semtimedop函数调用理解错误,加深理解,跟踪dbms_lock.sleep调用的情况. 1.环境:SCOTT@ ...
- python实例七
https://www.cnblogs.com/evablogs/p/6791548.html 题目:将一个列表的数据复制到另一个列表中. 程序分析:打算利用for循环和append函数来复制到另一个 ...
- c#实验一:基于winform的冒泡排序练习
一.界面设计 在排序前textbox中输入数字,以逗号隔开,通过两个button实现降序排序或升序排序,然后在排序后textbox中显示 三个关键点: 1.监测输入是否合法,最好使用正则表达式 2.拆 ...
- 一个Web项目中实现多个数据库存储数据并相互切换用过吗?
最近公司一个项目需要连接多个数据库(A和B)操作,根据不同的业务模块查询不同的数据库,因此需要改造下之前的spring-mybatis.xml配置文件以及jdbc.properties配置文件,项目后 ...
- centos下 telnet访问百度
先在命令行输入以下命令: telnet www.baidu.com 80 点击确认之后出现如下界面 然后接着输入以下两行命令 GET /index.html HTTP/1.1 Host: www.ba ...
- 浅析String类
这是对于String类的一些总结,我将会从几个方面并且结合着字符串池等相关知识进行总结 进程如下: 1.对于String类基本知识的一些总结 2.简要介绍字符串池 3.分 ...
- 文本分类实战(七)—— Adversarial LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- JavaScript代码组织结构良好的5个特点
JavaScript代码组织结构良好的5个特点,随着JavaScript项目的成长,如果你不小心处理的话,他们往往会变得难以管理.我们发现自己常常陷入的一些问题: 当在创建新的页面时发现,很难重用或测 ...