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

    A题

    分析:直接统计装完每一份需要多少个袋子即可

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 using namespace std;
     5 const int maxn=100000+10;
     6 int a[maxn];
     7 int n,k;
     8 int main()
     9 {
    10     while(cin>>n>>k)
    11     {
    12         int ans=0;
    13         for(int i=0;i<n;i++){
    14             scanf("%d",&a[i]);
    15             if(a[i]%k==0)
    16                 ans+=a[i]/k;
    17             else
    18                 ans+=a[i]/k+1;
    19         }
    20         if(ans%2==0)
    21             ans/=2;
    22         else
    23             ans=ans/2+1;
    24         cout<<ans<<endl;
    25 
    26     }
    27     return 0;
    28 }
    View Code

    B题

    分析:非常坑的一道题,需要考虑的边界情况包括|b|>l,b=0,q=0,q=1,q=-1,然后其他的情况直接用map来统计一下就好了qwq

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "cmath"
     6 #include "vector"
     7 #include "algorithm"
     8 #include "map"
     9 using namespace std;
    10 const int maxn=100000+10;
    11 long long  a[maxn];
    12 long long b,q,l,m;
    13 int main()
    14 {
    15     while(cin>>b>>q>>l>>m){
    16         map<long long,long long>mp;
    17         for(int i=0;i<m;i++){
    18             cin>>a[i];
    19             mp[a[i]]=1;
    20         }
    21         if(abs(b)>l){
    22             cout<<"0"<<endl;
    23             continue;
    24         }
    25         if(b==0){
    26             if(mp[0]){
    27                 cout<<"0"<<endl;
    28             }else{
    29                 cout<<"inf"<<endl;
    30             }
    31             continue;
    32         }
    33         if(q==0){
    34             if(mp[b]){
    35                 if(mp[0]){
    36                     cout<<"0"<<endl;
    37                 }else{
    38                     cout<<"inf"<<endl;
    39                 }
    40             }else{
    41                 if(mp[0]){
    42                     cout<<"1"<<endl;
    43                 }else{
    44                     cout<<"inf"<<endl;
    45                 }
    46             }
    47             continue;
    48         }
    49         int cnt=0;
    50         if(q==1){
    51             if(mp[b]){
    52                 cout<<"0"<<endl;
    53             }else{
    54                 cout<<"inf"<<endl;
    55             }
    56             continue;
    57         }
    58         int ans=0;
    59         if(q==-1){
    60             if(!mp[b])
    61                 ans++;
    62             if(!mp[-b])
    63                 ans++;
    64             if(ans!=0){
    65                 cout<<"inf"<<endl;
    66             }else{
    67                 cout<<"0"<<endl;
    68             }
    69             continue;
    70         }
    71         while(abs(b)<=l){
    72             //if(abs(q)==1)
    73                 //flag++;
    74             if(!mp[b])
    75                 cnt++;
    76             //if(flag==2) break;
    77             b*=q;
    78         }
    79             cout<<cnt<<endl;
    80     }
    81     return 0;
    82 }
    View Code

     C题

    分析:计算出最大的f的值,我们需要注意区分奇偶位的正负关系,然后统计出最大的区间即可

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "cmath"
     6 #include "algorithm"
     7 using namespace std;
     8 const int maxn=100000+10;
     9 long long a[maxn];
    10 long long dp1[maxn],dp2[maxn];
    11 long long f1[maxn],f2[maxn];
    12 int n;
    13 int main()
    14 {
    15     while(cin>>n)
    16     {
    17         memset(dp1,0,sizeof(dp1));
    18         memset(dp2,0,sizeof(dp2));
    19         memset(f1,0,sizeof(f1));
    20         memset(f2,0,sizeof(f2));
    21         for(int i=1;i<=n;i++){
    22             scanf("%lld",&a[i]);
    23             if(i==1)
    24                 dp1[i]=dp2[i]=a[i];
    25             else
    26                 dp1[i]=dp2[i]=abs(a[i]-a[i-1]);
    27         }
    28         for(int i=1;i<=n;i++){
    29             if(i%2)
    30                 dp1[i]*=-1;
    31             else
    32                 dp2[i]*=-1;
    33         }
    34         long long ans1=0,ans2=0;
    35         for(int i=2;i<=n;i++){
    36             f1[i]=max(f1[i-1]+dp1[i],dp1[i]);
    37             ans1=max(ans1,f1[i]);
    38         }
    39         for(int i=2;i<=n;i++){
    40             f2[i]=max(f2[i-1]+dp2[i],dp2[i]);
    41             ans2=max(ans2,f2[i]);
    42         }
    43         cout<<max(ans1,ans2)<<endl;
    44     }
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    Es索引优化
    Echarts-JAVA
    黑客容易攻击的端口
    基于流数据挖掘的网络流量异常检测及分析研究
    大数据可视化分析-绿盟
    Cron
    spring mvc 使用及json 日期转换解决方案
    PIXLCLOUND
    Moloch
    MySQL JDBC的setFetchSize
  • 原文地址:https://www.cnblogs.com/wolf940509/p/6644527.html
Copyright © 2011-2022 走看看