CodeForces 558A,B

客官°小女子只卖身不卖艺 2022-08-18 11:59 123阅读 0赞

CodeForces 558A

题意:给定一些苹果树的位置和树上的苹果数,然后一个人站在原点,每次碰到苹果就往相反的方向走,问能得到的最大苹果数。

思路:直接模拟即可。先假设往左走,然后再假设往右走。遍历一遍即可。

code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <cstring>
  6. #include <sstream>
  7. #include <string>
  8. #include <vector>
  9. #include <list>
  10. #include <queue>
  11. #include <stack>
  12. #include <map>
  13. #include <set>
  14. #include <bitset>
  15. using namespace std;
  16. typedef long long ll;
  17. typedef unsigned long long ull;
  18. typedef long double ld;
  19. const int INF=0x3fffffff;
  20. const int inf=-INF;
  21. const int N=1000000;
  22. const int M=205;
  23. const int mod=1000000007;
  24. const double pi=acos(-1.0);
  25. #define cls(x,c) memset(x,c,sizeof(x))
  26. #define cpy(x,a) memcpy(x,a,sizeof(a))
  27. #define ft(i,s,n) for (int i=s;i<=n;i++)
  28. #define frt(i,s,n) for (int i=s;i>=n;i--)
  29. #define lson l,m,rt<<1
  30. #define rson m+1,r,rt<<1|1
  31. #define lrt rt<<1
  32. #define rrt rt<<1|1
  33. #define middle int m=(r+l)>>1
  34. #define lowbit(x) (x&-x)
  35. #define pii pair<int,int>
  36. #define mk make_pair
  37. #define IN freopen("in.txt","r",stdin);
  38. #define OUT freopen("out.txt","w",stdout);
  39. struct node
  40. {
  41. int x,a;
  42. }g[M];
  43. bool cmp(node A,node B){
  44. return A.x<B.x;
  45. }
  46. int main()
  47. {
  48. int n;
  49. scanf("%d",&n);
  50. ft(i,1,n) scanf("%d %d",&g[i].x,&g[i].a);
  51. sort(g+1,g+1+n,cmp);
  52. g[0].a=g[0].x=0;
  53. g[n+1].a=g[n+1].x=0;
  54. int t=1,ans=0,s=0;
  55. ft(i,2,n){
  56. if (g[i-1].x<0&&g[i].x>0){ t=i;break;}
  57. }
  58. if (t==1){
  59. if (g[1].x>0) printf("%d\n",g[1].a);
  60. else printf("%d\n",g[n].a);
  61. return 0;
  62. }
  63. s=g[t].a;
  64. for (int p=t-1,q=t+1;;p--,q++)
  65. {
  66. if (g[p].a) s+=g[p].a;
  67. else break;
  68. if (g[q].a) s+=g[q].a;
  69. else break;
  70. }
  71. ans=g[t-1].a;
  72. for (int p=t-2,q=t;;p--,q++)
  73. {
  74. if (g[q].a) ans+=g[q].a;
  75. else break;
  76. if (p<0) break;
  77. if (g[p].a) ans+=g[p].a;
  78. else break;
  79. }
  80. ans=max(ans,s);
  81. printf("%d\n",ans);
  82. }

CodeForces 558B

题意:在不改变整个数组出现最多的数的次数的条件下使区间尽量小。

思路:在输入的时候,记录某个数的左右区间。然后遍历,当某个数的出现次数等于最大值时就缩减。

code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <cstring>
  6. #include <sstream>
  7. #include <string>
  8. #include <vector>
  9. #include <list>
  10. #include <queue>
  11. #include <stack>
  12. #include <map>
  13. #include <set>
  14. #include <bitset>
  15. using namespace std;
  16. typedef long long ll;
  17. typedef unsigned long long ull;
  18. typedef long double ld;
  19. const int INF=0x3fffffff;
  20. const int inf=-INF;
  21. const int N=1000000+5;
  22. const int M=1e5+5;
  23. const int mod=1000000007;
  24. const double pi=acos(-1.0);
  25. #define cls(x,c) memset(x,c,sizeof(x))
  26. #define cpy(x,a) memcpy(x,a,sizeof(a))
  27. #define ft(i,s,n) for (int i=s;i<=n;i++)
  28. #define frt(i,s,n) for (int i=s;i>=n;i--)
  29. #define lson l,m,rt<<1
  30. #define rson m+1,r,rt<<1|1
  31. #define lrt rt<<1
  32. #define rrt rt<<1|1
  33. #define middle int m=(r+l)>>1
  34. #define lowbit(x) (x&-x)
  35. #define pii pair<int,int>
  36. #define mk make_pair
  37. #define IN freopen("in.txt","r",stdin);
  38. #define OUT freopen("out.txt","w",stdout);
  39. int n,v[M];
  40. int ct[N];
  41. struct node
  42. {
  43. int x,y;
  44. }g[N];
  45. int main()
  46. {
  47. scanf("%d",&n);
  48. cls(ct,0);
  49. ft(i,1,n) {
  50. scanf("%d",&v[i]);
  51. int t=v[i];
  52. if (ct[t]==0)g[t].x=i;
  53. g[t].y=i;
  54. ct[t]++;
  55. }
  56. int mx=0;
  57. ft(i,1,n) mx=max(mx,ct[v[i]]);
  58. int al=1,ar=n;
  59. ft(i,1,N){
  60. if (ct[i]==mx){
  61. int ti=g[i].x,tj=g[i].y;
  62. if (tj-ti<ar-al)
  63. {
  64. al=ti;ar=tj;
  65. }
  66. }
  67. }
  68. printf("%d %d\n",al,ar);
  69. }

发表评论

表情:
评论列表 (有 0 条评论,123人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NYOJ 558 一二三

    一二三 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 1 描述 你弟弟刚刚学会写英语的一(one)、二(two)和三(three)。他在纸上

    相关 AB test

    前言 -------------------- AB test 在实际工作中,A/B test是产品改动时常用到的手段。 为同一目标,制定两种方案,在相同时间维

    相关 CF558 A. Eating Soup

      给出结点数n  结点两两相连成一个环     再给出m   求 在环中去掉m个点   使得联通块最大   输出最大联通块   比赛的时候我还在模拟。。。 其实可以找一