zoukankan      html  css  js  c++  java
  • Codeforces Edu Round 72 (Rated for Div. 2)

    有点难。

    题目连接:https://codeforces.com/contest/1217


    A:

    想清楚就是一道口算题。

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define dou double
     6 #define pb emplace_back
     7 #define mp make_pair
     8 #define sot(a,b) sort(a+1,a+1+b)
     9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    10 #define rep0(i,a,b) for(int i=a;i<b;++i)
    11 #define eps 1e-8
    12 #define int_inf 0x3f3f3f3f
    13 #define ll_inf 0x7f7f7f7f7f7f7f7f
    14 #define lson (curpos<<1)
    15 #define rson (curpos<<1|1)
    16 /* namespace */
    17 using namespace std;
    18 /* header end */
    19 
    20 int t;
    21 
    22 int main() {
    23     scanf("%d", &t);
    24     while (t--) {
    25         int a, b, c; scanf("%d%d%d", &a, &b, &c);
    26         if (!c) {
    27             a > b ? puts("1") : puts("0");
    28         continue;
    29         }
    30         printf("%d
    ", min(c + 1, max((a + c - b + 1) / 2, 0)));
    31     }
    32     return 0;
    33 }
    View Code

    B:

    贪心。按砍完一刀之后改变头的数量来排序。

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define dou double
     6 #define pb emplace_back
     7 #define mp make_pair
     8 #define sot(a,b) sort(a+1,a+1+b)
     9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    10 #define rep0(i,a,b) for(int i=a;i<b;++i)
    11 #define eps 1e-8
    12 #define int_inf 0x3f3f3f3f
    13 #define ll_inf 0x7f7f7f7f7f7f7f7f
    14 #define lson (curpos<<1)
    15 #define rson (curpos<<1|1)
    16 /* namespace */
    17 using namespace std;
    18 /* header end */
    19 
    20 const int maxn = 200;
    21 pair<int, int>cut[maxn];
    22 
    23 int main() {
    24     int t; scanf("%d", &t);
    25     while (t--) {
    26         int n, head, maxx = 0;
    27         scanf("%d%d", &n, &head);
    28         rep1(i, 1, n) {
    29             int a, b; scanf("%d%d", &a, &b);
    30             maxx = max(a, maxx);
    31             cut[i].first = a - b, cut[i].second = a;
    32         }
    33         head -= maxx;
    34         sort(cut + 1, cut + 1 + n, greater<pair<int, int>>());
    35         if (head <= 0) {
    36             puts("1");
    37             continue;
    38         }
    39         if (cut[1].first <= 0) {
    40             puts("-1");
    41             continue;
    42         }
    43         int ans = head / cut[1].first + 1;
    44         if (head % cut[1].first) ans++;
    45         printf("%d
    ", ans);
    46     }
    47     return 0;
    48 }
    View Code

    C:

    巧妙的想法没有,看到时限4s就是O(n^2)暴力开搞。要先预处理出所有连续0的位置。

     1 /* basic header */
     2 #include <bits/stdc++.h>
     3 /* define */
     4 #define ll long long
     5 #define dou double
     6 #define pb emplace_back
     7 #define mp make_pair
     8 #define sot(a,b) sort(a+1,a+1+b)
     9 #define rep1(i,a,b) for(int i=a;i<=b;++i)
    10 #define rep0(i,a,b) for(int i=a;i<b;++i)
    11 #define epre 1e-8
    12 #define int_inf 0x3f3f3f3f
    13 #define ll_inf 0x7f7f7f7f7f7f7f7f
    14 #define lson (curpos<<1)
    15 #define rson (curpos<<1|1)
    16 /* namespace */
    17 using namespace std;
    18 /* header end */
    19 
    20 const int maxn = 2e5 + 10;
    21 int t, pre[maxn];
    22 char s[maxn];
    23 
    24 int main() {
    25     scanf("%d", &t);
    26     while (t--) {
    27         scanf("%s", s + 1);
    28         int n = strlen(s + 1);
    29         ll ans = 0;
    30         rep1(i, 1, n) {
    31             if (s[i] == '1') pre[i] = -1;
    32             else pre[i] = s[i - 1] == '0' ? pre[i - 1] : i;
    33         }
    34         rep1(r, 1, n) {
    35             ll curr = 0;
    36             for (int l = r; l >= 1; l--)
    37                 if (s[l] == '1') {
    38                     if (r - l >= 20) break;
    39                     curr += (1 << (r - l));
    40                     if (r - l + 1 == curr) ans++;
    41                 } else {
    42                     if (r + 1 - curr >= pre[l] && r + 1 - curr <= l) ans++;
    43                     l = pre[l];
    44                 }
    45         }
    46         printf("%lld
    ", ans);
    47     }
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    GridView“gv_Info”激发了未处理的事件“RowEditing” “RowEditing”
    VS aspx页面在 设计视图 状态时 才可选用 工具 菜单下的 生成本地资源
    愿能与诸位关心的人及时保持互联
    [转]NOD32 與 無法將工作階段狀態要求送至工作階段狀態伺服器 NOD32与asp.net 状态服务
    [转]JavaScript:只能输入数字(IE、FF)
    勿以恶小而为之>致 被烟所包的程序员
    婚姻 一辈子的幸福厮守 请不要多拿彩礼和父母说事
    [文摘20090601]美国和中国老师讲灰姑娘的故事(差距啊~体现得淋漓尽致)
    多语言开发 之 通过基页类及Session 动态响应用户对语言的选择
    javascript的拖放(第1部分)
  • 原文地址:https://www.cnblogs.com/JHSeng/p/11474948.html
Copyright © 2011-2022 走看看