ACM-ICPC实验室20.2.22测试-动态规划

C.田忌赛马

直接贪心做就可以~

#include<bits/stdc++.h>
using namespace std;
const int maxn=10014;
int a[maxn],b[maxn];
int main() {
    int n;
    while(~scanf("%d",&n)) {
        for(int i=0;i<n;i++) scanf("%d",&b[i]);
        for(int i=0;i<n;i++) scanf("%d",&a[i]);
        sort(a,a+n);
        sort(b,b+n);
        int x1=0,y1=0;
        int x2=n-1,y2=n-1;
        int ans=0;
        for (int i=0;i<n;i++) {
            if (a[x1]>b[y1]) {
                ans+=100;
                x1++;
                y1++;
            }
            else if(a[x1]<b[y1]) {
                ans-=100;
                x1++;
                y2--;
            }
            else {
                if(a[x2]>b[y2]) {
                    ans+=100;
                    x2--;
                    y2--;
                }
                else if (a[x1]<b[y2]) {
                    ans-=100;
                    x1++;
                    y2--;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

D.202020

最简单的dp~

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+14;
ll dp[maxn],dp1[maxn];
int main () {
    string s;
    cin>>s;
    if (s[0]=='2') dp[0]=0,dp1[0]=1;
    else dp[0]=1,dp1[0]=0;
    for (int i=1;i<s.length();i++) {
           if (s[i]=='2') dp[i]=dp1[i-1],dp1[i]=dp[i-1]+1;
        else dp[i]=dp[i-1]+1,dp1[i]=dp1[i-1];
    }
    ll ans=0;
    for (int i=0;i<s.length();i++) ans+=dp[i];
    printf ("%lld\n",ans);
    return 0;
}
//2020 

猜你喜欢

转载自www.cnblogs.com/zhanglichen/p/12347261.html
今日推荐