Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)
\(A\) Leftrightarrow \(100pts\)
-
按照题意模拟即可。
点击查看代码
int main() { string s; int a=0,b=0,c=0,i; cin>>s; for(i=0;i<s.size();i++) { a+=(s[i]=='<'); b+=(s[i]=='='); c+=(s[i]=='>'); } if(a==1&&c==1) { cout<<"Yes"<<endl; } else { cout<<"No"<<endl; } return 0; }
\(B\) Integer Division Returns \(200pts\)
-
当 \(x<0\) 时,有 \(\left\lceil \frac{x}{10} \right\rceil\) 等价于 \(\frac{x}{10}\) 向 \(0\) 取整。
-
当 \(x \ge 0\) 时,有 \(\left\lceil \frac{x}{10} \right\rceil= \left\lfloor \frac{x+10-1}{10} \right\rfloor\) 。
- 直接使用
ceil(1.0*x/10)
会爆精度。
点击查看代码
int main() { ll x; cin>>x; if(x<0) { cout<<x/10<<endl; } else { cout<<(x+10-1)/10<<endl; } return 0; }
- 直接使用
\(C\) One Time Swap \(350pts\)
-
对于 \(S_{i}\) ,设 \(num_{S_{i}}\) 表示 \(S_{i+1 \sim n}\) 中 \(S_{i}\) 出现的次数,则 \(S_{i}\) 对答案产生的贡献为 \(n-i-num_{S_{i}}\) 。
-
注意原串在存在两个相同的元素的时候,也要统计在内。
点击查看代码
ll num[30]; char s[1000010]; ll val(char x) { return x-'a'+1; } int main() { ll n,ans=0,flag=0,i; scanf("%s",s+1); n=strlen(s+1); for(i=1;i<=n;i++) { flag|=(num[val(s[i])]!=0); num[val(s[i])]++; } for(i=1;i<=n;i++) { num[val(s[i])]--; ans+=n-i-num[val(s[i])]; } cout<<ans+flag<<endl; return 0; }
\(D\) Tiling \(0pts\)
\(E\) Colorful Subsequence \(0pts\)
\(F\) Many Lamps \(0pts\)
\(G\) Sugoroku 5 \(0pts\)
总结
- \(B\)
- \(x<0\) 的情况之前问过 @wkh2008 向上、下取整的定义。
- \(x \ge 0\) 的写法在看 luogu P9751 [CSP-J 2023] 旅游巴士 题解的时候学了一下。白天看见了 有趣的 Challenge #1 ,顺便复习了一下。
- \(C\)
- 因
cin>>(s+1)
\(CE\) 了,所以吃了发罚时。
- 因