首页 > 其他分享 >24-2-29 个人赛

24-2-29 个人赛

时间:2024-03-01 16:37:43浏览次数:18  
标签:24 int IOS 29 long cin 个人赛 tie define




A - 减肥计划

难度: ⭐⭐⭐

解题思路

k如果大于等于n - 1, 那么只有队伍中分数最大的那个人可以胜利; 剩下的就可以O(n)解决了, 看看谁能先他一步满足条件; 从第一个人开始, 我们往后找到第一个大于他分数的那个人, 记录差值看是否满足条件即可;

神秘代码

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl '\n'
using namespace std;
const int N = 1e6 + 10, mod = 998244353, inf = 1e18;
typedef pair<int, int> PII;
int n, m;
int p[N];
signed main(){
    IOS;
	cin >> n >> m;
    for(int i = 1; i <= n; i++){
        cin >> p[i];
    }
    int x = p[1], pos = 1;
    for(int i = 2; i <= n; i++){
        if(p[i] > x){
            int len = i - pos - (pos == 1);
            if(len >= m){
                cout << pos << endl;
                return 0;
            }
            pos = i;
            x = p[i];
        }
    }
    cout << pos;
	return 0;
}




B - 睡觉

难度: ⭐⭐⭐

解题思路

我们可以先计算一首歌下来小莫的清醒度是否下降, 如果下降了, 那么我们可以循环无限次, 直到满足题意; 如果上升了, 那么合法的区间随着歌曲的循环会越来越短, 所以最佳情况就在前两次播放, 如果放了两次还没有合法的区间, 那么再往后也就没有了; 如果清醒度不变, 我们需要分情况讨论, 如果时间t小于一首歌的时间, 那么就在一首歌时间里面找就行, 如果大于等于一首歌, 那么我们就让整首歌期间一直都是合法的才行;

