zoukankan      html  css  js  c++  java
  • Codeforces Round #278 (Div. 2)

    A直接暴力好了。

     1 #include<bits/stdc++.h>
     2 typedef long long ll;
     3 using namespace std;
     4 
     5 int pan(ll x)
     6 {
     7     while (x)
     8     {
     9         if (x%10==8) return 1;
    10         x/=10;
    11     }
    12     return 0;
    13 }
    14 
    15 int main()
    16 {
    17     ll n;
    18     cin>>n;
    19     for (int i=1;i<=10000;i++)
    20     if (pan(abs(n+i)))
    21     {
    22         cout<<i;
    23         return 0;
    24     }
    25     return 0;
    26 }
    View Code

    B:处理起来比较蛮烦,或则我比较懒。

    大概思路是:先判n==4

    2:n==0,预设定一个数。

    3:N==1,可以用数学算出来;

    N==2&&N==3的情况比较难讨论。但是ai<=500;看到直接暴力的思路;

    C:暴力即可。

    我们知道所有值都在100以内。所以我们可以暴力攻击和防御值买多少,然后算HP。因为HP可能买很多。

    这样循环数不会很多。

     1 #include<bits/stdc++.h>
     2 typedef long long ll;
     3 using namespace std;
     4 
     5 int hpy,atky,defy;
     6 int hpm,atkm,defm;
     7 
     8 
     9 
    10 int pan(int b,int c)
    11 {
    12 
    13        int tatky=atky+b;
    14        int tdefy=defy+c;
    15        if (tatky<=defm) return -1;
    16 
    17        int tmp=tatky-defm;
    18 
    19        int ti=hpm/tmp;
    20        if (hpm%tmp) ti++;
    21 
    22        if (atkm<=tdefy) return 0;
    23 
    24        tmp=atkm-tdefy;
    25 
    26        if (ti*tmp<hpy) return 0;
    27        return ti*tmp-hpy+1;
    28 }
    29 
    30 
    31 int main()
    32 {
    33 
    34     int h,a,d;
    35     cin>>hpy>>atky>>defy;
    36     cin>>hpm>>atkm>>defm;
    37     cin>>h>>a>>d;
    38 
    39     int ans=1<<30;
    40 
    41 
    42     for (int j=0;j<4000;j++)
    43     for (int k=0;k<4000;k++)
    44     {
    45       if (pan(j,k)==-1) continue;
    46       ans=min(ans,pan(j,k)*h+a*j+d*k);
    47     }
    48 
    49     cout<<ans<<endl;
    50     return 0;
    51     }
    View Code

    D:思路很多:线段树,单调队列。

    我看到的一种做法。。。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int a[123456];
     5 int n,L,s;
     6 int flag=1;
     7 int main()
     8 {
     9     int left,right;
    10     int ans=0;
    11     cin>>n>>s>>L;
    12     int last=0;
    13     for (int i=0;i<n;i++) cin>>a[i];
    14 
    15      int pos=0;
    16      for (;pos<n;pos++)
    17      {
    18          int maxm,minm;
    19          int cnt=1;
    20          maxm=minm=a[pos];
    21          right=pos+1;
    22          while (right<n)
    23          {
    24              maxm=max(maxm,a[right ]);
    25              minm=min(minm,a[right ]);
    26              if (maxm-minm<=s) cnt++;
    27              else break;
    28              right++;
    29          }
    30          right--;
    31 
    32          maxm=minm=a[pos];
    33          left=pos-1;
    34          while (left>=last)
    35          {
    36              maxm=max(maxm,a[left ]);
    37              minm=min(minm,a[left ]);
    38              if (maxm-minm<=s) cnt++;
    39              else break;
    40              left--;
    41          }
    42          left++;
    43          if (cnt<L)
    44          {
    45             flag=0;
    46             break;
    47          }
    48          ans++;
    49          last=left+L;
    50          pos=right;
    51      }
    52 
    53      if (flag==0) ans=-1;
    54      cout<<ans;
    55      return 0;
    56 }
    View Code

    http://www.cnblogs.com/AOQNRMGYXLMV/p/4116052.html。

    这里有讲解。

    然后我再分析一下

    7 2 2
    1 3 1 2 4 1 2
    样例:
    先把1 3 1 2放入第一组。
    last的值是3(下标从0开始);
    下次循环时可以在left到last中再找,就是4,2两个数一组。

  • 相关阅读:
    vue根据不同命令打出不同环境的包
    classpath到底指的哪里
    guava的事件发布订阅功能
    枚举类型的使用
    SpringBoot自动配置的实现原理
    HttpConnection的使用
    SpringBoot下的值注入
    SpringBoot下的Job定时任务
    SpringBoot拦截器的使用
    SpringBoot+MyBatis简单数据访问应用
  • 原文地址:https://www.cnblogs.com/forgot93/p/4120049.html
Copyright © 2011-2022 走看看