• Codeforces Round #317 (div 2)


    Problem A Arrays

    思路:水一水。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+5;
     4 int n1,n2,k,m,a[N],b[N];
     5 int main()
     6 {
     7     scanf("%d%d",&n1,&n2);
     8     scanf("%d%d",&k,&m);
     9     for(int i=1;i<=n1;i++) scanf("%d",&a[i]);
    10     for(int i=1;i<=n2;i++) scanf("%d",&b[i]);
    11     if(a[k]<b[n2-m+1]) puts("YES");
    12     else puts("NO");
    13     return 0;
    14 }
    View Code

    Problem B Order Book

    思路:刚开始想优先队列搞一搞一直WA,换了个暴力做法就过了。。。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+5;
     4 int B[N],S[N];
     5 int n,s,tot1,tot2;
     6 int main()
     7 {
     8     scanf("%d%d",&n,&s);
     9     for(int i=1;i<=n;i++)
    10     {
    11         char ss[3];
    12         int p,sum;
    13         scanf("%s%d%d",ss,&p,&sum);
    14         if(ss[0]=='B') B[p]+=sum;
    15         else S[p]+=sum;
    16     }
    17     int cnt=0;
    18     vector<int> ans;
    19     for(int i=0;i<=1e5 && cnt<s;i++)
    20     {
    21         if(!S[i]) continue;
    22         ans.push_back(i);
    23         cnt++;
    24     }
    25     sort(ans.rbegin(),ans.rend());
    26     for(int i:ans) printf("S %d %d
    ",i,S[i]);
    27     cnt=0;
    28     for(int i=1e5;i>=0 && cnt<s;i--)
    29     {
    30         if(!B[i]) continue;
    31         printf("B %d %d
    ",i,B[i]);
    32         cnt++;
    33     }
    34     return 0;
    35 }
    View Code

    Problem C  Lengthening Sticks

    题目大意:给你a,b,c,l 三个数  将a,b,c分别加上x,y,z,且 x+y+z<=l 问你,有多少种方案使a,b,c能构成三角形。

    思路: 模拟的时候没做出来,思路有,写起来巨麻烦,赛后一小时才A掉。。。

    我们先将 a 当做最长的边,枚举a的长度,然后往b,c里加的合法长度在 down 到  up之间,问题就变成了,将一个整数

    划分成两个整数,划分之后的整数的范围有限制。 然后我找了一下规律,o(1) 算了贡献。 然后我们找两个长边一样的情

    况有多少种,三边一样的情况有多少种,总的加起来就是答案。

    ps:看了网上的做法,是算不合法的数量,简单多了。。。。

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 int a,b,c,l;
     5 ll ans;
     6 void work(int a,int b,int c)
     7 {
     8     int base=b+c;
     9     for(int i=a;i<=a+l;i++)
    10     {
    11         int u=l-i+a;
    12         if(base+u<=i || i<=b || i<=c) continue;
    13         ll down=max(0,i+1-base);
    14         ll up=min(u,2*(i-1)-base);
    15         if(down>up) continue;
    16         ans+=(down+1+up+1)*(up-down+1)/2;
    17         long long now=i-b-1;
    18         if(up>now)
    19         {
    20             long long x=max(down,now+1)-now;
    21             long long y=up-now;
    22             ans-=(x+y)*(y-x+1)/2;
    23         }
    24         now=i-c-1;
    25         if(up>now)
    26         {
    27             long long x=max(down,now+1)-now;
    28             long long y=up-now;
    29             ans-=(x+y)*(y-x+1)/2;
    30         }
    31     }
    32     int sum=a+b;
    33     int mx=max(a,b);
    34     for(int i=mx;2*i<=l+sum;i++)
    35     {
    36         int res=l-(2*i-sum);
    37         int up=min(i-1,c+res);
    38         int down=max(1,c);
    39         if(down>up) continue;
    40         ans+=up-down+1;
    41     }
    42 }
    43 int main()
    44 {
    45     cin>>a>>b>>c>>l;
    46     int mn=min(a,min(b,c));
    47     int mx=max(a,max(b,c));
    48     work(a,b,c); work(b,c,a); work(c,a,b);
    49     int sum=a+b+c;
    50     for(int i=mx;i*3<=l+sum;i++) ans++;
    51     printf("%lld
    ",ans);
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    ECSHOP获取当前分类所在顶级分类信息
    二级域名会不会分散主域名权重
    ECSHOP增加模板页的方法
    ECSHOP之transport.js/run() error:'process_request' 未定义
    AIR任务栏图标的闪烁
    googlemap数据采集器(三)
    Flex中List自己定义itemrenderer渲染问题的解决
    GIS理论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、Bing Maps Tile System)
    android下歌曲名称乱码的解决办法
    史上最强劲的android模拟器命令详解
  • 原文地址:https://www.cnblogs.com/CJLHY/p/8093680.html
Copyright © 2020-2023  润新知