首页 > 其他分享 >新生赛题解

新生赛题解

时间:2023-08-16 19:11:56浏览次数:41  
标签:const int 题解 新生 long ans include define

A

题解:不会

#include <bits/stdc++.h>
#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n';
using namespace std;
const int N=3e5+8,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=998244353;
typedef pair<int,int> PII;


int32_t  main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int n,x,t;
    cin>>n>>x>>t;
    int y=n/x;
    if(n%x)
    {
        y++;
    }
    cout<<y*t;
    return 0;
}

 

B

题解:不会

#include <bits/stdc++.h>
#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n';
using namespace std;
const int N=3e5+8,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=998244353;
typedef pair<int,int> PII;


int32_t  main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    string s;
    cin>>s;
    int ans=s.length();
    if(ans%2==0)
    {
        ans-=2;
        while (s.substr(0,ans/2)!=s.substr(ans/2,ans/2))
        {
            ans-=2;
        }
    }
    else
    {
        ans-=1;
        while (s.substr(0,ans/2)!=s.substr(ans/2,ans/2))
        {
            ans-=2;
        }
    }
    cout<<ans;
    return 0;
}

 

C

题解:开__int128

#include <bits/stdc++.h>
#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n';
using namespace std;
const int N=3e5+8,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=998244353;
typedef pair<int,int> PII;

int a[N];
int32_t  main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]==0)
        {
            cout<<0<<endl;
            return 0;
        }
    }
    __int128 b=1,c=1e18;
    for(int i=1;i<=n;i++)
    {
        b*=a[i];
        if(b>c)
        {
            b=-1;
            break;
        }
    }
    int k=b;
    cout<<k;
    return 0;
}

 

D

题解:直接暴力即可

#include <bits/stdc++.h>
#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n';
using namespace std;
const int N=3e5+8,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=998244353;
typedef pair<int,int> PII;

int a[N];
int32_t  main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int k,s;
    cin>>k>>s;
    int ans=0;
    for(int i=0;i<=k;i++){
        for(int j=0;j<=k;j++)
        {
            int x=s-i-j;
            if(x<=k && x>=0)
            {
                ans++;
            }
        }
    }
    cout<<ans;
    return 0;
}

 

E

题解:直接模拟一下过程以成年人为基准,那么这题可能小孩的成年人的体重会有交接,所以我们把成年人全加上然后在这个体重下减,要么去掉这个体重的成年人,这里map自动排序,要么不要大于这个体重的小孩,对于这个取一个MAX即可

#include <bits/stdc++.h>
#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n';
using namespace std;
const int N=3e5+8,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=998244353;
typedef pair<int,int> PII;

map<int,int> a;
int ans=0;

int32_t  main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int n;
    cin>>n;
    string s;
    cin>>s;
    int res=0;
    for(int i=0;i<n;i++) {
        int x;
        cin >> x;
        if (s[i] == '1') {
            res++;
            a[x]--;
        } else {
            a[x] += 1;
        }
    }
        ans=res;
        for(auto i:a)
        {
            res+=i.second;
            ans=max(ans,res);
        }
        cout<<ans;
    return 0;
}

 

F

这题不是特别恶心,你们也有人过,可以相互问问,我就不做过多解释了

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define maxx 1145141919810ll
#define minx -1145141919810ll
int n,m;
int a[100100];
int b[100100];
struct Node{
    int x,y,z;
};
Node c[200100];
bool cmp(Node x,Node y){
    return x.x < y.x;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    for (int i=1;i<=n;i++){
        int temp;
        cin >> temp;
        c[i].x = temp;
        c[i].y = 1;
        c[i].z = i;
    }
    for (int i=1;i<=m;i++){
        int temp;
        cin >> temp;
        c[n+i].x = temp;
        c[n+i].y = 2;
        c[n+i].z = i;
    }
    sort(c+1,c+n+m+1,cmp);
    for (int i=1;i<=n+m;i++){
        if (c[i].y == 1){
            a[c[i].z] = i;
        }
        else {
            b[c[i].z] = i;
        }
    }
    for (int i=1;i<=n;i++){
        cout << a[i] << " ";
    }
    cout << endl;
    for (int i=1;i<=m;i++){
        cout << b[i] << " ";
    }
    return 0;
}

 

