博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM-ICPC 2018 徐州赛区现场赛 I. Rikka with Sorting Networks (思维+DFS)
阅读量:4318 次
发布时间:2019-06-06

本文共 1980 字,大约阅读时间需要 6 分钟。

题目链接:

题意:问有多少个 1 到 n 的排列,使得用给定的 k 个比较器(使 au 和 av 有序)排序后,整个序列的最长上升子序列为 n - 1。

题解:先处理出全部最长上升子序列为 n - 1 的排列,然后枚举每个比较器使用与否,计数即可。(题目卡常,dfs要加引用...)

 

1 #include 
2 using namespace std; 3 #define ll long long 4 #define ull unsigned long long 5 #define mst(a,b) memset((a),(b),sizeof(a)) 6 #define mp(a,b) make_pair(a,b) 7 #define pi acos(-1) 8 #define pii pair
9 #define pb push_back10 const int INF = 0x3f3f3f3f;11 const double eps = 1e-6;12 const int maxn = 1e6 + 10;13 const int maxm = 1e5 + 10;14 //const ll mod = 998244353;15 16 set
>se;17 int a[55],u[15],v[15];18 19 int dfs(vector
&vec,int now) {20 if(now < 0) return 1;21 int l = u[now], r = v[now], ans = 0;22 if(vec[l] < vec[r]) {23 ans += dfs(vec,now - 1);24 swap(vec[l],vec[r]);25 ans += dfs(vec,now - 1);26 swap(vec[l],vec[r]);27 }28 return ans;29 }30 31 int main() {32 #ifdef local33 freopen("data.txt", "r", stdin);34 // freopen("data.txt", "w", stdout);35 #endif36 for(int i = 0; i < 55; i++) a[i] = i;37 int t;38 scanf("%d",&t);39 while(t--) {40 se.clear();41 int n,k,mod;42 scanf("%d%d%d",&n,&k,&mod);43 for(int i = 0; i < k; i++) {44 scanf("%d%d",&u[i],&v[i]);45 u[i]--, v[i]--;46 }47 int ans = 0;48 for(int i = 0; i < n; i++) {49 vector
vec;50 for(int j = 0; j < i; j++) vec.push_back(j);51 for(int j = i + 1; j < n; j++) vec.push_back(j);52 for(int j = 0; j < n; j++) {53 vector
v;54 for(int k = 0; k < j; k++) v.push_back(vec[k]);55 v.push_back(i);56 for(int k = j; k < vec.size(); k++) v.push_back(vec[k]);57 if(se.find(v) == se.end()) ans += dfs(v,k - 1);58 se.insert(v);59 }60 }61 printf("%d\n",ans % mod);62 }63 return 0;64 }

 

转载于:https://www.cnblogs.com/scaulok/p/10056378.html

你可能感兴趣的文章
First 5 Minutes Troubleshooting A Server
查看>>
sqlserver database常用命令
查看>>
rsync远程同步的基本配置与使用
查看>>
第二天作业
查看>>
访问属性和访问实例变量的区别
查看>>
Spring MVC 异常处理 - SimpleMappingExceptionResolver
查看>>
props 父组件给子组件传递参数
查看>>
【loj6038】「雅礼集训 2017 Day5」远行 树的直径+并查集+LCT
查看>>
十二种获取Spring的上下文环境ApplicationContext的方法
查看>>
UVA 11346 Probability 概率 (连续概率)
查看>>
linux uniq 命令
查看>>
Openssl rand命令
查看>>
HDU2825 Wireless Password 【AC自动机】【状压DP】
查看>>
BZOJ1015: [JSOI2008]星球大战starwar【并查集】【傻逼题】
查看>>
HUT-XXXX Strange display 容斥定理,线性规划
查看>>
mac修改用户名
查看>>
一道关于员工与部门查询的SQL笔试题
查看>>
Canvas基础
查看>>
[Hive - LanguageManual] Alter Table/Partition/Column
查看>>
可持久化数组
查看>>