牛客网训练3总结
A打怪
題意:我和怪物都有血量,都有攻擊值。我和怪物輪流攻擊,當然我先開始,問在我血量為0之前最多能殺幾個怪。
分析
統計怪物死需要打幾次cnt,我死需要打幾次cnt1。
如果怪物一次就死,則我可以殺無數個怪。
否則我的血量需要減去(cnt-1)*怪的攻擊力
ac代碼
#include<iostream>using namespace std; int t,h,a,H,A; int main(){cin>>t;while(t--){cin>>h>>a>>H>>A;int tmp1=h,tmp2=H;int cnt=0,cnt1=0;while(tmp2>0){//怪需要幾次才死 tmp2-=a;cnt++;}while(tmp1>0){//我需要幾次才死 tmp1-=a;cnt1++;}if(cnt==1){cout<<-1<<endl;continue;} int num=0;do{h-=A*(cnt-1);if(h>0) num++;}while(h>0);cout<<num<<endl;} }B吃水果
分析
AC代碼
#include<iostream>using namespace std;int t; typedef long long ll; ll n,m; int main(){cin>>t;while(t--){cin>>n>>m;if(n==m){//一樣多 cout<<n<<endl;continue;}int a=max(m,n);//較大者 int b=min(m,n);//較小者if(a==2*b){cout<<a+1<<endl;continue;}int cnt=0;while(a!=2*b){if(a/2>=b){b*=2;cnt++;}else{a--;b--;cnt++;}}cout<<cnt+a+1<<endl;}return 0; }C咪咪游戲
這個串是由連續的mq連接而成的。
判斷是否合法
輸入
輸出
Yes No No No
這題考慮少了只有qmqmqm的情況,竟然還過了!
需要學習大佬的簡潔的代碼。
寶盒
占坑來答,這是一道分組背包的題目。
E小心思
題意
給定行李箱的體積和每件行李壓縮前后的體積,問最少壓縮幾個袋子可以把行李放進行李箱。
分析
求出壓縮前所有行李的體積和sum1,求出壓縮后所有行李的體積和sum2。
如果壓縮前體積小于行李箱體積,則必可裝
如果壓縮后體積大于行李箱體積,則必不可裝。
其他情況,必然是壓縮前放不下, 壓縮后可以放下
按照壓縮前后體積之差從大到小排序,遍歷壓縮即可。
ac代碼
#include<iostream> #include<algorithm> using namespace std; typedef long long ll;const int maxn=1e5+10; struct node{ll qian,hou; }a[maxn];//壓縮前后體積相差最大的排在前面 bool cmp(node a,node b){return(a.qian-a.hou>b.qian-b.hou); }int n,m; int main(){while(cin>>n>>m){ll sum1=0,sum2=0;for(int i=1;i<=n;i++){cin>>a[i].qian>>a[i].hou;sum1+=a[i].qian;sum2+=a[i].hou;}if(sum1<=m){//不用壓縮 cout<<0<<endl;continue;}if(sum2>m){//壓縮后放不下 cout<<-1<<endl;continue;}sort(a+1,a+n+1,cmp);int cnt=0,p=1;while(sum1>m&&p<=n){sum1+=(a[p].hou-a[p].qian);cnt++;//袋子個數p++;//下一個}cout<<cnt<<endl;} }F多元組
這是一道dp+樹狀數組的題目
ac代碼鏈接M元上升子序列【樹狀數組+dp】
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 成本低适合女性开的店 2022年可以考
- 下一篇: c++输出数据的二进制表示形式