当前位置:网站首页>[noi 2014] 15. Syndrome de difficulté à se lever [binaire]
[noi 2014] 15. Syndrome de difficulté à se lever [binaire]
2022-06-23 18:41:00 【École primaire létale】
Description du sujet:
drdLe Front défensif denComposition des portes de défense.Chaque porte de défense contient une opérationopEt un paramètret,Où l'opération doit êtreOR,XOR,ANDUn des,Le paramètre doit être un entier non négatif.Si l'attaque n'a pas encore franchi la porte de défensex,Et sa puissance d'attaque passera àx op t.FinaldrdLes dégâts sont la force d'attaque initiale de l'adversairexPasser par tous lesnLa puissance d'attaque générée par la transition derrière la porte de défense.Parce queatmNiveau limité,Son attaque initiale ne peut être que0ÀmUn entier entre(C'est - à - dire que sa force d'attaque initiale ne peut être que 0, 1, … , mOption moyenne,Mais la force d'attaque après avoir franchi la porte de défense n'est pasmLimites).Pour économiser de l'énergie,Il espère qu'en choisissant la bonne force d'attaque initiale, son attaque permettradrdLes plus grands dégâts,S'il vous plaît, aidez - le à calculer,Au mieux, une de ses attaquesdrdCombien de dégâts.
Format d'entrée:
Fichier d'entrée 1 Ligne contenant 2 Nombre entier,Dans l'ordren, m,Représentation drd Oui.nPortes de défense,atm La puissance d'attaque initiale de0ÀmEntier entre.
Et puis...nD'accord,Chaque porte de défense à son tour.Chaque ligne contient une chaîneopEt un entier non négatift,Les deux sont séparés par un espace,EtopAvant,tÀ l'arrière.,opIndique le fonctionnement correspondant de la porte de défense,tReprésente le paramètre correspondant.
Format de sortie:
Sortie d'un entier ligne par ligne,ReprésentationatmUne attaque dedrdCombien de dégâts.
Exemple:
Exemple1Entrée
3 10
AND 5
OR 6
XOR 7Exemple1Produits
1
Exemple1Explication:
Supposons que la force d'attaque initiale soit 4, La force d'attaque finale a été calculée comme suit :
4 AND 5 = 4
4 OR 6 = 6
6 XOR 7 = 1
Similaire, On peut calculer que la force d'attaque initiale est 1,3,5,7,9 La puissance d'attaque finale est 0,L'attaque initiale est 0,2,4,6,8,10 La puissance d'attaque finale est 1,Donc,atmUne attaque dedrd La valeur des dommages subis est 1.
Champ d'application des données

Dans cette question, Le candidat doit d'abord convertir les nombres en binaires avant d'effectuer le calcul . .Si la longueur binaire des deux nombres de l'opération est différente , Avant de compléter 00 Même longueur .
- OR Pour les bits ou les opérations ,Traiter deux nombres binaires de même longueur,Un seul des deux bits binaires correspondants est 1,La valeur résultante de ce bit est 1,Sinon 0.
- XOR Pour les opérations Xor bitwise , Effectuer une exclusion logique ou une opération sur chaque bit d'un mode binaire de longueur égale ou d'un nombre binaire . Si les deux bits binaires correspondants sont différents (Différences),La valeur résultante de ce bit est 1,Sinon, ce bit est 0.
- AND Pour les bits et les opérations ,Traiter deux nombres binaires de même longueur, Les deux bits binaires correspondants sont 1,La valeur résultante de ce bit est 1,Sinon 0.
Par exemple, On va prendre les décimales 5 Et le nombre décimal 3 Faites - le séparément. OR、XOR Avec AND Opération,Les résultats suivants peuvent être obtenus:
0101 (Décimal 5)
OR 0011 (Décimal 3)
= 0111 (Décimal 7)
0101 (Décimal 5)
XOR 0011 (Décimal 3)
= 0110 (Décimal 6)
0101 (Décimal 5)
AND 0011 (Décimal 3)
= 0001 (Décimal 1)
Solution 1:
Convertir en nombre binaire,énumérez chaque bit, Regarde ça. 0 Toujours 1Heure Peut faire passer n À la porte 1 .
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;// Valeur maximale de la porte
ll ans,power[N];//La réponse , Tableau des poids
int n,m,t[N];//nLa porte. 0-mAttaque initiale Nombre entré
int op[N];//Opérateur entré
bool fun(int i,int now)//iEst le nombre de chiffres
{
int temp;
for(int j=1;j<=n;j++)//nPortes
{
temp =1 & (t[j]>>i);//Enlevez - le.t[j] Les premiers chiffres de De0C'est parti.
if(op[j]==1)now=now&temp;
else if(op[j]==2)now=now|temp;
else now=now^temp;
}
return now;
}
int main()
{
cin>>n>>m;//Entrez la porte Et Puissance d'attaque maximale
//Entrez le numéro
for(int i=1;i<=n;i++)
{
string s;
cin>>s>>t[i];
if(s[0]=='A')op[i]=1;
else if(s[0]=='O')op[i]=2;
else op[i]=3;
}
//Tableau des poids
power[0]=1;
for(int i=1;i<=31;i++)
{
power[i]=power[i-1]*2;//Poids
}
for(int i=31;i>=0;i--)
{
if( fun(i,0) )//NoiBits - Oui.0,En passantN La porte est devenue 1
{
ans += power[i];
cout<<ans<<endl;
}
else if(m>power[i] && fun(i,1))
{
ans += power[i],m-=power[i];
cout<<ans<<endl;
}
}
cout<<ans;
return 0;
} 边栏推荐
猜你喜欢

Leetcode question brushing: hash table 01 (valid Letter ectopic words)

WIN11 系统所有快捷键说明

产品设计- 需求分析

微机原理第八章笔记整理

Js25 topic

元宇宙大杀器来了!小扎祭出4款VR头显,挑战视觉图灵测试

重磅:国产IDE发布,由阿里研发,完全开源!(高性能+高定制性)

Leetcode: hash table 02 (intersection of two arrays)

Sany Heavy energy technology innovation board listed: annual revenue of RMB 10.2 billion and market value of RMB 47 billion

外卖江湖格局将变,美团“大哥”不好当
随机推荐
Improving efficiency or increasing costs, how should developers understand pair programming?
Wechat applet startlocationupdatebackground() simply realizes rider distribution location
test
涂鸦智能通过聆讯:拟回归香港上市 腾讯是重要股东
QT based graphics rendering system documentation + project source code and executable exe files + system instructions
杰理之串口通信 串口接收 IO 需要设置数字功能【篇】
一,数组--滑动窗口问题--长度最小的子数组--水果成篮问题
【翻译】具有时间结构的特定信号的鲁棒提取(下)
Remote connection raspberry pie in VNC Viewer Mode
STM32 (IX) -- can
物流服务与管理主要学什么
STM32(八)------- PWM输出
[Huazhong University of science and technology] information sharing for the first and second examinations of postgraduate entrance examination
外卖江湖格局将变,美团“大哥”不好当
[binary tree] flip the binary tree to match the preorder traversal
mysql -- 经典面试题
leetcode刷题:哈希表04 (两数之和)
可编程交换机上的近似公平排队阅读笔记
Shell process control - 39. Special process control statements
高级计网笔记(六)