zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    数据库字段太多,批量快速建立实体类方法(适合大量字段建立实体类)
    SQL service 中的 ”输入SQL命令窗口“ 打开了 “属性界面” 回到 ”输入SQL命令窗口“
    计算机软件编程英语词汇集锦
    编程常用英语词汇
    svn上传和下载项目
    当启动tomcat时出现tomcat setting should be set in tomcat preference page
    Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
    eclipse中选中一个单词 其他相同的也被选中 怎么设置
    Spring Boot的@SpringBootApplication无法引入的问题
    最全的SpringCloud视频教程
  • 原文地址:https://www.cnblogs.com/CJLHY/p/8093680.html
Copyright © 2011-2022 走看看