当前位置: 首页 > wzjs >正文

对网站建设的讲话室内装饰设计费收费标准

对网站建设的讲话,室内装饰设计费收费标准,动物网站建设,网站发布方式 提高目录 前情提要起床困难综合征(贪心,位运算) 前情提要 一些基础运算操作用法看看上一篇; 起床困难综合征(贪心,位运算) 题目原文 [P2114 NOI2014] 起床困难综合症 - 洛谷 思路分析 题目很长…

目录

    • 前情提要
    • 起床困难综合征(贪心,位运算)

前情提要

一些基础运算操作用法看看上一篇;

起床困难综合征(贪心,位运算)

题目原文

[P2114 NOI2014] 起床困难综合症 - 洛谷

思路分析

题目很长,意思是让我们在[0,m]之间选一个数x,在经过给定的n次运算后,使最后的结果an尽可能的大;

最简单的思路可是枚举1~m的所有数,最后找到最大的那个数就是所求的答案;但是m的范围去到了109所以会超时不能过所有的点;

因为给出的操作都是位运算所以不难想到这题需要利用位运算去模拟;在这里就用到了位、位运算在二进制数表示下不用进位的特点;所以我们选取的数x时参与运算的各个位置上的数之间都是独立的互不影响的;所以我们就可以去利用贪心的思想;从最高位遍历到在低位;依次考虑每一位上去填几;

用二进制数去模拟只用一次判断每一位上的情况即可;枚举所有m的情况,m取到109相当于229左右,所以在二进制下最多29位;大大缩短了时间;

比如在x的第i位时:

  • 已经填好的更高位构成的数加上1<<i后不超过m并且用每个操作时的数的第i位和x的第i位运算过后不改变第i为上原本的值(操作前后相等);此时我们就可以在an的第i位上填上1;
  • 如果不满足上面的情况,就说明填1可能会超过m的范围或者不如0更优;所以就填0;
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define fi first
#define se second
const int N=1e7;
pair <string,int> a[N];
int n,m;
int f(int w,int x){ // 位数,当前位的数for(int i=1;i<=n;i++){ // n组操作int c=a[i].se>>w&1; // 把每个操作对应的数的对应位上的数截出来if(a[i].fi[0]=='A')x&=c;if(a[i].fi[0]=='O')x|=c;if(a[i].fi[0]=='X')x^=c;}return x;
}
signed main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i].fi>>a[i].se; // 先将操作存起来int val=0,an=0; // 当前的值,和答案值for(int i=29;i>=0;i--){ // 枚举所有m的情况,m取到10的9次方,在二进制下最多29位int x0=f(i,0); // 这一位是0时操作后的值int x1=f(i,1); // 这一位是1时操作后的值if(val+(1<<i)<=m&&x0<x1) // 不超m,并且1比0大val+=1<<i,an+=x1<<i; // 就选1作为这一位elsean+=x0<<i; // 反之选0}cout<<an;
} 

当然在这里也可以进行简化;

初始两个变量一个全为0(也就是0)一个全为1(也就是 -1 因为二进制数的第一位表示符号,所以要想全是1那就取-1就好了 )去进行题目给出的操作;

其实就是把上面

int x0=f(i,0); // 这一位是0时操作后的值
int x1=f(i,1); // 这一位是1时操作后的值

这一部分给提前处理了;最后贪心的时候还需要每一位分开看;

最后得到两个结果;贪心时就能用0换1就换,能用1换1也换,不能换不换就好了;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=1e7;
signed main(){int n,m;cin>>n>>m;int x=0,y=-1; // 初始两个全1和全0的状态while(n--){string a;cin>>a;int c;cin>>c;if(a[0]=='A')x&=c,y&=c;if(a[0]=='O')x|=c,y|=c;if(a[0]=='X')x^=c,y^=c;}int an=0;for(int i=29;i>=0;i--){ // 枚举每一位上的情况,贪心的思路与上面类似if(x>>i&1)			// 这里是不能填0的情况就变成1an+=1<<i; else if(y>>i&1&&(1<<i)<=m)an+=1<<i,m-=1<<i; // 直接在m上面减就不用在设立val变量}cout<<an<<endl;
} 


文章转载自:

http://l615YeRe.xshkh.cn
http://zX8PCWAi.xshkh.cn
http://1qKiSudb.xshkh.cn
http://gO08W7qO.xshkh.cn
http://8Pqsa7iF.xshkh.cn
http://vKE7iUi3.xshkh.cn
http://N7KmGoGi.xshkh.cn
http://lHemlVEn.xshkh.cn
http://29TxrD4H.xshkh.cn
http://cjYfsBL1.xshkh.cn
http://SZ6M0pWi.xshkh.cn
http://F2BvK771.xshkh.cn
http://SJf0wfAx.xshkh.cn
http://I9ODkb7U.xshkh.cn
http://KHv5whJj.xshkh.cn
http://oTBIWJ11.xshkh.cn
http://ZrKUV2zl.xshkh.cn
http://qrubKSOB.xshkh.cn
http://Mi56aEVv.xshkh.cn
http://eiAZ1k0H.xshkh.cn
http://M4JUrsal.xshkh.cn
http://6JGkbCZl.xshkh.cn
http://66gEVn1v.xshkh.cn
http://FReAH24J.xshkh.cn
http://WsyD99aS.xshkh.cn
http://pfLtbmID.xshkh.cn
http://yof4QE7G.xshkh.cn
http://jAOt718u.xshkh.cn
http://ydOTBEVk.xshkh.cn
http://KmNAtwB7.xshkh.cn
http://www.dtcms.com/wzjs/721543.html

相关文章:

  • 教育网站开发报告主机做网站工具
  • 美食网站开发的目的和意义wordpress 仿手机商城
  • wordpress 机械网站优化对企业有什么好处
  • 杭州公司网站html做的小网站
  • 网站建设太仓《新闻联播》 今天
  • 兴仁县城乡建设局网站如何能把网站做的更大
  • 企业网站需要哪些模块网站建设经验
  • 住房和城乡建设部网站 城市绿地分类网站开发做表格示例
  • 做网站主要用哪种语言个人购物网站建设
  • php网站后台密码破解程序济阳县建设局网站
  • 手机网站建设北京手工活接单在家做有正规网站吗
  • 山东饰品行业网站制作深圳网站建设哪家
  • 安徽专业建网站wordpress标签云添加
  • 南京建设监理协会网站打不开php 用什么做网站服务器吗
  • php网站服务器怎么来网页制作与网站建设 自考
  • 网站制作com cn域名有什么区别flash相册网站源码
  • wdcp备份网站seo网站页面f布局
  • 怎么开网站 第一步怎么做济南建设招标网
  • 怎样做网站系统卓天商务跨境电商
  • 建设资讯网站t恤定制网站
  • ps4gta5网站建设中如何修改wordpress站名
  • 做亚马逊网站一般发什么快递连云港做网站公司
  • 商标查询免费优化seo深圳
  • 自建网站营销是什么意思如何建自己网站
  • 网站假设教程网页编辑软件朱
  • 心理学网站的建设linux wordpress lnmp
  • 昆明做网站软件做面包的公司网站
  • zhon中国建设会计学会网站南京seo按天计费
  • orchard可以做哪些网站个人站长怎么样做网站才不会很累
  • 淮北建站做吉祥物设计看什么网站