题目链接:https://nanti.jisuanke.com/t/28411

题意:

  给出n(n<=36)个点的一个图。求点覆盖集数。

题解:

  将n个点折半为L和R两部分。对于R内部的边,枚举状态判断是否可行。对可行的状态维护高维前缀和。

  之后判断L内部的可行状态。对于每一个L内部的可行状态,在高维前缀和中找出与他成立的状态相乘就是答案。

#include <bits/stdc++.h>
using namespace std;
const int N = ;
typedef long long ll;
int t;
int n, m, q;
int u, v;
int lef, rig;
int ans;
int w[N<<];
int ltl[N], ltr[N], rtr[N];
int sum[<<N];
int main() {
scanf("%d", &t);
for(int casee = ; casee <= t; casee++) {
ans = ;
scanf("%d%d%d", &n, &m, &q);
for(int i = ; i < n; i++) scanf("%d", &w[i]);
lef = n+>>;
rig = n-lef;
for(int i = ; i < lef; i++) ltl[i] = ltr[i] = ;
for(int i = ; i < rig; i++) rtr[i] = ;
while(m--) {
scanf("%d%d", &u, &v);
u--;v--;
if(u > v) swap(u, v);
if(u < lef) {
if(v < lef) ltl[u] |= <<v;
else ltr[u] |= <<(v-lef);
}
else rtr[u-lef] |= <<(v-lef);
}
for(int i = ; i < (<<rig); i++) {
int res = ;
for(int j = ; j < rig; j++) {
if(i>>j&) res = (1ll*res*w[j+lef])%q;
else res *= (rtr[j]|i) == i;
}
sum[i] = res;
}
for(int i = ; i < rig; i++)
for(int j = ; j < (<<rig); j++)
if(~j>>i&) sum[j] = (sum[j|(<<i)]+sum[j])%q;
for(int i = ; i < (<<lef); i++) {
int res = , need = ;
for(int j = ; j < lef; j++) {
if(i>>j&) res = (1ll*res*w[j])%q;
else res *= (ltl[j]|i) == i, need |= ltr[j];
}
ans = (1ll*res*sum[need]+ans)%q;
}
printf("Case #%d: %d\n", casee, ans);
}
}

2018宁夏邀请赛K Vertex Covers的更多相关文章

  1. 2018宁夏邀请赛K题Vertex Covers(高维前缀和 状压 折半

    https://vjudge.net/problem/Gym-102222K 题意:给定N点M边的无向图,每个点有点权.  点覆盖表示某个点集S{}覆盖了所有的边,其贡献是S中点权之积. 现在让你求所 ...

  2. 2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树)

    2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树) 传送门:https://nanti.jisuanke.com/t/41296 题意: 给一个数列A 问在数列A中有多 ...

  3. “2018宁夏邀请赛 ” 兼 “The 2019 Asia Yinchuan First Round Online Programming”

    ------------7题弟弟,被各位半小时13题的大佬打惨了(滑稽)---------- 签到题就不写了. F :Moving On            (1247ms) 题意:给定大小为N的带 ...

  4. 2018宁夏邀请赛网赛 I. Reversion Count(java练习题)

    题目链接 :https://nanti.jisuanke.com/t/26217 Description: There is a positive integer X, X's reversion c ...

  5. 2018宁夏邀请赛L Continuous Intervals

    题目链接:https://nanti.jisuanke.com/t/28412 题意: 给出n个数的序列.问序列中有多少个区间满足,排序完之后任意两个相邻的数之差不大于1. 题解: 用max表示区间最 ...

  6. 2018宁夏邀请赛G(DFS,动态规划【VECTOR<PAIR>】)

    //代码跑的很慢四秒会超时,结尾附两秒代码(标程) #include<bits/stdc++.h>using namespace std;typedef long long ll;cons ...

  7. 2018宁夏邀请赛I题 bubble sort(思维题

    https://vjudge.net/problem/Gym-102222I 居然补到个防ak,刚开始不知道啥是循环左移右移(只能移一次),不好想.. 题意:以冒泡排序为背景 给你n,k 问在1~n的 ...

  8. [ICPC 2018 宁夏邀请赛] A-Maximum Element In A Stack(思维)

    >传送门< 前言 辣鸡网络赛,虽然我是个菜鸡,然而好几个队伍十几分钟就AK???我心态那会彻底崩了,后来群里炸了,话题直接上知乎热搜,都是2018ICPC宁夏网络赛原题,这怎么玩,拼手速? ...

  9. 2018宁夏邀请赛 Continuous Intervals(单调栈 线段树

    https://vjudge.net/problem/Gym-102222L 题意:给你n个数的序列,让判断有几个区间满足排完序后相邻两数差都不大于1. 题解:对于一个区间 [L,R],记最大值为 m ...

随机推荐

  1. ThinkPHP之__construct()和__initialize()

    ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对 ...

  2. 吐血分享:QQ群霸屏技术教程(利润篇)

    QQ群技术,不论日进几百,空隙时间多的可以尝试,日进100问题不大. QQ群技术,如何赚钱,能赚多少钱?不同行业,不同关键词,不同力度,不一样的产出. 群费 群费,这个和付费群是有区别的,群费在手机端 ...

  3. laravel 中出现SQLSTATE[HY000] [2002] 如何解决?

    在日常开发中总是难免遇到各式各样的错误,还有许多错误常常是重复出现的 以下是报错信息! SQLSTATE[HY000] [2002] ������ӷ���һ��ʱ���û���ȷ�

  4. Spark-源码-TaskScheduler初始化过程, ClientActor向Master发送注册任务信息过程

    Spark版本 1.3 Spark源码 Spark.createTaskScheduler TaskScheduler初始化过程 1.// SparkContext中 /** * Create a t ...

  5. 基于OMAPL:Linux3.3内核的编译

    基于OMAPL:Linux3.3内核的编译 OMAPL对应3个版本的linux源代码,分别是:Linux-3.3.Linux-2.6.37.Linux2.6.33,这里的差距在于Linux2,缺少SY ...

  6. 09 mongoDB基础(进阶)

    mongoDB基础 阶段一.认识mongodb 1.mongodb 组织数据的基本形式 MongoDB————>数据库————>集合————>文档 mysql:表:行和列:字段 运用 ...

  7. python七类之字典详解

    一.字典 一.关键字:dict 1.字典是唯一的键值对数据,其表现形式:   dic  =  {键:值},​字典里的键必须保证是唯一的 2.键必须是不可变的数据类型: ​a.故列表是不能当键的 b.所 ...

  8. Electronic Devices【电子设备】

    Electronic Devices We may think we're a culture that gets rid of our worn technology at the first si ...

  9. ssh安装和使用

    1.基础知识 ssh用于远程登陆,linux默认安装了client,如果需要被登陆则需要安装 server 2.安装 apt-get install openssh-server 检查是否安装成功 a ...

  10. Windows10 快捷键

    windows 10快捷键: F1 打开帮助 F2 重命名 F3 打开搜索文件和文件夹 F4 打开地址栏常用的地址 F5 刷新 F11   全屏 选择文件和内容: shift + 上下左右键选择连续的 ...