A .牛牛去购物
这道题目纯纯数学题,一遍一遍更新最小值,我们每一次都用a * i + b * j,计算出最小的答案
ACcode
#include <bits/stdc++.h> #define int long long const int N = 1000010; int a[N]; using namespace std; signed main() { int n , a , b; cin >> n >> a >> b; int min1 = 0x3f3f3f3f; for(int i = 0 ; i * a <= n ; i ++ ) { for(int j = 0 ; j * b <= n ; j ++ ) { if(i * a + j * b <= n) { min1 = min(min1 , n - i * a - j * b); } } } cout << min1; return 0; }
B .牛牛写情书
这道题目就是一个find函数,然后就可以写出来
ACcode
#include <bits/stdc++.h> #define int long long const int N = 1000010; int a[N]; using namespace std; signed main() { int n , m ; cin >> n >> m; string s; cin >> s; string s1; for(int i = 0 ; i < s.size() ; i ++ ) { if(s[i] >= 'a' && s[i] <= 'z') { s1 += s[i]; } } string s2; cin >> s2; if(s1.find(s2) != -1) { cout << "YES" ; } else { cout << "NO" ; } return 0; }
C .牛牛排队伍
这道题目我直接用set存储,然后使用一个find就可以,但是在输出答案时我们输出的是指针变量,然后就是这道题时间会卡输入输出,所以就要用题目给出方法输入输出
ACcode
#include <bits/stdc++.h> #define int long long const int N = 1000010; int a[N]; using namespace std; signed main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n , k; cin >> n >> k; set<int> s; for(int i = 0 ; i <= n ; i ++ ) { s.insert(i); } while(k -- ) { int op , q; cin >> op >> q; if(op == 1) { s.erase(q); } else { auto u = s.find(q); cout << *(-- u) << "\n"; } } return 0; }
D .牛牛取石子
一道博弈论 有分析可以知道有如下结论
ACcode
#include <bits/stdc++.h> #define int long long const int N = 1000010; int a[N]; using namespace std; signed main() { int t; cin >> t; while(t -- ) { int a , b; cin >> a >> b; if(min(a , b) % 3 == 0 || (a == b && a % 3 == 1)) { cout << "niumei" << "\n"; } else { cout << "niuniu" << "\n"; } } return 0; }
E .牛牛的构造
这道题目是一个非常好的题目,但是思路有一些复杂,所以我就直接上代码了这是个前缀和的题目(这道题目会卡常,不要用 #define int long long)
ACcode
#include <bits/stdc++.h> const int N = 1000010; int a[N]; int b[N]; using namespace std; int main() { int n , k; cin >> n >> k; for(int i = 1 ; i <= N ; i *= 2 ) { a[i + 1] = 1; } for(int i = 1 ; i <= N ; i ++ ) { a[i] = a[i] + a[i - 1]; } for(int i = 1 ; i <= N ; i ++ ) { b[i] = b[i - 1] + a[i]; } if(b[n] < k) { cout << "-1"; return 0; } vector<int> l , r; for(int i = n ; i >= 1 ; i -- ) { if(k >= a[i]) { l.push_back(i); k -= a[i]; } else { r.push_back(i); } } reverse(r.begin() , r.end()); for(auto u : l) { cout << u << " "; } for(auto u : r) { cout << u << " "; } return 0; }
标签:题目,cout,int,cin,long,牛客,补题,const,65 From: https://www.cnblogs.com/codeforceshobby/p/17031765.html