• AC修炼计划(AtCoder Beginner Contest 329)


    传送门:Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329) - AtCoder

    A,B,C,D

    这四道题比较简单,就不多叙述。

    E - Stamp

    这题是一道比较经典的涂色问题。

    我们可以知道,如果存在覆盖相交的话,要么前面盖住后面,要么后面盖住前面,则他们的首尾一定会留下痕迹。所以我们正反遍历,可以得到答案。

    代码如下:

    1. #pragma GCC optimize(3) //O2优化开启
    2. #include
    3. using namespace std;
    4. #define int long long
    5. typedef long long ll;
    6. typedef pair<int,int> PII;
    7. const int N=998244353;
    8. const int MX=0x3f3f3f3f3f3f3f3f;
    9. int n,m;
    10. string s,t;
    11. bool pan(string x){
    12. for(int i=0;i
    13. if(x[i]=='#'||x[i]==t[i])continue;
    14. else return 0;
    15. }
    16. return 1;
    17. }
    18. void icealsoheat(){
    19. cin>>n>>m;
    20. cin>>s>>t;
    21. for(int i=m-1;i
    22. if(pan(s.substr(i-m+1,m))){
    23. for(int j=i-m+1;j<=i;j++){
    24. s[j]='#';
    25. }
    26. }
    27. }
    28. for(int i=n-1;i>=m-1;i--){
    29. if(pan(s.substr(i-m+1,m))){
    30. for(int j=i-m+1;j<=i;j++){
    31. s[j]='#';
    32. }
    33. }
    34. }
    35. for(int i=0;i
    36. if(s[i]!='#'){
    37. puts("No");
    38. return;
    39. }
    40. }
    41. puts("Yes");
    42. }
    43. signed main(){
    44. ios::sync_with_stdio(false);
    45. cin.tie();
    46. cout.tie();
    47. int _yq;
    48. _yq=1;
    49. // cin>>_yq;
    50. while(_yq--){
    51. icealsoheat();
    52. }
    53. }

    F - Colored Ball

    这道题的时间复杂度比较巧妙,我们每次都让最小的去合并最大的,最后的时间复杂度为O(n)。确实让我开拓了眼界。是启发式合并的思想。

    代码如下:

    1. #pragma GCC optimize(3) //O2优化开启
    2. #include
    3. using namespace std;
    4. #define int long long
    5. typedef long long ll;
    6. typedef pair<int,int> PII;
    7. const int N=998244353;
    8. const int MX=0x3f3f3f3f3f3f3f3f;
    9. int n,q;
    10. int c[1000005];
    11. set<int>s[200005];
    12. int id[200005];
    13. void icealsoheat(){
    14. cin>>n>>q;
    15. for(int i=1;i<=n;i++){
    16. cin>>c[i];
    17. id[i]=i;
    18. s[i].insert(c[i]);
    19. }
    20. while(q--){
    21. int a,b;
    22. cin>>a>>b;
    23. int x=id[a];
    24. if(s[id[a]].size()>s[id[b]].size()){
    25. swap(id[a],id[b]);
    26. }
    27. for(auto i:s[id[a]]){
    28. s[id[b]].insert(i);
    29. }
    30. s[id[a]].clear();
    31. cout<size()<<"\n";
    32. }
    33. }
    34. signed main(){
    35. ios::sync_with_stdio(false);
    36. cin.tie();
    37. cout.tie();
    38. int _yq;
    39. _yq=1;
    40. // cin>>_yq;
    41. while(_yq--){
    42. icealsoheat();
    43. }
    44. }

    G - Delivery on Tree

    较难,自己码了166行代码,不过最后以失败告终。待补。。。。。

  • 相关阅读:
    【MATLAB】史上最全的11种数字信号滤波去噪算法全家桶
    c++ 运算符重载(一)
    09_spring注解方式管理bean
    工业智能网关BL110应用之四十九: 数据上传华为云的配置
    N个砝码
    K8S一个Yaml执行多个任务
    开发跨端微信小程序框架选型指南
    JS中script标签defer和async属性的区别
    win7 X64 安装tensorflow 并使用 spyder 教程
    羽夏笔记—— AT&T 与 GCC
  • 原文地址:https://blog.csdn.net/kyrietheshy/article/details/134542827