团体程序设计天梯赛代码。体现代码技巧,比赛技巧。  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 球队“食物链” 状态压缩的更多相关文章

  1. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  2. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  3. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  4. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  6. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)

    前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...

  8. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  9. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

随机推荐

  1. 使用 WeihanLi.Npoi 操作 CSV

    使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用 ...

  2. 系统前端基本文件+ajax部分理解

    静态页面: 一.static: css dist fonts images js model 二.templates: html ajax搜索操作: <html> <head> ...

  3. Dubbo开发,利用项目模拟提供者和消费者之间的调用--初学

    开发工具:IDEA,虚拟机 VMware Workstation 预备工作:安装好zookeeper的虚拟机,电脑jdk更换为1.7,本地tomcat启动,能够访问以下页面即可进行开发 2.建立以下s ...

  4. UDK命令

    UDK命令行参数与控制台命令都是大小写不敏感的 命令行  udn中文  udn英文 全词大小写匹配,正则表达式,在c++代码中搜索减号开头的命令行参数(如:-BENCHMARK.-onethread等 ...

  5. 从0开始的Python学习008变量

    局部变量 在我们定义函数的过程中,函数内外具有相同名称的变量是没有任何关系的.变量的名称对于函数来说是局部的,而它所在的代码块就是它的作用域. 使用局部变量 #局部变量 def func(x): pr ...

  6. Spring Ioc工作机制 初步

    Spring IoC工作原理 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖 ...

  7. 通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)

    问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...

  8. gulp结合Thinkphp配置

    gulpfile.js文件 /*! * gulp * $ npm install gulp gulp-ruby-sass gulp-cached gulp-uglify gulp-rename gul ...

  9. Linux-基础学习(六)-Redis的进阶学习

    1. redis的进阶操作 1.1 redis的订阅操作 发布订阅的命令 PUBLISH channel msg 将信息 message 发送到指定的频道 channel SUBSCRIBE chan ...

  10. eclipse换工作空间站快捷键失效解决

    1.找到你可以用快捷键的eclipse的空间所在目录.2.复制.metadata文件.3.找到不可用快捷键的空间目录,把之前复制的文件夹覆盖到现在的.4.重启eclipse.