首页 > 其他 > 详细

新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛 比赛总结

时间:2019-03-31 18:14:04      阅读:332      评论:0      收藏:0      [点我收藏+]

赛后总结:

  TJ:队友晚来了一会,于是我先做了签到题。今天先做了A和B两道签到题,我特别蠢地做错了B两次(两个小错误),然后emmm。队友来了,和她们讲了D题,然后金姐开始搞了。我和彭彭想了一会开始看F神奇序列。序列想了一会,觉得不是很难,找了一个交换数组最少次数的模板套上去就过了。然后我们换了一题,E题。E题一开始理解错题意了,然后一起找规律计算。最后二十多分钟我们找出来了,然后第一发超时,第二发金姐改了就过了。

  我的队友太强了呜呜。

 

 

 

A.CSL爱烫头

技术分享图片
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
using namespace std;
typedef long long LL;
#define MAX 10005
int main()
{
    int n;
    cin >> n;
    if (n < 1) cout << "None" << endl;
    else if (n == 1) cout << "XiZhiTang" << endl;
    else if (n == 2) cout << "YingHuaTang" << endl;
    else if (n >= 3) cout << "BigBoLang" << endl;
    system("pause");
    return 0;
}
View Code

 

B.CSL的英语考试

技术分享图片
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
using namespace std;
typedef long long LL;
#define MAX 10005
int p[MAX], visit[MAX] = { 0 }, la[MAX] = { 0 };
struct node
{
    int id, people;
    double sum, num;
};
node person[MAX], ans[MAX], p2[MAX];
bool comp(const struct node&a, const struct node&b)
{
    if (a.sum == b.sum)
        return a.id < b.id;
    return a.sum > b.sum;
}
int Find(int x)
{
    int temp = x;
    while (p[temp] != temp)
        temp = p[temp];
    return temp;
}
void join(int x, int y)
{
    int t1, t2;
    t1 = Find(x);
    t2 = Find(y);
    if (t1 != t2)
    {
        if (t1 > t2)
        {
            p[t1] = t2;
        }
        else p[t2] = t1;
    }
}
 
int main()
{
    int n;
    scanf("%d", &n);
    map<char, int>a;
    for (int i = 0; i < 26; i++)
    {
        char c;
        cin >> c;
        a[c] = i;
    }
    for (int i = 0; i < n; i++)
    {
        char s1[1500], s2[1500];
        cin >> s1 >> s2;
        int len1 = strlen(s1), len2 = strlen(s2);
        int len = min(len1, len2);
        int flag = -1;
        for (int i = 0; i < len; i++)
        {
            if (a[s1[i]] > a[s2[i]])
            {
                flag = 1;
                break;
            }
            else if (a[s1[i]] < a[s2[i]])
            {
                flag = 0;
                break;
            }
        }
        if (flag == -1 && len1 == len2) flag = -1;
        else if (flag== -1&&len == len1) flag = 0;
        else if (flag == -1&& len == len2) flag = 1;
        if (flag == 1) cout << ">" << endl;
        else if (flag == 0) cout << "<" << endl;
        else cout << "=" << endl;
    }
    system("pause");
    return 0;
}
View Code

 

E.CSL的魔法

技术分享图片
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long LL;
#define MAX 10005
int p[MAX], visit[MAX] = { 0 }, la[MAX] = { 0 };
struct node
{
    int id, people;
    double sum, num;
};
node person[MAX], ans[MAX], p2[MAX];
bool comp(const struct node&a, const struct node&b)
{
    if (a.sum == b.sum)
        return a.id < b.id;
    return a.sum > b.sum;
}
int Find(int x)
{
    int temp = x;
    while (p[temp] != temp)
        temp = p[temp];
    return temp;
}
void join(int x, int y)
{
    int t1, t2;
    t1 = Find(x);
    t2 = Find(y);
    if (t1 != t2)
    {
        if (t1 > t2)
        {
            p[t1] = t2;
        }
        else p[t2] = t1;
    }
}
 
struct number
{
    int a, b;
}x[150000];
bool cmp(number aa, number bb)
{
    return aa.a > bb.a;
}
/*bool cmp2(num aa, num bb)
{
    return aa.a > bb.a;
}*/
 
int getMinSwaps(vector<int> &nums) {
    vector<int> nums1(nums);
    sort(nums1.begin(), nums1.end());
    unordered_map<int, int> m;
    int len = nums.size();
    for (int i = 0; i < len; i++) {
        m[nums1[i]] = i;
    }
    int loops = 0;
    vector<bool> flag(len, false);
    for (int i = 0; i < len; i++) {
        if (!flag[i]) {
            int j = i;
            while (!flag[j]) {
                flag[j] = true;
                j = m[nums[j]];
            }
            loops++;
        }
    }
    return len - loops;
}
 
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> x[i].a;
        //x2[i].a = x[i].a;
    }
    for (int i = 0; i < n; i++)
    {
        cin >> x[i].b;
        //x2[i].b = x[i].b;
    }
    sort(x, x + n, cmp);
    vector<int>num;
    for (int i = 0; i < n; i++)
        num.push_back(x[i].b);
    int res = getMinSwaps(num);
    cout << res << endl;
    system("pause");
    return 0;
}
View Code

 

F.CSL的神奇序列

技术分享图片
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#include<set>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#include<iomanip>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef unsigned long long ull;
#define MAX 1000005
#define mod 998244353
ull a[MAX];
void init() {
    a[1] = 1;
    for (int i = 2; i <= 1000000; i++)
    {
        a[i] = (a[i - 1] * (2 * i - 1)) % mod;
    }
}
int main()
{
    int w, q,n;
    cin >> w >> q;
    init();
    while (q--)
    {
        int n;
        cin >> n;
        ull ans = a[n];
        ans =(ans*w)%mod;
        cout << ans << endl;
    }
     
    system("pause");
    return 0;
}
View Code

 

新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛 比赛总结

原文:https://www.cnblogs.com/Tangent-1231/p/10632343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!