团体程序设计天梯赛(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/ ...
随机推荐
- 智能POS(轻餐、正餐同理)桌台页面已结金额,只做参考,不做对账使用
智能POS桌台已结金额只用来做参考使用,不做对账保障: 已结金额只有桌台一次结账金额,若存在反结账或退款的情况则不会减去相应的已结金额: 点餐无桌台的订单,金额不做统计: 口碑订单.扫码点餐,金额不做 ...
- C#-this关键字的功能之扩展方法
目录 1. 简介 2. 简单实例 3. 细节说明 1. 简介 我们的方法都是与声明他的类的相关联(我们现在写的各个方法都是在类中定义,所以我们调用方法都是用该方法所属类的实体对象调用). 在C#3.0 ...
- Markdown语法指南
1.背景 个人比较喜欢用Markdonw写东西,比如写博客随笔,写有道云笔记等,但有的时候会突然忘记某个具体语法怎么写了,如插入图片.插入链接.表格等,那干脆把这个语法简单地总结一下,也方便日后快速查 ...
- 滑动窗口最大值的golang实现
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位. 返回滑动窗口最大值 输入: nums = [, ...
- [经验总结] 从其它sheet页引用数据生成图表时没有图例的解决办法
1.先给出一个在有数据区域的sheet页中生成的图表,比较全,图表和图例全部都有,如下图: 2.但是如果在其它 sheet页中引用该有数据的sheet数据时并生成图表,生成的图表只有图表区域显示,图例 ...
- vue2.0阻止事件冒泡
<!--picker弹窗--><transition name="fade"> <div class="picker_wrap" ...
- SQL MAX() 函数
MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN ...
- 好程序员分享DIV+CSS3和html5+CSS3有什么区别
DIV+CSS3和html5+CSS3有什么区别,不管是DIV+CSS3还是html5+CSS3,他们都是我们对网页开发布局方式的统称,但是DIV+CSS3作为网页的基础开发这句话其实并不严谨,因为而 ...
- cmdb部署
参考资料:https://github.com/guohongze/adminset 基础安装说明:1.基本要求:centos 7.2(1511) django 1.9.8(兼容Django1.11) ...
- [Spark]如何设置使得spark程序不输出 INFO级别的内容
Spark程序在运行的时候,总是输出很多INFO级别内容 查看了网上的一些文章,进行了试验. 发现在 /etc/spark/conf 目录下,有一个 log4j.properties.template ...