zoukankan      html  css  js  c++  java
  • Codeforces Round #617 (Div. 3)

    A - Array with Odd Sum

    题意:你可以更换两个数,要求和是奇数

    思路:判断数组里是否有奇数,没有奇数或者数组全是奇数且数组个数为偶数时为NO

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int INF=0x3ffff;
     5 const int maxn=2e4;
     6 int main()
     7 {
     8     int T;
     9     scanf("%d",&T);
    10     while(T--)
    11     {
    12         int n;
    13         scanf("%d",&n);
    14         int a;
    15         int sum=0;
    16         bool flag=false;
    17         for(int i=0;i<n;i++)
    18         {
    19             scanf("%d",&a);
    20             if(a%2!=0)
    21             {
    22                 flag=true;
    23                 sum++;
    24             }
    25         }
    26         if(!flag||(sum==n&&n%2==0))
    27             printf("NO
    ");
    28         else
    29             printf("YES
    ");
    30     }
    31     return 0;
    32 }

    B - Food Buying

    题意:你有一些钱,花费10元就可以返还一元,且一元也可以用掉,问你花最多多少钱

    思路:循环/10,%10,把除以10的加上模10的,原来的钱加上每次除以10后的钱就行了,因为返还后的钱都可以用

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int INF=0x3ffff;
     5 const int maxn=2e4;
     6 int main()
     7 {
     8     int T;
     9     scanf("%d",&T);
    10     while(T--)
    11     {
    12         ll a;
    13         cin>>a;
    14         ll sum=a;
    15         while(a/10!=0)
    16         {
    17             ll chu=a/10;
    18             ll mo=a%10;
    19             a=chu+mo;
    20             sum+=chu;
    21         }
    22         cout<<sum<<endl;
    23     }
    24     return 0;
    25 }

     C - Yet Another Walking Robot

    题意:给你字符串所组成的路径,可以删除里面的子串,从而终点不变,且删除的长度尽可能小

    思路:用map来记录坐标,find来查找当前点有没有走过,没走的话,当前点的值为i+1(就是位置),走过的话,比较i-mp[now](其实就是之前走的位置的值)与INF的大小,只要小就更新,否则继续走

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int INF = 0x3ffff;
     5 int main(){
     6     int T;
     7     scanf("%d",&T);
     8     while(T--)
     9     {
    10         int n;
    11         scanf("%d",&n);
    12         string s;
    13         cin>>s;
    14         int xx=0,yy=0;
    15         int len=INF;
    16         map<pair<int,int>,int>mp;
    17         mp[{xx,yy}]=0;
    18         int l=0,r=0;
    19         for(int i=0;i<n;i++)
    20         {
    21             if(s[i]=='L')xx--;
    22             else if(s[i]=='R')xx++;
    23             else if(s[i]=='U')yy++;
    24             else yy--;
    25             pair<int,int>now={xx,yy};
    26             if(mp.find(now)!=mp.end())
    27             {
    28                 if(i-mp[now]<len)
    29                 {
    30                     len=i-mp[now];
    31                     l=mp[now];
    32                     r=i+1;
    33                 }
    34             }
    35             mp[now]=i+1;
    36         }
    37         if(len>n)
    38             printf("-1
    ");
    39         else
    40             printf("%d %d
    ",l+1,r);
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    avalon如何用年月日的方式输出..
    做一个倒计时的功能,天,时,分 /时,分,秒
    avalon用background-image不起作用,怎么来选取前几个的图片进行渲染
    获取地址栏的参数的两种方法?
    mac屏幕录制
    数据可视化
    vscode 插件
    git 命令 总结
    jest
    react admin
  • 原文地址:https://www.cnblogs.com/Vampire6/p/12262290.html
Copyright © 2011-2022 走看看