CF850E Random Elections 题解
题目大意
没法描述,过于繁杂。
思路
果然自己是个菜鸡,只能靠读题解读题,难受极了,其实不是很难自己应该做得出来的。。。。哎。。。。
不难发现可以统计 \(A\) 获胜的情况乘上 \(3\) 就是总答案。然后 \(A\) 获胜的情况其实就是满足 \(f(S1)=f(S2)=1\) 乘上满足是 \(S1S2\) 的方案数。然后看后面那个东西,你发现对于人 \(i\) 如果 \(S1_i=1\wedge S2_i=1\) 的话有 \(2\) 中情况,就是 \(\text{BCA,CBA}\) ,如果 \(S1_i=0\wedge S2_i=1\) 的话有 \(1\) 种情况,就是 \(\text{BAC}\) ,另外两种类似。然后你就发现如果 \(S1_i=S2_i\) 贡献就是 \(2\) ,反之为 \(1\) 。
整理一下,发现答案其实就是:
\]
然后你就发现这个东西可以使用 \(\texttt{FWT}\) 进行优化。时间复杂度就变为了 \(\Theta(2^n n)\) 。
\(\texttt{Code}\)
#include <bits/stdc++.h>
using namespace std;
#define Int register int
#define mod 1000000007
#define MAXN 1048576
int n,g[MAXN],pw[25],cnt[MAXN];
void FWT (int *f,int type){
for (Int i = 1;i < n;i <<= 1)
for (Int j = 0;j < n;j += i << 1)
for (Int k = 0;k < i;++ k){
int x = f[j + k],y = f[i + j + k];
f[j + k] = 1ll * type * (x + y) % mod,
f[i + j + k] = 1ll * type * (x + mod - y) % mod;
}
}
template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}
template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}
template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');}
signed main(){
read (n);
pw[n] = 1;for (Int i = n - 1;~i;-- i) pw[i] = pw[i + 1] * 2;n = 1 << n;
for (Int i = 0;i < n;++ i) scanf ("%1d",&g[i]),cnt[i] = cnt[i >> 1] + (i & 1);
FWT (g,1);for (Int i = 0;i < n;++ i) g[i] = 1ll * g[i] * g[i] % mod;FWT (g,(mod + 1) >> 1);
int ans = 0;for (Int i = 0;i < n;++ i) ans = (ans + 1ll * g[i] * pw[cnt[i]] % mod) % mod;
write (ans * 3ll % mod),putchar ('\n');
return 0;
}
CF850E Random Elections 题解的更多相关文章
- CF850E Random Elections
题意:一共有n个人,要在三个人中选prefer,一开始他们心中都会想好他们的排名(共6种),之后给出的判断不会矛盾.规则如下:一共有三轮,分别是a->b,b->c,c->a,每个人选 ...
- 【CF850E】Random Elections(FWT)
[CF850E]Random Elections(FWT) 题面 洛谷 CF 题解 看懂题就是一眼题了... 显然三个人是等价的,所以只需要考虑一个人赢了另外两个人就好了. 那么在赢另外两个人的过程中 ...
- 【CF850E】Random Elections FWT
[CF850E]Random Elections 题意:有n位选民和3位预选者A,B,C,每个选民的投票方案可能是ABC,ACB,BAC...,即一个A,B,C的排列.现在进行三次比较,A-B,B-C ...
- CF1043A Elections 题解
Content 有两个人参加选举,其中已知 \(n\) 位选民投给第二个人的票数为 \(a_1,a_2,a_3,...,a_n\).第一个人很想赢,所以想通过调整每位选民只能投的票数 \(k\) 来让 ...
- [Codeforces]850E - Random Elections
FWT裸题,写了下模板 #include<cstdio> #define ll long long #define r register int #define MN (1<< ...
- codeforces850E Random Elections
题目链接:codeforces 850E 翻译:luogu 读题是第一要务(大选这么随便真的好吗) 其实答案问你的就是在所有选民心中支持的人的所有情况中,能让一个人连赢两场的情况数是多少 我们假设\( ...
- CF850 E. Random Elections
题目传送门:CF 题目大意: 现有\(A,B,C\)三人参加竞选,有n个市民对其进行投票,每个市民心中对三人都有一个优先顺序(如市民\(i\)对三人的优先顺序为\(A-C-B\),则凡是有\(A\)的 ...
- CF570A Elections 题解
Content 有 \(n\) 个候选人和 \(m\) 个城市,每个城市可以给每个候选人投票,已知第 \(i\) 个城市给第 \(j\) 个人投的选票数是 \(a_{i,j}\).我们将第 \(i\) ...
- [Leetcode Week17]Copy List with Random Pointer
Copy List with Random Pointer 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/copy-list-with-random- ...
随机推荐
- linux系统下查看svn服务是否启动,重启及设置开机重启
Linux系统中svn服务是否启动,重启及设置开机启动 安装完svn服务器后虽然好用但是因为经常重启Linux服务器,每次重启完就要去手动启动svn服务器,很是麻烦,于是在网上找了一些方法后,自己 ...
- Data Leakage in Machine Learning 机器学习训练中的数据泄漏
refer to: https://www.kaggle.com/dansbecker/data-leakage There are two main types of leakage: Leaky ...
- MySQL 5.7新特性介绍
本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化. 1.即将删除的特性1.1.InnoDB monitoring features,详见:WL#7377(访问地址:http:// ...
- 录制脚本启动报错:target controller is configured to “use recording Controller” but no such controller exists,ensure you add a Recording Controller as child of Thread Group node to start recording correctly
使用JMeter自带录制脚本元件录制,已配置好代理,启动时报错,如图 解决方案: 未指定录制请求信息的存放位置,下拉选择后重新启动即可 对于代理配置有疑问可见性能测试工具JMeter 基础(四)-- ...
- openswan框架和编译时说明
刚开始学习openswan项目代码时,自己尝试了在虚拟机上编译.安装.运行openswan代码,由于当时刚开始学习openswan代码,因此对于其构成并不清楚,在编译.运行过程中有了问题,基本是通过百 ...
- FTP协议简介
1. FTP协议概述 FTP协议的英文全称为File Transfer Protocol, 简称为FTP, 它是从一个主机向一个主机传输文件的协议. FTP协议中客户端和服务器进行文件交互的方式如下图 ...
- 硕盟type-c转接头|四合一多功能扩展坞
硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...
- jsp&mvc开发模式&jstl标签&三层架构
目录 jsp 概念 原理 jsp 的脚本 jsp的内置对象 指令 注释 mvc:开发模式 jsp演变历史 mvc 优缺点 El表达式 JSTL 标签 练习 三层架构:软件设计架构 案例:用户信息列表展 ...
- elasticsearch入门到放弃之elasticsearch-head
elasticsearch-head可理解为跟DBeaver一样是一个数据可视化工具,但是这个工具并没有理想中那么好用坑也是很多,我已经在我的github上fork了一份修改后的版本:https:// ...
- 【TP3.2.3】addAll方法的坑
问题:做一个导入Excel到数据库的功能中需要用到addAll功能,但是每次执行到addAll()时都会报错,如下 Insert value list does not match column li ...