CodeForces 778B - Bitwise Formula
题意:
选择一个 m 位的二进制数字,总分为 n 个算式的答案之和。问得到最低分和最高分分别应该取哪个二进制数字
分析:
因为所有数字都是m位的,高位的权重大于低位 ,我们就从高到低考虑 ans 的每一位是取 0 还是取 1,统计该位的权重(即n个式子该位结果之和)即可。
#include <bits/stdc++.h>
using namespace std;
int n, m;
map<string, int> mp;
struct query{
string f;
int num;
int a, op, b;
}q[];
void init()
{
cin >> n >> m;
string s;
mp["?"] = ;
for (int i = ; i <= n; i++)
{
cin >> s;
mp[s] = i;
cin >> s;
cin >> s;
if (s[] >= '' && s[] <= '')
{
q[i].op = ;
q[i].f = s;
}
else
{
q[i].a = mp[s];
cin >> s;
if (s[] == 'A') q[i].op = ;
if (s[] == 'O') q[i].op = ;
if (s[] == 'X') q[i].op = ;
cin >> s;
q[i].b = mp[s];
}
}
}
int find(int x, int p)
{
int ret = ;
q[].num = p;
for (int i = ; i <= n; i++)
{
if (q[i].op == ) q[i].num = q[i].f[x]-'';
else
{
int a = q[q[i].a].num;
int b = q[q[i].b].num;
if (q[i].op == ) q[i].num = a&b;
if (q[i].op == ) q[i].num = a|b;
if (q[i].op == ) q[i].num = a^b;
}
ret += q[i].num;
}
return ret;
}
void solve()
{
string ans1, ans2;
for (int i = ; i < m; i++)
{
int x0 = find(i, );
int x1 = find(i, );
x0 <= x1 ? ans1 += '' : ans1 += '';
x0 >= x1 ? ans2 += '' : ans2 += '';
}
cout << ans1 << endl << ans2 << endl;
}
int main()
{
init();
solve();
}
CodeForces 778B - Bitwise Formula的更多相关文章
- Codeforces Problem 778B Bitwise Formula
题目链接:http://codeforces.com/contest/779/problem/E 题意:有n个变量都可以用m位二进制数表示,这n个数的value将以两种格式中的一种给出 1.变量名, ...
- CodeForces 779E Bitwise Formula
位运算,枚举. 按按分开计算,枚举$?$是$0$还是$1$,分别计算出$sum$,然后就可以知道该位需要填$1$还是$0$了. #include<map> #include<set& ...
- 【codeforces 779E】Bitwise Formula
[题目链接]:http://codeforces.com/contest/779/problem/E [题意] 给你n个长度为m的二进制数 (有一些是通过位运算操作两个数的形式给出); 然后有一个未知 ...
- 【推导】【贪心】Codeforces Round #402 (Div. 2) E. Bitwise Formula
按位考虑,每个变量最终的赋值要么是必为0,要么必为1,要么和所选定的数相同,记为2,要么和所选定的数相反,记为3,一共就这四种情况. 可以预处理出来一个真值表,然后从前往后推导出每个变量的赋值. 然后 ...
- CF778B(round 402 div.2 E) Bitwise Formula
题意: Bob recently read about bitwise operations used in computers: AND, OR and XOR. He have studied t ...
- Codeforces 1408I - Bitwise Magic(找性质+集合幂级数)
Codeforces 题面传送门 & 洛谷题面传送门 Yet another immortal D1+D2 I %%%%%% 首先直接统计肯定是非常不容易的,不过注意到这个 \(k\) 非常小 ...
- CodeForces 1408I Bitwise Magic
题意 给定三个整数 \(n,k,c\) 和一个长度为 \(n\) 的序列 \(a\),保证 \(a_i\) 互不相同.可以操作 \(k\) 次,每次随机选择一个 \(a_i\) 变成 \(a_i-1\ ...
- Codeforces Round #402 (Div. 1)
A题卡壳了,往离线倒着加那方面想了会儿,后来才发现方向错了,二十多分钟才过掉,过了B后做D,想法好像有点问题,最后只过两题,掉分了,差一点回紫. AC:AB Rank:173 Rating:2227- ...
- Codeforces Round#402(Div.1)掉分记+题解
哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...
随机推荐
- 正则re模块--入门
本文来源:https://www.cnblogs.com/dyfblog/p/5880728.html 对字符串操作 1.应用: 当我们爬取的东西在js文件中,比如我爬今日头条美女的图片时,它的图片u ...
- BandingList 泛型集合数据绑定
public IList<Student> IStudent = new List<Student>(); public BindingList<Student> ...
- # Python 3 & 爬虫一些记录
目录 Python 3 & 爬虫一些记录 交互模式和命令行模式 函数积累 语法积累 列表和元组 输入 交互模式下输入多行 爬虫 HTTP报文请求头User-Agent信息 解析库pyquery ...
- PHP数组和对象之间的互换
今天在和前端对接接口的时候,从后台返回数据给前端的时候出现如下JSON格式数据 "goods": [ { "id": "dEQ144800584Lx& ...
- Python 基础(十七)--序列化
pickle模快 pickle.dumps():可将特有数据类型的转换为bytes类型 pickle.loads():将bytes类型转化回来 >>> import pickle & ...
- T100——作业action执行其他P作业,后台背景执行完后才能继续操作改作业
范例:如axmt500订单,查询开单占用量: 客制作业cxmp500,通过参数-订单号,查询该订单下的料件,目前有库存量.开单占用量.库存可用量,查询后更新到该订单下的单身对应栏位: 现在axmt50 ...
- 怎样理解DOM
一句话总结: DOM 是一个 js 对象. 他可以赋予 js 控制 html 文档的能力. 全称: Document Object Model. DOM 的最小组成单位是: 节点 , 节点有7种类型 ...
- 如何用Mvc实现一个列表页面-异步加载
在接触Mvc后,开始有点觉得很累,什么都要自己做,完全没有WebForm的易用性: 大概用了一个月左右的时候,越用用顺手,就习惯了MVC的这种开发方式,灵活,简洁: 当初学习MVC,网上看资料,都是讲 ...
- Flask:上下文管理
1. werkzurg from werkzur.serving import run_simple def run(environ,start_response): reuturn [b'hello ...
- 分库分布的几件小事(四)分库分表的id主键生成
1.问题 其实这是分库分表之后你必然要面对的一个问题,就是id咋生成?因为要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持.所以这都是你实际生产环境中必须考虑的问 ...