首页 > 编程语言 >2021 ICPC 江西省大学生程序设计竞赛(正式赛)

2021 ICPC 江西省大学生程序设计竞赛(正式赛)

时间:2023-05-25 15:23:55浏览次数:61  
标签:cnt int -- long ICPC ++ 2021 using 程序设计

链接:https://ac.nowcoder.com/acm/contest/21592

B

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

void solve() {
    int x, y;
    cin >> x >> y;
    int cnt = 0;
    vector<int> ans;
    while (1) {
        int g = gcd(x, y);
        x /= g;
        y /= g;
        int d = x / y;
        ans.push_back(d);
        int tmp = x % y;
        x = y;
        y = tmp;
        cnt++;
        if (y == 1) {
            ans.push_back(x);
            break;
        }
    }
    cout << cnt << ' ';
    for (int i = 0; i < (int) ans.size(); i++) {
        cout << ans[i] << " \n"[i == (int) ans.size() - 1];
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}

F

Python Code
import sys

input = sys.stdin.buffer.readline

f = [0] * 10001
f[1] = 1
cnt = add = 2
j = 0
for i in range(2, 10001):
    f[i] = f[i - 1] + add
    j += 1
    if j == cnt:
        cnt += 1
        j = 0
        add *= 2

for _ in range(int(input())):
    n = int(input())
    print(f[n])

G

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

constexpr int N = 1E6;
vector<int> minp, primes;
 
void sieve(int n) {
    minp.assign(n + 1, 0);
    
    for (int i = 2; i <= n; i++) {
        if (minp[i] == 0) {
            minp[i] = i;
            primes.push_back(i);
        }
        
        for (auto p : primes) {
            if (i * p > n) {
                break;
            }
            minp[i * p] = p;
            if (p == minp[i]) {
                break;
            }
        }
    }
}

vector<vector<int>> fac(N + 1);

int cnt[N + 1], k[N + 1];

void solve() {
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    for (int i = 0; i < n; i++) {
        if (fac[a[i]].empty()) {
            int x = a[i];
            while (x > 1) {
                int p = minp[x];
                x /= p;
                if (fac[a[i]].empty() || p != fac[a[i]].back()) {
                    fac[a[i]].push_back(p);
                }
            }
        }
    }
    
    struct node {
        int l, r, i;
    };
    vector<node> q(m);
    for (int i = 0; i < m; i++) {
        int l, r;
        cin >> l >> r;
        l--;
        r--;
        q[i] = {l, r, i};
    }
    int bk = sqrt(n);
    sort(q.begin(), q.end(), [&](node a, node b) {
	    return ((a.l / bk) ^ (b.l / bk)) ? a.l < b.l : (((a.l / bk) & 1) ? a.r < b.r : a.r > b.r);
    });

    int l = 0, r = -1;
    int res = 0;
    vector<int> ans(n);
    auto add = [&](int j) {
        int num = a[j];
        for (auto &x : fac[num]) {
            cnt[x]++;
            k[cnt[x]]++;
            if (k[cnt[x]] == 1) {
                res++;
            }
        }
    };

    auto del = [&](int j) {
        int num = a[j];
        for (auto &x : fac[num]) {
            k[cnt[x]]--;
            if (k[cnt[x]] == 0) {
                res--;
            }
            cnt[x]--;
        }
    };

    for (int i = 0; i < m; i++) {
        auto &[ql, qr, qid] = q[i];
        while (r < qr) add(++r);
        while (l > ql) add(--l);
        while (l < ql) del(l++);
        while (r > qr) del(r--);
        ans[qid] = res;
    }
    while (l <= r) {
        del(l++);
    }
    for (int i = 0; i < m; i++) {
        cout << ans[i] << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    sieve(N);

    int t;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}

H

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

void solve() {
    int n, k;
    cin >> n >> k;

    if (n == 1) {
        cout << "freesin\n";
        return;
    }

    if (n - 1 - k <= 0) {
        cout << "pllj\n";
        return;
    }

    cout << "freesin\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
} 

J

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }  
    int l = 1, r = n + 1;
    int ans = -1;
    while (l <= r) {
        int mid = (l + r) >> 1;
        auto check = [&](int x) {
            set<pair<int, int>> s;
            unordered_map<int, int> mp;
            int res = 0;
            for (int i = 0; i < n; i++) {
                if (mp.count(a[i])) {
                    res++;
                    s.erase({mp[a[i]], a[i]});
                    mp[a[i]] = i + 1;
                    s.insert({i + 1, a[i]});          
                    continue;       
                }
                if ((int) s.size() == x) {
                    auto it = s.begin();
                    mp.erase(it->second);
                    s.erase(it);
                } 
                mp[a[i]] = i + 1;
                s.insert({i + 1, a[i]});
            }
            return res >= k;
        };
        if (check(mid)) {
            r = mid - 1;
            ans = mid;
        } else {
            l = mid + 1;
        }
    }
    if (ans == -1) {
        cout << "cbddl\n";
    } else {
        cout << ans << '\n';
    }

    return 0;
}

