C小白第一天训练,有哪些细节需要注意?

摘要:C++小白训练第一天 以下为牛客挑战 今日收获 b1=(t<=0?0:(t+B-1)B); (t+B-1)B,这个就是向上取整,c&#
C++小白训练第一天 以下为牛客挑战 今日收获 b1=(t<=0?0:(t+B-1)/B); (t+B-1)/B,这个就是向上取整,c++默认是向下取整 三目运运算符和向上取整 比较?运算1:运算2; 一个数&1就可以判断他的奇偶数性,奇数为1,偶数为0; find(t.begin(),t.end(),x),去容器中找x,find(...) != t.end()这样就是没有找到 连续段的题目直接可以用两个参数代替,now,ans, 牛客挑战赛85 剑客花木兰 「SFCOI-4」剑客花木兰 输入 4 5 3 1 7 15 101 输出 0 1 1 1 0 5 1 32 输入 2 5 5 3 20 输出 0 1 0 4 ​ 开始看到这个题目我没有特别去注意这个10的3次方的问题,然后就在想别的方法去,但是好像都过不了然后我看到10的3次方双层循环不会出事然后直接吗枚举 ​ 主要思路就是我们枚举A的次数,来得到B的次数,对体力的和进行比较看看和前一次的大小然后交换次数。,但是这个比较值最少要开到1e12来不然就会全部过不了。 解题代码 #include<bits/stdc++.h> #define int long long #define lll __uint128_t #define PII pair<int ,int> #define endl '\n' using namespace std; #define yn(ans) printf("%s\n", (ans)?"Yes":"No");//快速打印 #define YN(ans) printf("%s\n", (ans)?"YES":"NO"); #define REP(i, e) for (int i = 0; i < (e); ++i) #define REP1(i, s, e) for (int i = (s); i <=(e); ++i) #define TESTS int t; cin >> t; while (t--) #define TEST const int N=2e5+10,M=1e3+10,mod=1e9+7; signed main(){ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,A,B; cin>>n>>A>>B; for(int i=0;i<n;i++){ int x; cin>>x; int max1=1e12; int a,b; for(int j=0;j<=A;j++){ int t=x-j*A; int b1=(t<=0?0:(t+B-1)/B);//因为要填补完全,例如5生命,但是中有3,所以要补充就是向上取整,然后3 和3向上取整还是1; int f=j*A+b1*B; if(f<max1){ max1=f; a=j; b=b1; } } cout<<a<<" "<<b<<endl; } return 0; } 序列与变换 B-「SFCOI-4」序列与变换_牛客挑战赛85 输入 3 6 20 17 24 输出 1 1 我的第一开始的思路是肯定要求出这个数的等差数列和s然后最少就可以排除一部分数据,然后剩下的我们发现到和s的奇偶性有点相同, 相同的为0,因为 把 aᵢ 一口气减掉总和 s = m+(m−1)+…+0 = m(m+1)/2 得到余量 r = aᵢ − s 因为 s 已经把“后面所有减法”一次性做完,所以 r 就是“减到最后还剩下的那个数”。 而“减偶数”不会翻转最低位,“减奇数”才会翻转最低位。
阅读全文