zoukankan      html  css  js  c++  java
  • 2016 Multi-University Training Contest 8

    solved 4/11

    2016 Multi-University Training Contest 8

    贪心 1001 Ball(BH)

    代码:

    #include <bits/stdc++.h>
    
    const int N = 1000 + 5;
    std::pair<int, int> a[N];
    int n, m;
    
    int main() {
        int T;
        scanf ("%d", &T);
        while (T--) {
            scanf ("%d%d", &n, &m);
            for (int i=1; i<=n; ++i) {
                int c;
                scanf ("%d", &c);
                a[i] = {0, c};
            }
            for (int i=1; i<=n; ++i) {
                int c;
                scanf ("%d", &c);
                for (int j=1; j<=n; ++j) {
                    if (a[j].second == c && !a[j].first) {
                        a[j].first = i;
                        break;
                    }
                }
            }
            while (m--) {
                int l, r;
                scanf ("%d%d", &l, &r);
                std::sort (a+l, a+r+1);
            }
            bool flag = true;
            for (int i=1; i<=n; ++i) {
                if (a[i].first != i) {
                    flag = false;
                    break;
                }
            }
            puts (flag ? "Yes" : "No");
        }
        return 0;
    }

    物理+微分方程 1006 physics(BH)

    代码:

    #include <bits/stdc++.h>
    
    int v[100005];
    
    int main() {
        int T;
        scanf ("%d", &T);
        while (T--) {
            int n, c;
            scanf ("%d%d", &n, &c);
            for (int i=1; i<=n; ++i) {
                int x, d;
                scanf ("%d%d%d", v+i, &x, &d);
            }
            std::sort (v+1, v+1+n);
            int m;
            scanf ("%d", &m);
            while (m--) {
                int t, k;
                scanf ("%d%d", &t, &k);
                printf ("%.3f
    ", sqrt ((double) v[k]*v[k] + 2.0*c*t));
            }
        }
        return 0;
    }

    线段树+优化 1008 Rikka with Sequence(BH)

    代码:(数据加强后TLE)

    #include <bits/stdc++.h>
    
    typedef long long ll;
    const int N = 1e5 + 5;
    
    #define lch o << 1
    #define rch o << 1 | 1
    
    ll sum[N<<2], same[N<<2], add[N<<2];
    
    void push_up(int o) {
        if (same[lch] == same[rch])
            same[o] = same[lch];
        else
            same[o] = 0;
        sum[o] = sum[lch] + sum[rch];
    }
    
    void push_down1(int o, int l, int r) {
        add[lch] += add[o];
        add[rch] += add[o];
        int mid = l + r >> 1;
        sum[lch] += add[o] * (mid-l+1);
        sum[rch] += add[o] * (r-mid);
        if (same[lch])
            same[lch] += add[o];
        if (same[rch])
            same[rch] += add[o];
        add[o] = 0;
    }
    
    void push_down2(int o, int l, int r) {
        same[lch] = same[rch] = same[o];
        int mid = l + r >> 1;
        sum[lch] = same[o] * (mid-l+1);
        sum[rch] = same[o] * (r-mid);
        same[o] = 0;
    }
    
    void build(int o, int l, int r) {
        add[o] = 0;
        if (l == r) {
            scanf ("%I64d", &sum[o]);
            same[o] = sum[o];
            return ;
        }
        int mid = l + r >> 1;
        build (lch, l, mid);
        build (rch, mid+1, r);
        push_up (o);
    }
    
    void modify_add(int o, int l, int r, int ql, int qr, int c) {
        if (ql <= l && r <= qr) {
            sum[o] += (ll) (r - l + 1) * c;
            if (same[o])
                same[o] += c;
            else
                add[o] += c;
            return ;
        }
        if (add[o])
            push_down1 (o, l, r);
        if (same[o])
            push_down2 (o, l, r);
        int mid = l + r >> 1;
        if (ql <= mid)
            modify_add (lch, l, mid, ql, qr, c);
        if (qr > mid)
            modify_add (rch, mid+1, r, ql, qr, c);
        push_up (o);
    }
    
    void modify_sqrt(int o, int l, int r, int ql, int qr) {
        if (ql <= l && r <= qr && same[o]) {
            same[o] = (ll) sqrt ((double) same[o]);
            sum[o] = same[o] * (r - l + 1);
            add[o] = 0;
            return ;
        }
        if (add[o])
            push_down1 (o, l, r);
        if (same[o])
            push_down2 (o, l, r);
        int mid = l + r >> 1;
        if (ql <= mid)
            modify_sqrt (lch, l, mid, ql, qr);
        if (qr > mid)
            modify_sqrt (rch, mid+1, r, ql, qr);
        push_up (o);
    }
    
    ll query(int o, int l, int r, int ql, int qr) {
        if (ql <= l && r <= qr) {
            return sum[o];
        }
        if (add[o])
            push_down1 (o, l, r);
        if (same[o])
            push_down2 (o, l, r);
        int mid = l + r >> 1;
        ll ret = 0;
        if (ql <= mid)
            ret += query (lch, l, mid, ql, qr);
        if (qr > mid)
            ret += query (rch, mid+1, r, ql, qr);
        return ret;
    }
    
    int main() {
        int T;
        scanf ("%d", &T);
        while (T--) {
            int n, m;
            scanf ("%d%d", &n, &m);
            build (1, 1, n);
            int tp, ql, qr, c;
            while (m--) {
                scanf ("%d%d%d", &tp, &ql, &qr);
                if (tp == 1) {
                    scanf ("%d", &c);
                    modify_add (1, 1, n, ql, qr, c);
                } else if (tp == 2) {
                    modify_sqrt (1, 1, n, ql, qr);
                } else {
                    printf ("%I64d
    ", query (1, 1, n, ql, qr));
                }
            }
        }
        return 0;
    }

    构造 1011 Rikka with Parenthesis II(BH)

    代码:

    #include <bits/stdc++.h>
    
    const int N = 1e5 + 5;
    char str[N];
    int n;
    
    bool check() {
        if (n & 1)
            return false;
    
        if (n == 2) {
            if (strcmp (str, ")(") != 0)
                return false;
        }
    
        int l = 0, r = 0;
        for (int i=0; i<n; ++i) {
            if (str[i] == '(')
                l++;
            else
                r++;
        }
        return l == r;
    }
    
    int main() {
        //freopen ("1011.txt", "r", stdin);
        int T;
        scanf ("%d", &T);
        while (T--) {
            scanf ("%d", &n);
            scanf ("%s", str);
    
            //printf ("%s ", str);
            
            if (!check ()) {
                puts ("No");
                continue;
            }
            
            int top = 0, error = 0, id = -1;
            for (int i=0; i<n; ++i) {
                if (str[i] == '(') {
                    top++;
                } else {
                    if (top == 0) {
                        error++;
                        id = i;
                        break;
                    }
                    else
                        top--;
                }
            }
    
            if (!error) {
                puts (top == 0 ? "Yes" : "No");
            } else {
                str[id] = '(';
                top = error = 0;
                for (int i=0; i<n; ++i) {
                    if (str[i] == '(') {
                        top++;
                    } else {
                        if (top == 0) {
                            error++;
                            break;
                        }
                        top--;
                    }
                }
                puts (((!error && top == 2) ? "Yes" : "No"));
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    使用Spring Cloud Gateway保护反应式微服务(二)
    使用Spring Cloud Gateway保护反应式微服务(一)
    浅谈Spring 5的响应式编程
    使用Spring Data JPA的Spring Boot
    在简单的JDBC程序中使用ORM工具
    Python爬虫
    数据库建模之概念模型、逻辑模型、物理模型
    机器学习(周志华)——学习笔记2
    HTTP——无状态协议理解
    Tomcat中文乱码问题
  • 原文地址:https://www.cnblogs.com/NEVERSTOPAC/p/5766563.html
Copyright © 2011-2022 走看看