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 }





  • 相关阅读:
    top-cpu
    长连接&短连接分析
    HTTP协议详解(头报文)
    exit 与 return 区别
    TOP K 算法
    海量数据处理(面试题&总结)
    SpringBoot和VW-Crawler抓取csdn的文章
    maven项目-修复Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-resource (execution: add-resource, phase: generate-resources) pom.xml报错
    模拟ios应用加载页面
    HTML表格布局
  • 原文地址:https://www.cnblogs.com/genslow/p/2347113.html
Copyright © 2011-2022 走看看