团体程序设计天梯赛(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/ ...
随机推荐
- ubuntu下解压rar文件
ubuntu 下rar解压工具安装方法: 压缩功能 sudo apt-get install rar 1 解压功能 sudo apt-get install unrar 1 使用 可以直接在UI界面使 ...
- centos7操作记录
/root/wang/shell 存放练习的shell文件,快捷命令wsh(alias wsh='cd /root/wang/shell') /root/wang/OS_bak 存放系统备份文件 ...
- AngularJS学习之旅—AngularJS HTML DOM(十三)
1.AngularJS HTML DOM AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled 指令:ng-disabled 指令直接绑定应用程序数据 ...
- 使用Python的Mock库进行PySpark单元测试
测试是软件开发中的基础工作,它经常被数据开发者忽视,但是它很重要.在本文中会展示如何使用Python的uniittest.mock库对一段PySpark代码进行测试.笔者会从数据科学家的视角来进行描述 ...
- 【Python 13】分形树绘制1.0--五角星(turtle库)
1.案例描述 2.案例分析 引入绘制图形的turtle库,利用库中函数进行编程. 3.turtle库 没有显示的input()和output(),没有赋值语句.调用形式大部分如下: import tu ...
- Flink流处理的时间窗口
Flink流处理的时间窗口 对于流处理系统来说,流入的消息是无限的,所以对于聚合或是连接等操作,流处理系统需要对流入的消息进行分段,然后基于每一段数据进行聚合或是连接等操作. 消息的分段即称为窗口,流 ...
- 实现element-ui中table点击一行展开
转:https://www.jianshu.com/p/e51ba4cb11d6 先上效果 效果图 三要素 1.row-click 点击行 2.ref 自行了解vue 3.toggleRowExp ...
- Java 8 新特性7-方法引用、继承
(原) 方法引用: 方法引用有4种: 1.静态方法引用:类名::静态方法名 在java中,对集合的排序,我们常用java提供的 Collections.sort(List<T> list, ...
- firewall centos
firewall-cmd --add-port=8056/tcp --临时增加端口 firewall-cmd --permanent --zone=public --add-port=6069/ ...
- Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
关注点: 1.扫描枪在扫描到条码后会在有焦点的地方显示扫描到的条码并且可设置扫码后添加回车换行让我很尴尬 2.怎样拦截扫码输入,扫描到条码就自动会嘀一声.不要这么智能行不行.瞎BB 需求详解 公司生产 ...