首页 > 其他分享 >2023江西省省赛

2023江西省省赛

时间:2023-05-24 15:33:24浏览次数:35  
标签:江西省 cout int ll cin bi 2023 省赛 mod

A. Drill Wood to Make Fire

问题的题意是:给定木材着火的临界值N,燧人氏的强度S和速度V,你能确定燧人氏是否能钻木取火?
即满足条件为:s*v>=n。满足输出1,否则输出0.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int t,n,s,v;
    cin>>t;
    while(t--)
    {
        cin>>n>>s>>v;
        if(s*v>=n) cout<<1<<'\n';
        else cout<<0<<'\n';
    }
    return 0;
}

B. Wonderful Array

思路:因为答案是求(bi mod m<=bi+1 mod m)的个数,所以在求之前对b数组mod m对答案是没有影响。
得到新的数组b后直接去统计bi mod m<=bi+1 mod m的个数1e9的时间复杂度肯定过不了,所以可以找不满足的个数,
即bi mod m>bi+1 mod m的个数。最后用b数组总个数n减去这个长度就是满足的个数。在数组中要满足bi mod m<=bi+1 mod m
的条件为bi+ai>=m,所以只需要计算在累加的过程中产生了多少次取模即可。即答案ans=n-bn/m;

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6+10;
typedef long long ll;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    ll a[N],b,n,m,x,k,sum=0;
    cin>>k;
    for(int i=1;i<=k;i++){
        cin>>a[i];
    }
    cin>>n>>m>>x;
    b=x%m;//b的第一项为x
    for(int i=1;i<=k;i++){
        a[i]%=m;
        sum+=a[i];//计算k数组中数的总和
    }
    b+=(n/k)*sum;//计算长度为n的数组b需要累加多少轮k数组和
    ll res=n%k;
    for(int i=1;i<=res;i++){//将不足k个数的数加上
        b+=a[i];
    }
    cout<<n-b/m;
    return 0;
}

C. Battle
题意:A和B玩取石子游戏,第一行输入n,p,第二行输入n个数,有n堆石子,每个数代表一堆石子的个数。接下来两个人轮流进行一次操作。
每次操作可以任选一堆石子取走p的非负整数次方个石子,不能不取。当有一方不能进行操作时,则输掉比赛。如果先手的能赢则输出GOOD,
否则输出BAD。

思路:多组博弈时可以先用sg函数异或合并大表找到规律。可以发现当p为奇数时,sg(x)=x mod 2;
当p为偶数时,如果x mod (p+1)=p,则sg(x)==2,否则sg(x)=(x mod p+1)%2;
将所有sg值异或起来后,如果答案不为零则先手必胜,否则先手必败。

#include <bits/stdc++.h>

using namespace std;

const int N = 110,M=3e5+10;
typedef long long ll;
ll x,p,n,res;

ll sg1(ll x)//x为奇数的情况
{
    return x%2;
}

ll sg2(ll x)//x为偶数的情况
{
    if(x==p) return 2;
    if(x%2==0) return 0;
    else return 1;
}

int main()
{
    res=0;
    cin>>n>>p;
    for(ll i=0;i<n;i++){
        cin>>x;
        if(p&1)
        {
            res^=sg1(x);
        }
        else
        {
            x%=(p+1);
            res^=sg2(x);
        }
    }
    if(res) cout<<"GOOD"<<'\n';
    else cout<<"BAD"<<'\n';
    return 0;
}

J. Function
题意:给定一个系数为1的二次函数,第i个方程为y=(x-i)2+bi。给出一个正整数n和n个bi。接下来给出一个m代表有m此操作。操作有两种,
如果输入形式为“1 x“则进行第一种操作,输出y=(x-i)2+bi的最小值。如果输入形式为”0 a b“则进行第二种操作,添加一个方程为y=(x-a)2+b。

思路:在二次项中i=x时,y=bi。所以只需要在x-sqrt(bi)到x+sqrt(bi)范围内枚举取最小值即可。范围外的值一定会大于bi。

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5+10;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n,m,te[N];
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>te[i];
    }
    cin>>m;
    while (m -- )
    {
        int a,b,x,op;
        cin>>op;
        if(op==1)
        {
            cin>>x;
            int ans=te[x];
            double p=sqrt(te[x]);
            int l=max(1,x-(int)ceil(p));
            int r=min(n,x+(int)ceil(p));
            for(int i=l;i<=r;i++){
                ans=min(ans,(x-i)*(x-i)+te[i]);
            }
            cout<<ans<<'\n';
        }
        else if(op==0)
        {
            cin>>a>>b;
            if(te[a]>b) te[a]=b;
        }
    }
    return 0;
}

K. Split
题意:给定一个n,然后输入a1,a2,...,an,ai>=ai+1。有m次操作,操作1:输入”1 k”,将a数组分为k段,输出每段最大值和最小值差的和最小。
操作2:输入“0 x”,将ax变成ax-1+ax+1-ax。

