• 2020 Multi-University Training Contest 8(待补


    2020 Multi-University Training Contest 8

    1003 Clockwise or Counterclockwise

    • 思路:水题 矢量叉积一下即可判断

    • AC代码


    #include <algorithm>
    #include <iomanip>
    #include <iostream>
    #include <map>
    #include <math.h>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    
    ll mult_mod(ll x, ll y, ll mod){
        return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
    }
    
    ll pow_mod(ll a, ll b, ll p){
        ll res = 1;
        while (b){
            if (b & 1)
                res = mult_mod(res, a, p);
            a = mult_mod(a, a, p);
            b >>= 1;
        }
        return res % p;
    }
    
    ll gcd(ll a, ll b){
        return b ? gcd(b, a % b) : a;
    }
    
    int t;
    ll x1, y1_, x2, y2, x3, y3; 
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> t;
        while (t -- ){
            cin >> x1 >> y1_ >> x2 >> y2 >> x3 >> y3;
            if ((x1 - x2) * (y3 - y2) - (x3 - x2) * (y1_ - y2) > 0)
                cout << "Clockwise
    ";
            else
                cout << "Counterclockwise
    ";
        }
        return 0;
    }
    

    1006 Fluctuation Limit

    • 思路:前后分别扫一遍 判断即可

    • AC代码


    #include <algorithm>
    #include <iomanip>
    #include <iostream>
    #include <map>
    #include <math.h>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    
    ll mult_mod(ll x, ll y, ll mod){
        return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
    }
    
    ll pow_mod(ll a, ll b, ll p){
        ll res = 1;
        while (b){
            if (b & 1)
                res = mult_mod(res, a, p);
            a = mult_mod(a, a, p);
            b >>= 1;
        }
        return res % p;
    }
    
    ll gcd(ll a, ll b){
        return b ? gcd(b, a % b) : a;
    }
    
    const int N = 1e5 + 10;
    
    int t, n, k;
    int l[N], r[N];
    bool flag;
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> t;
        while (t -- ){
            flag = true;
            cin >> n >> k;
            for (int i = 1; i <= n; i ++ )
                cin >> l[i] >> r[i];
            for (int i = 2; i <= n; i ++ ){
                l[i] = max(l[i], l[i - 1] - k);
                r[i] = min(r[i], r[i - 1] + k);
            }
            for (int i = n - 1; i >= 1; i -- ){
                l[i] = max(l[i], l[i + 1] - k);
                r[i] = min(r[i], r[i + 1] + k);
            }
            for (int i = 1; i <= n; i ++ ){
                if (l[i] > r[i]){
                    flag = false;
                    break;
                }
            }
            if (!flag)
                cout << "NO
    ";
            else{
                cout << "YES
    ";
                for (int i = 1; i < n; i ++ )
                    cout << l[i] << " ";
                cout << l[n] << "
    ";
            }
        }
        return 0;
    }
    

    1008 Hexagon

    • 思路:规律题 画图找找规律就出来了

    • AC代码


    #include <algorithm>
    #include <iomanip>
    #include <iostream>
    #include <map>
    #include <math.h>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    
    ll mult_mod(ll x, ll y, ll mod){
        return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
    }
    
    ll pow_mod(ll a, ll b, ll p){
        ll res = 1;
        while (b){
            if (b & 1)
                res = mult_mod(res, a, p);
            a = mult_mod(a, a, p);
            b >>= 1;
        }
        return res % p;
    }
    
    ll gcd(ll a, ll b){
        return b ? gcd(b, a % b) : a;
    }
    
    int t, n;
    
    inline void calc(int x){
        if (x <= 1)
            return ;
        if (x == 2){
            cout << "345613";
            return ;
        }
        int tmp;
        tmp = x - 2;
        cout << "3";
        while (tmp -- )
            cout << "42";
        tmp = x - 2;
        cout << "4";
        while (tmp -- )
            cout << "53";
        tmp = x - 2;
        cout << "5";
        while (tmp -- )
            cout << "64";
        tmp = x - 2;
        cout << "6";
        while (tmp -- )
            cout << "15";
        tmp = x - 2;
        cout << "1";
        while (tmp -- )
            cout << "26";
        tmp = x - 3;
        cout << "23";
        while (tmp -- )
            cout << "13";
        cout << "4";
        calc(x - 2);
    }
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> t;
        while (t -- ){
            cin >> n;
            calc(n);
            cout << "
    ";
        }
        return 0;
    }
    

    1009 Isomorphic Strings

    • 思路:将串s分别取因子长度 并复制一遍得到串t 跑KMP判断子串是否包含于串t即可(出题人害人不浅啊 由于先入为主的先做了F题 导致以为都是输出YES&NO wa到自闭

    • AC代码


    #include <algorithm>
    #include <iomanip>
    #include <iostream>
    #include <map>
    #include <math.h>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    typedef long long ll;
    typedef unsigned long long ull;
    using namespace std;
    
    ll mult_mod(ll x, ll y, ll mod){
        return (x * y - (ll)(x / (long double)mod * y + 1e-3) * mod + mod) % mod;
    }
    
    ll pow_mod(ll a, ll b, ll p){
        ll res = 1;
        while (b){
            if (b & 1)
                res = mult_mod(res, a, p);
            a = mult_mod(a, a, p);
            b >>= 1;
        }
        return res % p;
    }
    
    ll gcd(ll a, ll b){
        return b ? gcd(b, a % b) : a;
    }
    
    const int N = 5e6 + 10;
    const int mod = 19260817;
    
    int T, n, len, tot;
    int nxt[N];
    bool flag;
    char s[N], t[N], tmp[N];
    vector<ll> vec;
    
    inline void get_nxt(int x){
        nxt[0] = -1;
        int j = 0, k = -1;
        while (j < x){
            if (k == -1 || tmp[j] == tmp[k]){
                j ++ , k ++ ;
                if (tmp[j] != tmp[k])
                    nxt[j] = k;
                else
                    nxt[j] = nxt[k];
            }
            else
                k = nxt[k];
        }
    }
    
    inline int KMP(int x){
        int i = 0, j = 0;
        get_nxt(x);
        while (i < len && j < x){
            if (j == -1 || t[i] == tmp[j])
                i ++ , j ++ ;
            else
                j = nxt[j];
        }
        if (j == x)
            return i - j + 1;
        else
            return -1;
    }
    
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("my_in.txt", "r", stdin);
    #endif
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> T;
        while (T -- ){
            flag = false;
            vec.clear();
            cin >> n >> s;
            if (n == 1){
                cout << "No
    ";
                continue;
            }
            for (ll i = 1; i < n; i ++ )
                if (n % i == 0)
                    vec.emplace_back(i);
            for (auto x: vec){
                tot = 0;
                len = 2 * x;
                for (int i = 0; i < x; i ++ )
                    t[i] = s[i];
                for (int i = x; i < 2 * x; i ++ )
                    t[i] = t[i - x];
                for (int i = 0; i < n / x; i ++ ){
                    for (int j = x * i; j < x * i + x; j ++ )
                        tmp[ tot ++ ] = s[j];
                    tot = 0;
                    int ans = KMP(x);
                    if (ans == -1){
                        tot = mod;
                        break;
                    }
                }
                // cout << tot << "
    ";
                if (tot != mod)
                    flag = true;
            }
            if (flag)
                cout << "Yes
    ";
            else
                cout << "No
    ";
        }
        return 0;
    }
    
  • 相关阅读:
    教大家如何在word 2007中同时打出对齐上下标以及字母头上有波浪线(非编辑器)
    C#返回多个参数 ref及out
    回溯法解决0-1背包问题
    USB peripherals can turn against their users
    50元制作PS2键盘无线监控装置
    物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探
    Bluetooth Low Energy 嗅探
    MagSpoof:能预测并窃取你下一张信用卡号码的廉价设备
    Python 安全类目推荐 (持续更新)
    树莓派安装kali后的简单配置
  • 原文地址:https://www.cnblogs.com/Misuchii/p/13521140.html
Copyright © 2020-2023  润新知