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;那些主机提供什么服务&…

问题:三元向量的比较

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

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

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

在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 - …

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;点进去 点击“打开或关闭…

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

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

EditThisCookie使用

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

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

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

Cookie和会话Session

Cookie和会话Session Cookie Cookie是识别客户端的特定用户。 1.每次HTTP请求的时候&#xff0c;客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的&#xff0c;第一次创建Session的时候&#xff0c;服务端会在HTTP协议中告诉客…

高速排序算法

高速排序算法作者 July 二零一一年一月四日------------------------------------------写之前&#xff0c;先说点题外话。每写一篇文章&#xff0c;我都会遵循下面几点原则&#xff1a;一、保持版面的尽量清晰&#xff0c;力保排版良好。二、力争所写的东西&#xff0c;清晰易…

某小型校园网规划与设计要点(课程报告)

粉丝求助&#xff1a; 设计某小型校园网络&#xff0c;校园内覆盖4个大楼&#xff0c;分别教学楼&#xff0c;图书馆&#xff0c;办公室和学生宿舍楼&#xff0c;学校申请到B类私有地址为&#xff1a;172.16.8.0/21。要求&#xff1a;&#xff08;1&#xff09;不同大楼主机划分…

使用PHP管理SQL

php管理数据库 php连接数据库函数——mysqli_connect 格式&#xff1a;mysqli_connect(servername,user,pass,database) servername&#xff1a;数据库地址 user&#xff1a;数据库用户名 pass&#xff1a;数据库密码 database&#xff1a;数据库名 <?phpheader(conte…

不可变的基础架构,热部署和JVM

您是否在生产中部署和取消部署基于JVM的应用程序&#xff08;无论JVM容器/无容器&#xff09;&#xff1f; 也就是说&#xff0c;当您拥有某个应用程序或服务的新版本时&#xff0c;是否通过“取消部署”和“热部署”该应用程序的新更新版本来更改正在运行的JVM&#xff1f; 或…

前端页面通过web3.eth.accounts无法获取账户信息

粉丝求助&#xff1a; /* 新版的方式 */var web3Provider;if (window.ethereum) {web3Provider window.ethereum;try {// 请求用户授权await window.ethereum.enable();} catch (error) {// 用户不授权时console.error("User denied account access")}} else if (wi…

arp欺骗原理

中间人攻击——ARP欺骗的原理、实战及防御 ​ 1.1 什么是网关 首先来简单解释一下什么是网关&#xff0c;网关工作在OSI七层模型中的传输层或者应用层&#xff0c;用于高层协议的不同网络之间的连接&#xff0c;简单地说&#xff0c;网关就好比是一个房间通向另一个房间的一…