K

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

void solve() {
    int n, m;
    cin >> n >> m;
    cout << 1LL * n * (n + 1) * (2 * n + 1) / 6 * m << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    cin >> t;
    while (t--) {
        solve();
    }

    return 0;
}

L

C++ Code
#include "bits/stdc++.h"

using namespace std;
using i64 = long long;

constexpr int N = 100000;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    cin >> n;
    vector<int> a(N + 1);
    for (int i = 0; i < n; i++) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        a[x1]++;
        a[x2]--;
    }
    for (int i = 1; i <= N; i++) {
        a[i] += a[i - 1];
    }
    int ans = 0;
    for (int i = 0; i <= N; i++) {
        if (a[i] > 0) {
            ans++;
        }
    }
    cout << ans << '\n';
    
    return 0;
}

标签:cnt,int,--,long,ICPC,++,2021,using,程序设计
From: https://www.cnblogs.com/kiddingma/p/17431380.html

相关文章

  • Altium Designer 2021软件安装包下载AD2021安装教程
    安装步骤1、将下载好的安装包鼠标右击,选择解压2、解压得到一个安装文件夹,打开它3、鼠标右击【AltiumDesigner21Setup】,选择 以管理员身份运行4、点击【Next】5、语言选择到【Chinese】勾选【同意条款】,点击【Next】6、点击【Next】7、点击小文件夹图标,选择安装位置,可以把安装盘C......
  • 2023年CCPC河南省程序设计竞赛 mjh
    首先,很荣幸有机会参加此次ccpc,虽然成绩很一般。。。这次ccpc一共过了两道签到题。比赛开始就找到了a题,考察字符串的回文判断,通过调用c++库函数过了。第二道签到题类似于数学题。通过类似于找规律的方法,wa了两发过了。看了榜单后决定跟题,大部分时间主要花在f题上,想到排序后在每段......
  • P8989 [北大集训 2021] 随机游走
    Link给一张\(n\)个点的有向图,初始对于\(\foralli\in[1,n-1]\),在\(i\)与\(i+1\)之间有一条有向边在其中再加入\(m\)条有向边,允许重边和自环,最大化从\(1\)到\(n\)的期望步数我们可以注意到几条简单的性质为了尽可能最大化期望步数,所有边都会往\(1\)连不可能......
  • 河南省第十四届icpc大学生程序设计竞赛-clk
    这次比赛赛程比较长,520出发,521,回学校,出发的那一天有点热,感觉不是很好,而且那一天感觉有点生病,应该只是普通感冒,热身赛的时候被oier吊打,省实验真厉害,晚上回酒店后,我喊队友,补了前年的icpc的省赛题,很友好,轻松就A了五道题,用时也不是特别多,还做了情人节的520pta,做的有点慢,导致有一道题没......
  • 2023年ccpc河南省程序设计竞赛-clk
    很荣幸能够参加这次比赛,比赛机会挺难得得,还是第一次线下参加这样的大型比赛,比赛体验自然无话可说比较刺激.。这次比赛我和队友crf和nhr共同解决了三道题,参与感极差,可以说问题很大,最简单的签到题我们花费了几乎俩小时,而后面的俩题用时非常少,导致罚时比较大,最后只拿了个铜奖,但终归还......
  • 2023 (ICPC) Jiangxi Provincial Contest -- Official Contest
    2023(ICPC)JiangxiProvincialContest--OfficialContest A-DrillWoodtoMakeFire思路:n>=s*vB-WonderfulArray思路:对a进行a%m,不会对结果造成影响,则0<=bi+1-bi<m。可以求bi+1%m<bi%m的个数,等价于bi+1/m>bi/m,整体来看,就是求bn/m#include<bits/stdc++.h>using......
  • 编程打卡:面向对象程序设计
    importjava.util.*;publicclassStaffManagementSystem{privatestaticList<Staff>staffList=newArrayList<>();publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(true){......
  • 2021四川省赛
    The2021SichuanProvincialCollegiateProgrammingContestA-Chuanpai#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ intk; cin>>k; intans=0; for(inti=1;i<=6;i++) for(intj=i;j<=6;j++) if(i+j==k) ans++; co......
  • 2022年第十四届四川省大学生程序设计大赛 A
    AAdjacentSwapping题意:给定一个字符串,每次可以移动相邻字符,求最小移动次数可以把它变成s+s这样左右两边相同的字符串。思路:1:我们知道他一定是偶数长度,所以我们把字符串分成两部分s1和s22:贪心的扫描一遍这个字符串,s1就是前一半,然后计算在满足这一般的时候他要移动多少次,即直......
  • HEUCPC2021
    stralReflection在\([1,n]\)上支持如下操作:操作一:学习一个新的技能——清除\([l,r]\)内所有的陨石操作二:给定一个点集\(k\)代表陨石出现在这些位置,询问最少需要使用多少技能才能清除所有陨石(不能使用当前没有学习的技能)共操作\(m\)次\(\sumk\leq1e5\)\(m\leq1e5\)......