思路:操作2将ax变成ax-1+ax+1-ax只改变了数值,并没有改变数列中的差值。而1操作可以看成将一段数插入k-1个板子,每插入一个板子,当前位置的差值就会消失,
所有可以将相邻的两个数的差值统计出来,除去k-1个最大的差值即可得到最小的差值和。

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6+10;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n,a[N],ex[N],m,arr[N];
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(i!=1)
        {
            ex[i]=a[i-1]-a[i];
        }
    }
    sort(ex+1,ex+n+1);
    for(int i=1;i<=n;i++){
        arr[i]=arr[i-1]+ex[i];
    }
    cin>>m;
    while(m--)
    {
        int op,x;
        cin>>op>>x;
        if(op==1)
        {
            cout<<arr[n-x+1]<<'\n';
        }
    }
    return 0;
}

L.Zhang Fei Threading Needles - Thick with Fine
题意:输出一个n,输出n-1.

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6+10;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    cout<<n-1;
    return 0;
}

标签:江西省,cout,int,ll,cin,bi,2023,省赛,mod
From: https://www.cnblogs.com/xxcming/p/17426417.html

相关文章

  • SSRFmap-20230329
    Usage:ssrfmap.py[-h][-rREQFILE][-pPARAM][-mMODULES][-l[HANDLER]][-v[VERBOSE]][--lhostLHOST][--lportLPORT][--rfiles[TARGETFILES]][--uagentUSERAGENT][--ssl[SSL]][--proxyPROXY][--level[LEVEL]]选项:-h,--help显示此帮助......
  • 2023.5.24-人件-5月份读后感2
    最近,我阅读了人件的下一部分,有了一些感想。过去,我对于办公环境的重视程度不够。假设除了现在的职责之外,还让你负责为手下提供办公环境和公益设施。你必须为每个人确定工作环境的种类、分配的开支总数等等,而你如何着手做这些事呢?在以后,可以更加重视办公的环境。过去,我认为加班是......
  • C/C++超市商品管理系统[2023-05-24]
    C/C++超市商品管理系统[2023-05-24]9、超市商品管理系统问题描述:设计并实现一个超市商品管理系统,商品需设置不同的类型,系统可以实现对商品信息的添加,修改,删除,查找等功能,商品信息需要以文件方式保存到计算机硬盘中。基本功能:(1)商品要设置不同的类型,如水果、饮料等;(2)商品信息包......
  • 【2023-05-23】有难同当
    20:00我们应该努力将玫瑰培育得更好,而不是想方设法将其变为百合。                                                 ——亚伯拉罕·马斯洛早上出门下大雨,是夏天的雨。......
  • 2023(ICPC)江西省赛I题题解
    I.Tree题意:两种操作,操作1:将一棵树一条路径上的边权异或上一个数,操作2:或者询问一个点周围所有边权的异或和。题解:首先,异或有一个性质A⨁A=0⇒A⨁B⨁A=B在进行操作一时,对X到Y的简单路径上的每一条边权异或,会是这样的情况X_w1_Z_w2_P_w3_Y,根据上面......
  • APIO 2023 真·旅游记
    Day0不知道为什么能来线上,就当来南京旅游了。前一周被感冒折磨的要死,爸妈阳了还不能回家,状态非常非常差,上周末还去深圳打了gdcpc。很累。早上六点钟起床,赶七点半的飞机,大概十点就到了。下飞机发现APIO的老师在迎接我们,等到十一点之后就出发去了酒店。车上甚至有桌子,其他人......
  • 【愚公系列】2023年05月 .NET CORE工具案例-C#调用Python的二种方式
    (文章目录)前言.NET调用Python的作用和意义是可以利用Python强大的数据处理和机器学习能力,结合.NET的优势进行开发,提高开发效率和应用性能。同时,Python也可以通过.NET进行调用,实现跨语言的开发和应用。一、C#调用Python的三种方式1.ironPython调用1.1ironPython的安装IronP......
  • 2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X
    2023-05-23:如果交换字符串X中的两个不同位置的字母,使得它和字符串Y相等,那么称X和Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,"tars"和"rats"是相似的(交换0与2的位置);"rats"和"arts"也是相似的,但是"star"不与"tars","rats",或&quo......
  • 2023.5.23
     1#include<iostream>2#include<iomanip>3usingnamespacestd;4floatPI=3.14159f;5classShape6{7public:8virtualfloatgetArea()=0;9};10classCircle:publicShape11{12public:13floatr;14float......
  • 2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X
    2023-05-23:如果交换字符串X中的两个不同位置的字母,使得它和字符串Y相等,那么称X和Y两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,"tars"和"rats"是相似的(交换0与2的位置);"rats"和"arts"也是相似的,但是"star"不与"tars","rats",或"a......