zoukankan      html  css  js  c++  java
  • EducationalCodeforcesRound62(Div. 2)(A-D题解)

    http://codeforces.com/contest/1140/problem/A

    题意:一个人看一本解谜书,第 i 个谜题的答案在第 ai 页,他会从头一页一页地翻书,如果今天他看过的所有谜题的答案页他都看过了,那么今天就不看了,否则就要一直往下翻。求解这本书多长时间看完。

    思路:模拟即可,不断更新今天看过谜题的答案的最大页码。(这破题也能WA,真的是菜。。。)

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int a[10005];
     5 int main()
     6 {
     7     int n;
     8     cin >> n;
     9     for(int i = 1;i <= n;i ++){
    10         cin >> a[i];
    11     }
    12     int ans = 0;
    13     int now = 1;
    14     while(now <= n){
    15         int maxx = a[now];
    16         while(now != maxx){
    17             now ++;
    18             maxx = max(a[now],maxx);
    19         }
    20         now ++;
    21         ans ++;
    22     }
    23     cout << ans << endl;
    24 
    25     return 0;
    26 }
    A

    http://codeforces.com/contest/1140/problem/B

    题意:给一个只含有 '<' 和 '>' 的字符串,如果你经过若干操作能把它的长度变成 1,那么这个串就是好串。

       操作包含两个:1、随便拿出一个 '<' ,然后删除在它左边的所有字符,不包括它本身。

              2、随便拿出一个 '>' ,然后删除在它右边的所有字符,不包括它本身。

       你现在可以直接不通过操作删除任意个字符,问你在最少删除多少个字符后,这个串变成好串。

    思路:挺坑的一道题,一看是看错问题以为是括号匹配,WA了之后就没思路了。但是想了一会发现,只要从左找第一个右括号,并且从右找到第一个左括号,看看谁先出现就行了。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 char a[10005];
     5 int main()
     6 {
     7     int T;
     8     cin >> T;
     9     while(T --){
    10         int n;cin >> n;
    11         scanf("%s",a);
    12         for(int i = 0;i < n;i ++){
    13             if(a[i] == '>'){cout << i << endl;break;}
    14             if(a[n - i - 1] == '<'){cout << i << endl;break;}
    15         }
    16     }
    17 
    18     return 0;
    19 }
    B

    http://codeforces.com/contest/1140/problem/C

    题意:给定n,k,然后给定 n 对数字 ai,bi。ai 代表一首歌的长度,bi 代表一首歌的幸福值。要求从这 n should歌里面找到不大于 k 首,使得这个歌单的权值最大。

       一个歌单的权值是个单种所有歌曲的总长乘以歌单中最小幸福值。

    思路:一开始用的就是贪心,按照幸福值从低到高结构体排序,然后枚举,但是WA掉了。最后找到了一个问题,就是没有处理长度这个变量 ,对于一个已经有的歌单,下一步加入了一个新的幸福值,但是不一定就要抛弃最小的幸福值,应该抛弃的是最小的长度。

       所以将队列改成可以排序的优先队列维护歌单就能AC了。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 struct Node{
     5     int L;int H;
     6     friend bool operator<(Node a,Node b){return a.L > b.L;}
     7 }a[300005];
     8 
     9 bool cmp(Node a,Node b){
    10     if(a.H == b.H){return a.L < b.L;}
    11     return a.H > b.H;
    12 }
    13 
    14 int main()
    15 {
    16     int n,m;
    17     cin >> n >> m;
    18     for(int i = 0;i < n;i ++){
    19         cin >> a[i].L >> a[i].H;
    20     }
    21     sort(a,a + n,cmp);
    22     priority_queue<Node> Q;
    23 //    for(int i = 0;i < n;i ++){
    24 //        cout << a[i].L << " " << a[i].H << endl;
    25 //    }
    26     long long sum = 0;
    27     long long ans = 0;
    28     for(int i = 0;i < n;i ++){
    29         Q.push(a[i]);
    30         sum += a[i].L;
    31         if(Q.size() > m){
    32             sum -= Q.top().L;
    33             Q.pop();
    34         }
    35         //cout << a[i].H << " " << sum <<endl;
    36         ans = max(ans,sum * a[i].H);
    37     }
    38     cout << ans << endl;
    39 
    40     return 0;
    41 }
    C

    http://codeforces.com/contest/1140/problem/D

    题意:给一个定义为正多边形的权重:在一个正 n 边形内,将所有顶点依次标记为 1,2,3...n 。然后再中间画出 n - 2 条不相交的对角线,那么一个三角形的权重就是三点标记值的乘积,这个多边形的权重就是所有三角形权重的和。求解最小正 n 边形权重。

    思路:我认为这题应该是A题。。。只要读懂题就能过。公共顶点一定是 1 ,不断的加上 i * (i + 1) 就行了。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 
     5 int main()
     6 {
     7     int n;
     8     cin >> n;
     9     long long ans = 0;
    10     for(int i = 2;i <= n - 1;i ++){
    11         ans += i * i + i;
    12     }
    13     cout << ans << endl;
    14 
    15     return 0;
    16 }
    D
  • 相关阅读:
    echarts地图引入json或者js
    SpringMVC开启定时任务
    MYSQL基础
    js获取表格单元格中的元素
    转载:【Java基础】InputStream 、 InputStreamReader和BufferedReader
    转载:普通索引和唯一索引的区别、性能差异,以及其他索引简介
    String与StringBuffer之间的转换
    回调
    Java中的类加载器
    ecshop ajax 的调用原理
  • 原文地址:https://www.cnblogs.com/love-fromAtoZ/p/10657235.html
Copyright © 2011-2022 走看看