• UCF Local Programming Contest 2014(Practice)


    A

    签到

    #include <iostream>
    #include <vector>
    #include <string>
    #include <queue>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    
    #define all(n) (n).begin(), (n).end()
    #define se second
    #define fi first
    #define pb push_back
    #define mp make_pair
    #define sqr(n) (n)*(n)
    #define rep(i,a,b) for(int i=a;i<=(b);++i)
    #define per(i,a,b) for(int i=a;i>=(b);--i)
    #define IO ios::sync_with_stdio(0); cin.tie(0);
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> PII;
    typedef pair<ll, ll> PLL;
    typedef vector<int> VI;
    typedef double db;
    
    const int N = 1e5 + 5;
    
    int n, m, _, k;
    
    int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        while (cin >> n && n) {
            ++_;
            m += n;
            k = m / 50;
            m %= 50;
            if (k == 1) cout << "Input #" << _ << ": Sweet!
    " ;
            else if (k >= 2) cout << "Input #" << _ << ": Totally Sweet!
    " ;
        }
    
        return 0;
    }
    

    B

    签到

    #include <bits/stdc++.h>
    
    #define rep(i,a,b) for(int i=a;i<=(b);++i)
    #define per(i,a,b) for(int i=a;i>=(b);--i)
    #define pb push_back
    using namespace std;
    
    const int N = 1e5 + 5;
    
    int n, m, _, k;
    vector<string> vs[21];
    string s;
    
    bool check(string s, string t) {
        rep (i, 0, s.length() - 1) 
            if (t[i] != '-' && t[i] != s[i]) 
                return false;
        return true;
    }
    
    int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        cin >> n;
        rep (i, 1, n) cin >> s, vs[s.length()].pb(s);
    
        cin >> m;
        rep (i, 1, m) {
            cin >> s;
            cout << "Word #" << i << ": " << s << '
    ';
            int tot = 0;
            for (string t : vs[s.length()])
                if (check(t, s)) {
                    ++tot;
                    cout << t << '
    ';
                }
            cout << "Total number of candidate words = " << tot << '
    ' << endl;
        }
    
        return 0;
    }
    

    C

    签到

    #include <bits/stdc++.h>
    
    #define all(n) (n).begin(), (n).end()
    #define rep(i,a,b) for(int i=a;i<=(b);++i)
    #define per(i,a,b) for(int i=a;i>=(b);--i)
    using namespace std;
    typedef long long ll;
    typedef vector<int> VI;
    typedef double db;
    
    const int N = 1e5 + 5;
    
    int n, m, _, k;
    int a[5], b[5];
    
    void work(int c) {
        a[(c - 1 + 5) % 5] += a[c];
        a[(c + 1) % 5] += a[c];
        a[c] = -a[c];
    }
    
    bool cmp(int x, int y) {
        return a[x] < a[y];
    }
    
    int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        rep(i, 0, 4) b[i] = i;
        for (cin >> _; _; --_) {
            rep(i, 0, 4) cin >> a[i];
    
            while (1) {
                sort(b, b + 5, cmp);
                //cout << a[b[0]] << ' ' << b[0] << '
    ';
                if (a[b[0]] >= 0) break;
                work(b[0]);
            }
    
            cout << "Pentagon #" << ++k << ":
    ";
            cout << a[0];
            rep(i, 1, 4) cout << ' ' << a[i];
            cout << '
    ';
            if (_ != 1) cout << '
    ';
        }
        return 0;
    }
    

    D

    签到

    #include <bits/stdc++.h>
    #define ed "
    "
    #define fi first
    #define se second
    #define SZ size()
    #define ll long long
    #define V(a) vector <a>
    #define P pair <int,int>
    #define PB(a) push_back(a)
    #define MK(a,b) make_pair(a,b)
    #define all(a) a.begin(),a.end()
    #define each(a,b) for(auto (a):(b))
    #define T(t) int t;cin >> t;while(t--)
    #define MSET(a,b) memset((a),(b),sizeof(a))
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define rep2(i,a,b) for(int i=(a);i>=(b);i--)
    #define debug(x) cout << "debug:" << x << endl;
    #define close ios::sync_with_stdio(false),cin.tie(NULL);
    using namespace std;
    ll gcd(ll a,ll b){ return b?gcd(b,a%b):a; }
    ll lcm(ll a,ll b){ return a*b/gcd(a,b); }
    ll ksm(ll a,ll b,ll mod){ll ans=1;while(b){if(b&1)ans=(ans*a)%mod;a=(a*a)%mod;b>>=1;}return (ans)%mod;}
    template <typename _tp> inline _tp read(_tp&x){
    	char ch=getchar(),sgn=0;x=0;
    	while(ch^'-'&&!isdigit(ch))ch=getchar();if(ch=='-')ch=getchar(),sgn=1;
    	while(isdigit(ch))x=x*10+ch-'0',ch=getchar();if(sgn)x=-x;return x;
    }
    
    int main(){
    	int cnt = 0;
    	T(t){
    		cnt++;
    		string s,s1,s2;cin >> s;
    		bool flag = false;
    		for(int i = 1;i < (int)s.size();i++){
    			s1 = s.substr(0,i);
    			s2 = s.substr(i,(int)s.size()-i);
    			int x = atoi(s1.c_str());
    			int y = atoi(s2.c_str());
    			if(gcd(x,y)==1){
    				cout << "Ticket #" << cnt << ":" << ed << x << " " << y << ed << ed;
    				flag = true;break;
    			}
    		}
    		if(!flag) cout << "Ticket #" << cnt << ":" << ed << "Not relative" << ed << ed;
    	}
    	return 0;
    }
    

    E

    dp, 模型传纸条

    #include <iostream>
    #include <vector>
    #include <string>
    #include <queue>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    
    #define all(n) (n).begin(), (n).end()
    #define se second
    #define fi first
    #define pb push_back
    #define mp make_pair
    #define sqr(n) (n)*(n)
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    #define per(i,a,b) for(int i=(a);i>=(b);--i)
    #define IO ios::sync_with_stdio(0); cin.tie(0);
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> PII;
    typedef pair<ll, ll> PLL;
    typedef vector<int> VI;
    typedef double db;
    
    const int N = 1e2 + 5;
    
    int n, m, _, k, t;
    int s[N][N], f[N][N];
    
    int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        char cc;
        for (cin >> _; _; --_) {
            cin >> n >> m;
            rep (i, 1, n)
                rep (j, 1, m) 
                    if (i == 1 && j == 1) cin >> cc;
                    else if (i == n && j == m) cin >> cc;
                    else cin >> s[i][j];
    
            rep (k, 1, n + m - 2)
                rep (i, max(1, k - m + 2), min(n, 1 + k))
                    f[i][k - i + 2] = max(f[i - 1][k - i + 2], f[i][k - i + 1]) + s[i][k - i + 2];
    
            cout << "Game Board #" <<  ++t << ": " << f[n][m] - s[n][m] << '
    ';
            if (_ != 1) cout << '
    ';
        }
        return 0;
    }
    

    F

    递归氵题

    #include <bits/stdc++.h>
    
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    #define per(i,a,b) for(int i=(a);i>=(b);--i)
    using namespace std;
    
    const int N = 1e2 + 5;
    
    int n, m, _, k, t;
    int a[11];
    char s[1030][1030];
    
    void work(int x, int y, int c) {
        if (c == 1) { s[x][y] = s[x][y + 1] = s[x + 1][y] = s[x + 1][y + 1] = 'X'; return; }
        work(x, y, c - 1);
        work(x + a[c - 1], y - a[c - 2], c - 1);
        
        work(x + a[c - 1], y + a[c - 2], c - 1);
    }
    
    int main() 
    {
        ios::sync_with_stdio(0); cin.tie(0);
        a[0] = 1;
        rep(i, 1, 10) a[i] = a[i - 1] << 1;
        for (cin >> _; _; --_) {
            cin >> n;
            rep(i, 1, a[n]) {
                rep(j, 1, a[n]) s[i][j] = ' ';
                s[i][a[n] + 1] = '
    ';
            }
            work(1, a[n - 1], n);
    
            cout << "Triangle #" << ++t << ":
    ";
            rep(i, 1, a[n]) cout << s[i] + 1;
            if (_ != 1) cout << endl;
        }
        return 0;
    }
    

    G

    数学题, 跪了
    赛后发现本质是Floyd

    H

    并查集, 板子

    #include <bits/stdc++.h>
    
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    using namespace std;
    
    const int N = 1e5 + 5;
    
    int n, m, _, k, t;
    int f[35];
    
    int find(int x) {
        if (f[x] == x) return x;
        return f[x] = find(f[x]);
    }
    
    void unit(int x, int y) {
        x = find(x), y = find(y);
        if (x == y) return;
        f[y] = x;
    }
    
    int main()
    {
        for (cin >> _; _; --_) {
            cin >> n >> m;
            bool flag = 0;
            rep (i, 1, n) f[i] = i, f[i + n] = i + n;
    
            rep (i, 1, m) {
                int x, y; string c; cin >> x >> y >> c;
    
                int fny = find(y + n);
                int fx = find(x), fy = find(y);
                if (c[0] == 'T' && fx == fny) flag = 1;
                else if (c[0] == 'C' && fx == fy) flag = 1;
    
                if (c[0] == 'T') unit(x, y), unit(x + n, y + n);
                else unit(x, y + n), unit(x + n, y);
            }
    
            cout << "Case #" << ++t << ": ";
            if (flag) { cout << 0 << '
    '; continue; }
    
            int tot = 0;
            rep (i, 1, n) if (i == f[i]) ++tot;
    
            cout << (1 << tot) << '
    ';
        }
        return 0;
    }
    

    I

    动态规划, 搜索

    #include <bits/stdc++.h>
    #define all(n) (n).begin(), (n).end()
    #define se second
    #define fi first
    #define pb push_back
    #define mp make_pair
    #define sqr(n) (n)*(n)
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    #define per(i,a,b) for(int i=(a);i>=(b);--i)
    #define IO ios::sync_with_stdio(0); cin.tie(0)
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> PII;
    typedef pair<ll, ll> PLL;
    typedef vector<int> VI;
    typedef double db;
    
    const int N = 1e5 + 5;
    
    int n, m, _, k, t;
    int a[9];
    ll f[9][105];
    
    ll find(int c, int w) {
        if (w == n) return 1;
        if (w > n || c > 8) return 0;
        
        if (f[c][w] >= 0) return f[c][w];
    
        return f[c][w] = find(c, w + a[c]) + find(c + 1, w);
    }
    
    int main() {
        IO;
        for (cin >> _; _; --_) {
            rep (i, 1, 8) cin >> a[i];
            cin >> n;
    
            memset(f, -1, sizeof f);
            find(1, 0);
            cout << "Equation #" << ++t << ": " << f[1][0] << '
    ';
        }
        return 0;
    }
    

    J

    见代码

    #include <bits/stdc++.h>
    #define all(n) (n).begin(), (n).end()
    #define se second
    #define fi first
    #define pb push_back
    #define mp make_pair
    #define sqr(n) (n)*(n)
    #define rep(i,a,b) for(int i=(a);i<=(b);++i)
    #define per(i,a,b) for(int i=(a);i>=(b);--i)
    #define IO ios::sync_with_stdio(0); cin.tie(0)
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> PII;
    typedef pair<ll, ll> PLL;
    typedef vector<int> VI;
    typedef double db;
    
    const int N = 55;
    
    int v[N][N], ans[55];
    bool vv[N], flag;
    int n, x[N], y[N], start = 1;
    
    int line(int i, int j) { //判断i,j在不在一条直线
        if (i == j) return 0;
        if ((x[i] - x[j]) && !(y[i] - y[j])) return 1;
        if (!(x[i] - x[j]) && (y[i] - y[j])) return 2;
        return 0;
    }
    
    bool X1(int i, int j) {//判断ij之间有没有点,平行x轴
        rep (k, 1, n)
            if (line(i, k) == 1 && line(j, k) == 1)
                if ((x[i] - x[k]) > 0 && (x[j]-x[k]) < 0) return 0;
                else if ((x[i] - x[k]) < 0 && (x[j] - x[k]) > 0) return 0;
        return 1;
    }
    
    bool X2(int i, int j) {//判断ij之间有没有点,平行y轴
        rep (k, 1, n)
            if (line(i, k) == 2 && line(j, k) == 2)
                if ((y[i] - y[k]) > 0 && (y[j]  -y[k]) < 0) return 0;
                else if ((y[i] - y[k]) < 0 && (y[j] - y[k]) > 0) return 0;
        return 1;
    }
    
    int link(int i, int j) {//判断ij能不能直连
        if (i == j) return 0;
        int tmp = line(i,j);
        if (!tmp) return 0;
        if (tmp == 1 && X1(i, j)) return 1;
        else if(tmp == 2 && X2(i, j)) return 2;
        return 0;
    }
    
    void dfs(int fx, int pos, int cnt) {//fx是上一条边的方向
        ans[cnt] = pos;
        for (int i = 1; i <= n && flag; ++i)
            if(!vv[i] && v[i][pos] && v[i][pos] != fx) {
                vv[i] = 1;
                dfs(v[i][pos], i, cnt + 1);
                vv[i] = 0;
            }
    
        if(cnt > n && pos == start) {
            flag = 0;
            return;
        }
    }
    
    int main() {
        IO;
        int ttt = 1;
        while (cin >> n && n) {
            start = 1;
            memset(ans, 0, sizeof ans);
            
            rep (i, 1, n) {
                cin >> x[i] >> y[i];
                if (y[i] < y[start]) start = i;
                else if (y[i] == y[start] && x[start] > x[i]) start = i;
            }
    
            rep (i, 1, n)
                rep (j, i + 1, n)
                    v[i][j] = v[j][i] = link(i, j);
            
            flag=1;
            memset(vv,0,sizeof vv);
            dfs(0, start, 1);
            cout << "Polygon #" << ttt++ << ": " << ans[1];
            if (line(ans[1], ans[2]) == 1)
                rep (i, 2, n) cout << ' ' << ans[i];
            else per (i, n, 2) cout << ' ' << ans[i];
            cout << ' ' << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    CSS3 flex 布局 图片撑大 父级元素被放大 解决办法
    CentOS 下使用 cron crond crontab 执行定时任务
    Linux 安装 pcre
    Nginx 下载编译安装
    油猴脚本编写教程
    用图形来表达你的意思
    免费绘图软件drawio.io快捷键说明
    centos/Mac 下的多线程下载工具 axel
    巧用对象,生成不重复随机数
    mac 下 Redis5 BloomFilter 安装及与 python连用
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/13340705.html
Copyright © 2020-2023  润新知