标签:const,int,题解,新生,long,ans,include,define
From: https://www.cnblogs.com/whatdo/p/17635980.html

相关文章

  • P2073题解
    链接:P2073送花题意:有若干朵花,每个有两个属性(美丽值和价格)。你需要维护\(3\)种操作:1.添加一朵花(如果之前有价格相同的忽略此操作)2.删除最贵的花3.删除最便宜的花最后输出两个数:美丽值的总和和价格总和解法:经典的平衡树题。对于第一种操作,关键在于判重。先询问一下有......
  • 安防视频监控平台EasyNVR视频监控汇聚平台页面无法上传授权文件的问题解决方案
    TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告警等......
  • CF809E 题解
    一棵树,点权\(a_i(a_i\len)\),无边权,求\[\sum_{i\nej}\varphi(a_ia_j)\text{dis}(i,j)\]首先,你没有任何手段求\(10^{10}\)级别的一堆离散的\(\varphi\)。于是\[\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\]然后一通莫反,枚举\(\gcd\)\[\sum......
  • CF1648E 题解
    就是\(m\)组询问补图的最小生成树上的树链最大值。有两种基本思路求这棵树。第一种,Kruskal,基于找到最小的边使两端点不连通。考虑补图中\((x,y)\)的边权,它是原图最小生成树上的树链最大值。从小到大枚举补图的边,相当于从小到大枚举原图最小生成树的边\((u,v,w)\),然后:令原图......
  • AT_agc064_a题解
    题面题目大意给定一个正整数\(N\),要求构造一个序列。对于每一个在\(1\)到\(N\)之间的整数\(i\),序列中包含了\(i\)个,并且将该序列首尾相接拼成环后,相邻两项之差大于等于\(1\)小于等于\(2\)。思路突破口是关于相邻两项之差的约束条件。(我一开始竟然只看见了“小于等......
  • CF1854D 题解
    CF1854DMichaelandHotel题解Links洛谷CodeforcesDescription这是一个交互题。有一个有\(n\)个点的内向基环树森林,zlsim位于\(1\)号节点,请你通过以下操作求出哪些节点(包括\(1\))可以通过从这两点开始沿边行走若干步汇至一点。给出两个参数\(u,k\)和点集\(S\),询......
  • P2034题解
    P2034题解题目描述给定一行\(n\)个非负整数\(a_1\cdotsa_n\)。现在你可以选择其中若干个数,但不能有超过\(k\)个连续的数字被选择。你的任务是使得选出的数字的和最大。题解正难则反,考虑将原问题转化为从\(a\)中选若干数使得,任意两数差不大于\(k\),求答案最小。观察......
  • ZS Shuffles Cards 题解
    ZSShufflesCards题解我们把每一次抽一些数字牌再抽到joker视作一局游戏。每局期望轮数首先考虑\(f_i\)表示每一局游戏抽出\(i\)张牌的概率。那么就是先抽出\(i-1\)张数字牌,再抽出一张joker。概率就是:\[f_i=\fracm{n+m-i+1}\prod_{k=0}^{i-2}......
  • CF1858A Buttons题解
    思路我们可以让两人先拿\(c\)里面的,因为\(a\)和\(b\)肯定是自己的,那么公共的“我”也要抢的越多越好,所以我们都要先拿\(c\)里面的。如果\(c\)是奇数,那么先手一定多拿\(1\)个\(c\)里面的,相当于先手可以拿\(a+1\)个,后手可以拿\(b\)个;如果\(c\)是偶数,那么两......
  • CF1858C Yet Another Permutation Problem 题解
    思路这个题是一个简单的构造题。竟然比T2简单,也是少见我们可以首先从\(1\)开始不断乘以\(2\),像这样:\(1,2,4,8,16\cdots,2^x\),直到什么时候超过\(n\)就停止。这样相邻两个数字就可以凑出\(1,2,4,6,\cdots,2^{x-1}\),保证两两不同。然后我们可以从\(3\)开始不......