神秘代码

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl '\n'
using namespace std;
const int N = 1e6 + 10, mod = 998244353, inf = 1e18;
typedef pair<int, int> PII;
int p[N];
signed main(){
    IOS;
	int T;
    cin >> T;
    while(T--){
        int x, t, k, n, d;
        cin >> x >> t >> k >> n >> d;
        int cnt = 0;
        for(int i = 1; i <= n; i++){
            cin >> p[i];
            p[n + i] = p[i];
            if(p[i] <= d) cnt--;
            else cnt++;
        }
        if(cnt < 0){
            cout << "YES" << endl;
            continue;
        }
        bool f = false;
        cnt = 0;
        for(int i = 1; i <= 2 * n; i++){
            if(p[i] <= d) x--;
            else x++;
            if(x <= k) cnt++;
            else cnt = 0;
            if(cnt >= t){
                f = true;
                break;
            }
            if(i == n && cnt == n){
                f = true;
                break;
            }
        }
        if(f) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
	return 0;
}




C - 测量学

难度: ⭐⭐

解题思路

模拟就行, 把所有可能的路径都列出来找最小值;

神秘代码

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl '\n'
using namespace std;
const int N = 1e6 + 10, mod = 998244353, inf = 1e18;
typedef pair<int, int> PII;
int n;
double r, m;
double pi = 3.14159265358;
double p[N];
signed main(){
    IOS;
    cin >> n >> r >> m;
    if(m > pi) m = 2 * pi - m;
    for(int i = 1; i <= n; i++){
        cin >> p[i];
    }
    p[n + 1] = r;
    sort(p + 1, p + 1 + n);
    double res = 1e18;
    for(int i = 1; i <= n + 1; i++){
        double len = 2 * (r - p[i]) + m * p[i];
        res = min(res, len);
    }
    printf("%.30lf", res);
	return 0;
}




D - 排队打卡

难度: ⭐⭐⭐

解题思路

模拟题, 本题坑点和细节比较多; 一是判断日志是否合法, 如果日志中没有t这个时间节点, 那么我们可以给他插入一个方便判断; 二是出队和入队的前后, 以及和条件判断的先后顺序, 这些看题目和代码即可;

神秘代码

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl '\n'
using namespace std;
const int N = 1e6 + 10, mod = 998244353, inf = 1e18;
typedef pair<int, int> PII;
struct node{
    int t, x;
    bool operator<(const node& a)const{
        return t < a.t;
    }
}p[N];
signed main(){
    IOS;
    int t, n, m, k;
    cin >> t >> n >> m >> k;
    int cnt = 0;
    int f, f1 = 1;
    int minn = inf, res;
    for(int i = 1; i <= m; i++){
        int a, b;
        cin >> a >> b;
        if(a == t) f1 = 0;
        p[i] = {a, b};
    }
    if(f1) p[m + 1] = {t, 0};
    sort(p + 1, p + 1 + m + f1);
    for(int i = 1; i <= m + f1; i++){
        if(i != 1) cnt = max(0ll, cnt - (p[i].t - p[i - 1].t - 1) * k);
        if(p[i].t == t){
            if(cnt != n) f = 0;
            else f = 1;
        }
        cnt += p[i].x;
        if(p[i].t >= t && p[i].x){
            int x = ((cnt + 1) / k) + ((cnt + 1) % k != 0);
            if(x <= minn){
                minn = x;
                res = p[i].t;
            }
        }
        cnt = max(0ll, cnt - k);
    }
    if(f == 0) cout << "Wrong Record";
    else {
        cout << res << ' ' << minn;
    }
	return 0;
}




E - 音乐游戏

难度: ⭐

解题思路

签到题, 没啥好说的; 但是要注意一点, 就算getchar和cin在开启IOS的情况下也不能混用;

神秘代码

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl '\n'
using namespace std;
const int N = 1e6 + 10, mod = 998244353, inf = 1e18;
typedef pair<int, int> PII;
int n, m, res;
signed main(){
    //IOS; 一定不能开
    cin>>n;
    getchar();
    for(int i = 1; i <= n; i++){
        string s;
        getline(cin, s);
        for(int j = 1; j <= 4; j++){
            if(s[j] == '-') res++;
        }
    }
    cout << res;
	return 0;
}

标签:24,int,IOS,29,long,cin,个人赛,tie,define
From: https://www.cnblogs.com/mostimali/p/18047373

相关文章

  • $\text{20240301}$ 字符串练习题解
    \(\text{20240301}\)字符串练习题解一定要写冬令营的题吗?遗憾的。P9717给了一个\(n\)个数的首尾相接的字符串,求若干个操作后能形成的不同的字符串大小。一次操作定义为:将字符串内所有的\(\text{01}\)同时改成\(\text{10}\),如图。通过这张图我们似乎发现了一个规律,这......
  • 【2024-02-23】买车念想
    20:00我相信任何事情都不会不留痕迹地过去,我们所走的最小的一步都会影响现在的、将来的生活。                                                 ——契诃夫过年回来后......
  • 【2024-02-22】金石为开
    20:00人干起活来时他就活起来,像春天的一株树,他活着,而不仅仅在干活。                                                 ——D·H·劳伦斯今天是我们老家镇上的一个国家......
  • 2024省选游记
    Day-1最后一天了,作为初三的我对于省选还是不怎么抱有希望的,但是就像是西安交大一样,还是有一丝丝的侥幸心理在的晚上打算补一下这几天总结的,但是发现拉的有点多,就等以后再补吧学长们有的已经开始写退役游记了,他们的OI生涯也如同百日誓师一样,进入了非常短的倒计时......
  • 1.24
    1.GitHub打开:第一种:GitHub:Let’sbuildfromhere·GitHub打开网页版主页(新手使用)             第二种:桌面版注册(长期使用)2.注册账号 右上角signup注册 输入邮箱 登录进入一下界面......
  • 英语背单词 专四词汇 2024年03月 ChatGPT
     2024-03-01indexwordpronunciationpartsofspeechexplanationtranslationinChinese1inert/ɪˈnəːt/adjectiveLackingtheabilitytomoveorreact;inactive.惰性的;不活跃的2anticipation/ænˌtɪsɪˈpeɪʃən/nounTheactoflookingfo......
  • 2024.03 别急记录
    1.IOI2018-狼人/werewolf[省选/NOI-]题意简述:多次询问求是否存在一条\(s\tot\)的路径\(a_1,a_2,...,a_k\)和路径上一个点\(a_i\)使\(a_1,...,a_i\in[L,n]\)且\(a_i,...,a_k\in[1,R]\)。首先求出两棵kruskal重构树:第一棵树边权值设为\(\min(u,v)\),由大到小......
  • KubeSphere 社区双周报|2024.02.01-02.29
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。因假期,上期双周报停更,因此本次双周报会包含四周的内容。本次双周报涵盖时间为:2......
  • 240301C语言笔记
    一、数组数组里面放数据的,数组变量相当于指针int*ptr=&myArray[0];int*ptr=myArray声明数组:typearrayName[arraySize]初始化大括号获取长度sizeofintlength=sizeof(numbers)/sizeof(numbers[0]);二、内存管理:四个区:自上而下栈区先进后出自动变量、函......
  • 2024-03-01-Lniux高级网络编程(5-网络通信过程)
    5.网络通信过程5.1网络通信概述​通过对TCP、UDP的编程学习,能够完成对实际项目需求中网络功能的开发,为了提高程序的稳定性以及效率等等,通常会使用多线程、多进程开发;根据功能需求的不同,可以利用C/S、B/S模式进行开发。作为嵌入式工程师,需要时整个网络通信的过程进......