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二分看了二十分钟........ 然后第二题看了 ...
随机推荐
- 小菜鸟之HTML常用
html的基本结构是什么? 表示段落标签是什么?<p> 表示标题标签的是什么?<title>Css标签样式</title> 表示区域标签的是什么?<div&g ...
- MySql查看时间
select now();命令查看MySql时间(包括时分秒) select current_date();命令查看MySql时间(不包括时分秒) 在代码中,创建时间.修改时间字段的jdbc语句也可以 ...
- DLL导出函数
使用DEF文件从DLL导出 模块定义(.def)文件时包含一个或多个描述DLL各种属性的Module语句的文本文件.如果不使用_declspec(dllexport)关键字导出DLL的函数,则DLL需 ...
- X86逆向3:通过修改关键CALL破解
软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果 ...
- Graph、DFS、BFS
Graph.java package Graph; import LinearLIst.bag.Bag; import edu.princeton.cs.algs4.In; public class ...
- Spring实战(十)Spring AOP应用——为方法引入新功能、为对象引入新方法
切面最基本的元素是通知和切点,切点用于准确定位应该在什么地方应用切面的通知. 1.Spring借助AspectJ的切点表达式语言来定义Spring切面 在Spring中,要使用AspectJ的切点表达 ...
- js跨域原理及解决方案
方法一:jsonp函数 在HTML DOM中,Script标签是可以跨域访问服务器上的数据的.因此,可以指定script的src属性为跨域的url,基于script标签实现跨域.script标签本身就 ...
- 怎样终止(杀掉) Linux 中的进程?
使用 kill -9 进程号 命令, 可是强行终止该进程. 如果使用直接使用 kill 进程号 命令, 则会让进程 "自行了断" . 因此, 一般是 kill -9 进程号 用得较 ...
- 用帝国cms 反馈内容的时候自动发送邮箱开发流程
开发流程是这样的. 第一步:先找好一个发送的邮箱.以及一个接受的邮箱.这里是 测试的,我都用的qq邮箱,帝国cms后台配置如下: 注意:这里的SMTP服务器是腾讯的,如果你用163的或者其他的请自行百 ...
- tp中的u方法
个人总结以免忘记 在模板中的使用{:U('地址', '参数'…)} <!--在模板中使用U方法 --> <a href="{:U('News/index')}" ...