CodeForces - 1373

37763 단어 Codeforces
CodeForces - 1373
A - Donut Shops
 1    , 21      2  
 b    , 22      1  
         

ll a,b,c;
int ans1,ans2,t;
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld",&a,&b,&c);
        if (a*b>c)ans2=b;
        else ans2=-1;
        if (a<c)ans1=1;
        else ans1=-1;
        printf("%d %d
"
,ans1,ans2); } return 0; }

B - 01 Game
    0 10 1int t;
char s[maxn];
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        int num0=0,num1=0;
        scanf("%s",s);
        repp(i,0,strlen(s))s[i]=='0'?num0++:num1++;
        if (min(num0,num1)%2==0)printf("NET
"
); else printf("DA
"
); } return 0; }

C - Pluses and Minuses
now           x     cur
  b[i]>now  [now,b[i]-1]              i,res   i+1 

int t,b[maxn];
char s[maxn];
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",s);
        int sz=strlen(s),num1=0,num2=0,now=0;
        ll res=sz;
        repp(i,0,sz)s[i]=='+'?num1++:num2++,b[i]=num2-num1;
        repp(i,0,sz)
        {
            if (b[i]<=now)continue;
            res+=1ll*(b[i]-now)*(i+1);
            now=b[i];
        }
        WW(res);
    }
    return 0;
}

D - Maximum Sum on Even Positions
제목: 짝수 위치의 수의 더하기 와 최대 가 먼저 명확 해 야 한다. 교체 구간 의 길 이 는 반드시 짝수 이 고 홀수 길이 의 구간 은 무의미 하 게 두 가지 예 를 들 어 이해 하기 쉽다.(5-6)=1
reverse 구간 의 실질 은 교환 구간 내의 인접 수 입 니 다. 이 인접 은 중첩 되 지 않 은 인접 가짜 설정 교환 구간 [1, 4] 이 고 변 화 량 은 (a 2 - a 1) + (a 4 - a 3) (a 4 - a 3) + (a 2 - a 1) + (a 4 - a 3) 또는 (a 1 - a 2) + (a 3 - a 4) (a 1 - a 4) + (a 3 - a 4) + (a 1 - a 2)
따라서 문 제 는 한 구간 을 선택 하 는 것 이 최대 필드 와 최대 필드 와 템 플 릿 을 사용 하 는 것 과 같 습 니 다. 두 가지 방향 이 있 음 을 주의 하 십시오.
int t,n,a[maxn];
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        ll ans=0,ans1=0,ans2=0;
        scanf("%d",&n);
        rep(i,1,n)
        {
            scanf("%d",&a[i]);
            if (i%2==1)ans+=a[i];
        }
        ll cnt=0;
        for (int i=1;i<=n-1;i+=2)
        {
            if (cnt>0)cnt+=a[i+1]-a[i];
            else cnt=a[i+1]-a[i];
            ans1=max(ans1,cnt);
        }
        cnt=0;
        for (int i=2;i<=n-1;i+=2)
        {
            if (cnt>0)cnt+=a[i]-a[i+1];
            else cnt=a[i]-a[i+1];
            ans2=max(ans2,cnt);
        }
        WW(ans+max(ans1,ans2));
    }
    return 0;
}

E - Sum of Digits
1.  k=0 ,      ,               9    
2.  x=0 ,      ,     map
3. n    ,      “   x”   ,          x     n
4. n    ,          9,        ,        ,         88         9,          。        

       ,           ,        
    。        

typedef pair<ll,ll> P;
map<P,ll> M;
P tmp;
int t;
ll solve(ll x){ll res=0;while(x>0){res+=x%10;x/=10;}return res;}
ll qpow(ll a,ll b){ll res=1;while(b){if (b&1)res=res*a;b>>=1;a*=a;}return res;}
int main()
{
    for (ll i=0;i<2000;i++)
    {
        for (ll j=0;j<=9;j++)
        {
            ll ans=0;
            for (ll k=0;k<=j;k++)ans+=solve(i+k);
            tmp.first=ans,tmp.second=j;
            if (M[tmp]==0)M[tmp]=i;
            else M[tmp]=min(M[tmp],i);
        }
    }
    for (ll i=0;i<=9;i++)
    {
        for (ll j=0;j<=9;j++)
        {
            for (ll l=0;l<=1;l++)
            {
                for (ll k=0;k<=9;k++)
                {
                    ll sum=k+j*qpow(10,i+l+1)+8*10*l;
                    for (ll p=1;p<=i;p++)sum+=9*qpow(10,p+l);
                    for (ll q=0;q<=9;q++)
                    {
                        ll ans=0;
                        for (ll c=0;c<=q;c++)ans+=solve(sum+c);
                        tmp.first=ans,tmp.second=q;
                        if (M[tmp]==0)M[tmp]=sum;
                        else M[tmp]=min(M[tmp],sum);
                    }
                }
            }
        }
    }
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld",&tmp.first,&tmp.second);
        if ((tmp.second+1)*tmp.second/2==tmp.first)W(0);
        else if (tmp.second==0)
        {
            int num=tmp.first/9;
            if (tmp.first%9!=0)printf("%d",tmp.first%9);
            repp(i,0,num)printf("%d",9);
            puts("");
        }
        else if (M[tmp]==0)W(-1);
        else WW(M[tmp]);
    }
    return 0;
}

좋은 웹페이지 즐겨찾기