bzoj 3668 数位DP

 

收获:

  1、如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP。

 

 1 /**************************************************************
 2     Problem: 3668
 3     User: idy002
 4     Language: C++
 5     Result: Accepted
 6     Time:288 ms
 7     Memory:804 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11 #define max(a,b) ((a)>(b)?(a):(b))
12  
13 int n, m;
14 unsigned past[32][2];
15 unsigned dp[32][2], top[32];
16  
17 int main() {
18     scanf( "%d%d", &n, &m );
19     for( int i=0; i<32; i++ ) {
20         past[i][0] = 0;
21         past[i][1] = 1;
22     }
23     for( int i=1; i<=n; i++ ) {
24         char ch[10];
25         unsigned t;
26         scanf( "%s%d", ch, &t );
27         for( int b=0; b<32; b++ ) {
28             if( ch[0]=='A' ) {
29                 past[b][0] &= (t>>b)&1;
30                 past[b][1] &= (t>>b)&1;
31             } else if( ch[0]=='O' ) {
32                 past[b][0] |= (t>>b)&1;
33                 past[b][1] |= (t>>b)&1;
34             } else {
35                 past[b][0] ^= (t>>b)&1;
36                 past[b][1] ^= (t>>b)&1;
37             }
38         }
39     }
40     if( m==0 ) { 
41         unsigned ans = 0;
42         for( int i=0; i<32; i++ )
43             ans |= past[i][0]<<i;
44         printf( "%u\n", ans );
45     } else {
46         for( int b=0; b<32; b++ ) 
47             top[b] = (m>>b)&1;
48  
49         int maxb=30;
50         while( top[maxb]==0 ) {
51             dp[maxb][1] = dp[maxb][0] = dp[maxb+1][1]|(past[maxb][0]<<maxb);
52             maxb--;
53         }
54         dp[maxb][1] = dp[maxb+1][1]|(past[maxb][1]<<maxb);
55         dp[maxb][0] = dp[maxb+1][1]|(past[maxb][0]<<maxb);
56         for( int i=maxb-1; i>=0; i-- ) {
57             for( int j=0; j<=1; j++ ) 
58                 dp[i][0] = max( dp[i][0], dp[i+1][0]|(past[i][j]<<i) );
59             for( int j=0; j<top[i]; j++ )
60                 dp[i][0] = max( dp[i][0], dp[i+1][1]|(past[i][j]<<i) );
61             dp[i][1] = dp[i+1][1]|(past[i][top[i]]<<i);
62         }
63         printf( "%u\n", max(dp[0][0],dp[0][1]) );
64     }
65 }
View Code

 

转载于:https://www.cnblogs.com/idy002/p/4498719.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的视频下载网站

视频已经成为生活中不可缺少的一部分&#xff0c;不搬运视频怎么在此基础上创新。 小视频下载 V视频助手 硕鼠视频下载 维棠视频下载 Apowersoft视频下载王 Video Grabber Eagleget视频下载 喜欢的朋友可以收藏一下&#xff0c;万一以后想用找不到就不能二次创新了&#xff01;…

漏洞工具:nmap和nessus

NMAP NMAP&#xff08;Network Mapper&#xff09;是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络&#xff0c;当然用它扫描单个主机也没有问题.Nmap以新颖的方式使用原始IP报文来发现网络上有一些主机&#xff0c;那些主机提供什么服务&…

java调用kettle例子_Kettle API - Java调用示例

Kettle API - Java调用示例对向前兼容性的推荐&#xff1a;如果想要动态地创造Transformation (例如:从元数据)&#xff0c;使用XML文件方法(KTR)而不是使用API。XML文件兼容Kettle所有版本&#xff0c;同样对job有效的。1.下面的例子进行以下操作&#xff1a;1创建Transformat…

问题:三元向量的比较

粉丝投来一个题目:要求用到函数调用,编写程序 题目内容: 如果语文数学两门课程的成绩,甲同学分别是80分和90分,乙同学是90分和80分,丙同学是70和60分,这时比较甲同学和乙同学的成绩,只能说语文较差,数学较好,综合到一起就属于无法比较,但对丙同学可以比较,可以…

css隐藏元素的几种方法与区别

css隐藏元素的几种方法与区别 一&#xff1a;display&#xff1a;none;隐藏不占位 display 除了不能加入 CSS3 动画豪华大餐之外&#xff0c;基本效果卓越&#xff0c;没什么让人诟病的地方。二&#xff1a;position&#xff1a;absolut;left/top:-99999px;足够大的负值使其不可…

mysql版本不同会导致语法错误码_神奇的 SQL,Group By 真扎心,原来是这样!

作者&#xff1a;青石路原文&#xff1a;cnblogs.com/youzhibing/p/11516154.htmlGROUP BY 后 SELECT 列的限制标准 SQL 规定&#xff0c;在对表进行聚合查询的时候&#xff0c;只能在 SELECT 子句中写下面 3 种内容&#xff1a;通过 GROUP BY 子句指定的聚合键、聚合函数(SUM …

java线程池并发_Java并发教程–线程池

java线程池并发Java 1.5中提供的最通用的并发增强功能之一是引入了可自定义的线程池。 这些线程池使您可以对诸如线程数&#xff0c;线程重用&#xff0c;调度和线程构造之类的东西进行大量控制。 让我们回顾一下。 首先&#xff0c;线程池。 让我们直接进入java.util.concurre…

在Windows XP使用LC5(L0phtCrack)

LC5简介&#xff1a; LC5是国外一种很有名的密码破解软件&#xff0c;能破解用LM加密的SAM。可用它猜解2000\Xp\2003密码。它是著名的美国计算机安全公司Stake出品的Window/Unix密码查找软件LC4/LC5。 使用方法&#xff1a; 1&#xff0c;在主机里新建用户名&#xff0c;密码…

C++ 在屏幕上用星号打印菱形

粉丝提问&#xff1a;C 在屏幕上用星号打印菱形 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void pr_start(int _num) {int n0;int i 0;for (n 1; n < 2*_num; n) {int temp n;if (n > _num){temp - 2 * (n - …

mysql组件化_MySql笔记

1、数据库基础操作语句链接数据库&#xff1a;mysql -u root -p 123456;选择数据库&#xff1a;USE database_name;显示可以数据库&#xff1a;SHOW DATABASES;显示数据库所有表&#xff1a;SHOW TABLES;显示表的列&#xff1a;SHOW COLUMNS FROM table_name;2、检索数据检索单…

让我们回顾一下如何通过JDBC插入Clob或Blob

LOB是所有数据库以及JDBC中的PITA。 正确处理它们需要花费几行代码&#xff0c;并且可以确保最终会出错。 因为您必须考虑以下几点&#xff1a; 首先&#xff0c;LOB是繁重的资源&#xff0c;需要特殊的生命周期管理。 分配LOB后&#xff0c;最好“释放”它&#xff0c;以减轻…

Android JNI入门第五篇——基本数据类型使用

前面讲到了java和native数据类型&#xff0c;这里就开始做一下使用&#xff1a; 第一步&#xff1a;新建工程 第二部&#xff1a;书写 java方法&#xff1a; [java] view plaincopyprint? public class NativeMethod { static { System.loadLibrary("com…

使用微信开发者工具添加小程序底部导航栏报错

粉丝求助&#xff1a; 示例图&#xff1a; 看了这个页面&#xff0c;很明显这个页面引用的路径都有问题。 解决办法&#xff1a;

应用“Cain Abel”实现DNS欺骗

环境的搭建&#xff1a; 1&#xff0c;在Windows 7安装IIS服务&#xff0c;访问www.baidu.com或其他任意站点&#xff0c;保存首页文件至本地wwwroot文件夹中&#xff1b; &#xff08;1&#xff09;打开控制面板&#xff0c;找到“程序”&#xff0c;点进去 点击“打开或关闭…

java 线程池技术_Java线程池技术以及实现

public class DefaultThreadPool implements ThreadPool{//线程池最大限制数private static final int MAX_WORKER_NUMBERS 10;//线程池默认的数量private static final int DEFAULT_WORKER_NUMBERS 5;//线程池最小数量private static final int MIN_WORKER_NUMBERS 1;//这是…

Android killer软件闪退的解决办法?

解决办法&#xff1a; 重新下载安装一个版本比较新的。

css3 animation 动画属性简介

animation 动画属性介绍 animation 属性是一个简写属性&#xff0c;用于设置动画属性&#xff1a; 1. animation-name----规定需要绑定到选择器的 keyframe 名称。 语法&#xff1a;animation-name: keyframename|none&#xff1b; Keyframename&#xff1a;规定需要绑定到选择…

EditThisCookie使用

下载安装 http://www.cnplugins.com/uploads/plugins/201502/www.cnplugins.com_fngmhnnpilhplaeedifhccceomclgfbg_1_4_1_.crx从上面这个网址下载下来&#xff0c;下下来之后用Chrome插件伴侣制作成谷歌浏览器能直接添加的插件 使用 鼠标右键单击——>EditThisCookie&am…

ac算法 有什么用 Java_AC算法使用例子

/*** 实现测试&#xff1a;串匹配和词频统计功能*/public void largerTextExample(){String text "你好abc,ac,abc,def,ac,okt, ac,dfdfe, ac , what is it 你好啊,bc";String[] terms {"你好","ac", "abc", "bc"};for (…

eclipse中在类saolei.Test 中找不到main方法

粉丝提问&#xff1a;eclipse中在类saolei.Test 中找不到main方法 解决办法&#xff1a; eclipse设置自动保存或者CTRLS 建议使用更加智能的编译器IDEA