zoukankan      html  css  js  c++  java
  • CodeForces Round #106(Div.2)

    这轮比赛做的比较快,rating上升少许
     
    A题是排序和计算的问题。主人公的父母让他每个月都要浇花,并规定花必须长k厘米。然后输入12个数字,代表每个月花的成长高度。求出主人公至少要浇多少个月的花才能使花长高K厘米。
     
    思路:将12个数据排序,从最大的开始相加,直到sum >=k
     

    B题是进制换算和计算。给出0-9和A-Z的字符代表0-35的数字。在24小时和1小时=60分钟的时间制内求出所有满足输入数据的进制数。比如输入11:20. 换算成三进制就是4:6.换算成16进制就是17:32。都满足24小时和60分钟的时间制。本地需要注意的就是在使用进制换算的时候使用 pow函数,它的原型是
      double pow( double base, double exp );
    头文件为     math.h
     
    返回值为double 。 在进制转换的时候很多人用一个 int temp = a[j]*pow(n,i); 来存储数据
    这样会导致精度损失,然后输出有问题。
     

    C题,把n个人分成人数和实力都相对均衡的两队x,y. 
     
    条件 |x-y|<=1 |sumSkillx - sumSkillY| < skillOfBestPlayer
     
    可以用DP,也可以用数学方法。
     
    因为测试数据都保证有结果,所以将编号为奇数的分到1个队,偶数的分到另一个队即可
     

    D和E还无能为力。

     
     
    A题代码:
    View Code
     1 #include<stdio.h>
    2 #include<algorithm>
    3 #include<vector>
    4 using namespace std;
    5 int main()
    6 {
    7 vector<int> month;
    8 int k,a,i,min=0,sum = 0;
    9 scanf("%d",&k);
    10 for(i = 0; i < 12; i++)
    11 {
    12 scanf("%d",&a);
    13 month.push_back(a);
    14 }
    15 if(k == 0)
    16 {
    17 printf("0\n");
    18 return 0;
    19 }
    20 sort(month.begin(),month.end());
    21 for(i = 11; i >= 0; i--)
    22 {
    23 sum += month[i];
    24 min++;
    25 if(sum >= k)
    26 break;
    27 }
    28 if(sum < k)
    29 min = -1;
    30 printf("%d\n",min);
    31 return 0;
    32 }
     
    B题代码
    View Code
      1 #include<iostream>
    2 #include<string>
    3 #include<vector>
    4 #include<cmath>
    5 using namespace std;
    6
    7 int main()
    8 {
    9 int flag1 = 0,flag2 = 0,j = 0, k = 0,ma = 0,end = 0;
    10 int a[5],b[5],i;
    11 vector<int> ans;
    12 string s;
    13 cin>>s;
    14 int lenth = s.size();
    15 for(i = 0; s[i] != ':'; i++)
    16 {
    17 if(flag1 == 0)
    18 {
    19 if(s[i] != '0')
    20 {
    21 flag1 = 1;
    22 if( s[i] <= '9' && s[i] >= '0')
    23 a[j++] = s[i] - '0';
    24 else
    25 a[j++] = s[i] - 'A' + 10;
    26 if(a[j-1] != 0)
    27 ma = max(a[j-1],ma);
    28 }
    29 }
    30 else
    31 {
    32 if( s[i] <= '9' && s[i] >= '0')
    33 a[j++] = s[i] - '0';
    34 else
    35 a[j++] = s[i] - 'A' + 10;
    36 if(a[j-1] != 0)
    37 ma = max(a[j-1],ma);
    38 }
    39 }
    40 i++;
    41 for(; i < lenth; i++)
    42 {
    43 if(flag2 == 0)
    44 {
    45 if(s[i] != '0')
    46 {
    47 flag2 = 1;
    48 if( s[i] <= '9' && s[i] >= '0')
    49 b[k++] = s[i] - '0';
    50 else
    51 b[k++] = s[i] - 'A' + 10;
    52 if(b[k-1] != 0)
    53 ma = max(b[k-1],ma);
    54 }
    55 }
    56 else
    57 {
    58 if( s[i] <= '9' && s[i] >= '0')
    59 b[k++] = s[i] - '0';
    60 else
    61 b[k++] = s[i] - 'A' + 10;
    62 if(b[k-1] != 0)
    63 ma = max(b[k-1],ma);
    64 }
    65 }
    66 if(j <= 1 && k <= 1)
    67 {
    68 if(a[0] <= 23 || j == 0)
    69 {
    70 cout<<"-1"<<endl;
    71 return 0;
    72 }
    73 }
    74 for(i = ma + 1; ; i++)
    75 {
    76 double temp = 0;
    77 for(int l = 0; l < j ; l++)
    78 {
    79 temp += a[l]*pow((double)i,j-l-1);
    80 }
    81 if(temp > 23)
    82 break;
    83 temp = 0;
    84 for(int l = 0; l < k ; l++)
    85 {
    86 temp += b[l]*pow((double)i,k-l-1);
    87 }
    88 if(temp > 59)
    89 break;
    90 end = i;
    91 }
    92 if(end == 0)
    93 cout<<"0"<<endl;
    94 else
    95 {
    96 for(i = ma + 1; i <= end; i++)
    97 cout<<i<<" ";
    98 cout<<endl;
    99 }
    100 return 0;
    101 }
     
    C题代码
    View Code
     1 # include <iostream>
    2 # include <algorithm>
    3 # include <vector>
    4 # define PII pair<int,int>
    5 using namespace std;
    6 const int MAX_N=100*1000+100;
    7 int N;
    8 PII p[MAX_N];
    9 vector<int> team1;
    10 vector<int> team2;
    11 int main()
    12 {
    13 ios::sync_with_stdio(false);
    14 cin >> N;
    15 for(int i=0;i<N;i++)
    16 {
    17 int temp;
    18 cin >> temp;
    19 p[i]=make_pair(temp,i+1);
    20 }
    21 sort(p,p+N);
    22 reverse(p,p+N);
    23 for(int i=0;i<N;i++)
    24 {
    25 int id=p[i].second;
    26 if(i%2==0)
    27 team1.push_back(id);
    28 else
    29 team2.push_back(id);
    30 }
    31 cout << (int)team1.size()<<endl;
    32 for(int i=0;i<(int)team1.size();i++)
    33 cout <<team1[i]<<" ";
    34 cout << endl;
    35 cout << (int)team2.size()<<endl;
    36 for(int i=0;i<(int)team2.size();i++)
    37 cout <<team2[i]<<" ";
    38 cout << endl;
    39 return 0;
    40 }





  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/genslow/p/2347113.html
Copyright © 2011-2022 走看看