首页 > 其他分享 >Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT A--B

Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT A--B

时间:2023-01-01 22:01:10浏览次数:56  
标签:cout 840 -- cin long Codeforces int while heap

​https://codeforces.com/contest/1763​


A. Absolute Maximization二进制操作

经典的利用二进制位数操作的题,| 和 &。

最大值肯定是所有元素的或。

最小值是所有元素的与。

为什么?或就类似加法,每个位数有1的全都归并到一个数上,因此这个数是包含所有元素的每个位的1的,它必然是最大的。

与,则类似减法,把所有元素每一位的1都尝试减去,最终留下的是所有元素共同是1的位,也就是最小的。

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;

void s(){
int n;
cin >> n;
vector<int> a(n);
for(auto &i : a) cin >> i;

int maxone = 0, minone = -1;
for(int i = 0; i < n; i ++){
maxone = maxone | a[i];
minone = minone & a[i];
}
cout << maxone - minone << endl;
}

int main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t;
cin >> t;
while(t--) s();


return 0;
}



B. Incinerate模拟

暴力模拟每一次attack就行,不会超时。

注意,有些元素是最小值,但是血很厚,需要反复杀很多次。有些元素动态的血量清零后,就不能再考虑它了。

实现思路:用一个all来存当前的累积伤害,如果这个怪物的血量低于累积伤害,说明它被kill了,将它弹掉或者忽略掉就行。

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;

struct node{
int index;
long long hp, power;
};

long long n, k;

bool operator <(const struct node &a, const struct node &b){
return a.power > b.power; //小根堆
}

void s(){

cin >> n >> k;
vector<long long> h(n + 10), p(n + 10);// 别放全局变量
priority_queue<struct node> heap;

for(int i = 1; i <= n; i ++) cin >> h[i];
for(int j = 1; j <= n; j ++) cin >> p[j], heap.push({j, h[j], p[j]});


long long nowk = k, all = k;
while(!heap.empty() && nowk > 0){ //可能没kill,需要反复杀掉
while(!heap.empty() && heap.top().hp <= all) heap.pop();
while(!heap.empty() && heap.top().hp > all && nowk > 0){
nowk -= heap.top().power;
all += nowk;
}
}
while(!heap.empty() && heap.top().hp <= all) heap.pop();


if(!heap.empty()) {
cout << "NO\n";
}else cout << "YES\n";

}

int main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int t;
cin >> t;
while(t--) s();


return 0;
}



标签:cout,840,--,cin,long,Codeforces,int,while,heap
From: https://blog.51cto.com/u_15389271/5983388

相关文章

  • POST 四种常见的Content-Type
    ​​HTTP/1.1协议​​规定的HTTP请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT这几种。其中POST一般用来向服务端提交数据,本文主要讨论POST提......
  • Java序列化和反序列化
    遇到这个JavaSerializable序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个Serializable接口,也就是为啥要序列化c,serialVersion......
  • 论语
    吾十有五志于学,三十而立,四十而不惑,五十而知天命,六十耳顺,七十而从心所欲,不逾矩。-孔子天性只提供可能,学养才能使人为人处世都合乎道。“由也,汝闻六言六蔽矣乎?”......
  • C/C++按值传递和按地址传递
    C/C++的按值传递和按地址传递有明显不同,下面对他们作个区别:按值传递:在调用函数中将原函数的值拷贝一份过去被调用的函数,在被调用函数中对该值的修改不会影响原函数的值。按......
  • C#.NET 随机排序集合(列表\数组) | 打乱集合(列表\数组)
    直接上代码:///<summary>///重排列表(打乱列表)///</summary>///<paramname="arr"></param>publicstaticList<string>ConfusionArray(List<string>list){......
  • C语言--函数2--递归2
    递归--判断一个一维数组是否递增#include<stdio.h>#defineN5//判断一个一维数组是否递增/*Judge_dz:判断一个一维数组是否递增@a:一维数组名@n:元素个数返回值:无*......
  • day13-功能实现12
    家居网购项目实现012以下皆为部分代码,详见https://github.com/liyuelian/furniture_mall.git29.功能27-Ajax检验注册名29.1需求分析/图解用户注册时,后端通过验证,提......
  • 博客字体设置方案
    为了提高博客的阅读体验,我对博客的字体设置进行了一系列的调整,此文章旨在记录确定此方案时的思路历程。问题字体设置中遇到的最大问题在于中文内容夹用英文时,某些中文或......
  • Markdown使用方法
    Markdown使用方法 一级二级标题用#符号来表示层级标题(一共有6级别)也可以用ctrl+数字来表示 引用用>符号来表示这是一段引用 有序列表类似于word,......
  • python 异常处理
    目录python异常处理异常机制本质try...except...try...except...except...try...except...elsetry...except...else...finally常见异常汇总和说明return语句和异常处理问......