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
  • 相关阅读:
    HDU1029 Ignatius and the Princess IV
    UVA11039 Building designing【排序】
    UVA11039 Building designing【排序】
    POJ3278 HDU2717 Catch That Cow
    POJ3278 HDU2717 Catch That Cow
    POJ1338 Ugly Numbers(解法二)
    POJ1338 Ugly Numbers(解法二)
    UVA532 Dungeon Master
    UVA532 Dungeon Master
    POJ1915 Knight Moves
  • 原文地址:https://www.cnblogs.com/love-fromAtoZ/p/10657235.html
Copyright © 2011-2022 走看看