首页 > 其他分享 >河南萌新联赛2024第(一)场:河南农业大学

河南萌新联赛2024第(一)场:河南农业大学

时间:2024-07-17 20:56:50浏览次数:15  
标签:return ve int 河南 long 2024 solve 萌新 define

造数
\(25-24-12-6-3-2-0\)
\(11-10-5-4-2-0\)
1.观察上面的例子可以发现,每个数如果是偶数直接除二,如果是奇数就减一,这样得到的次数最少

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};
int a[35];


void solve()
{
    int n;cin>>n;
    int res=0;
    while(n>2)
    {
       if(n%2!=0)
       {
           res++;
           n--;
           continue;//这个continue别忘了 不然res会多加一次
       }
       n/=2;
        res++;
    }
    if(n==2||n==1) res++;
    cout<<res;
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

两难抉择
1.判断一下从大到小排序后的第一个元素,在操作1下大,还是操作2下大即可
2.但是别把操作中的x当成ve【0】了,x的范围是【1,n】,而不是【a1,an】

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};
int a[35];


void solve()
{
    int n;cin>>n;
    int sum=0;
    vector<int>ve(n);
    int fla=0;
    for(int i=0;i<n;i++) {
        cin>>ve[i];
    }
    sort(allr(ve));
    if(ve[0]*n>(ve[0]+n)){
        ve[0]=ve[0]*n;
        
    }
    else ve[0]=ve[0]+n;
    for(int i=0;i<n;i++) sum+=ve[i];
    cout<<sum;
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

图上计数(Easy)
1.直接算有几个顶点,然后这些顶点分为两部分乘积要最大,偶数则为(n/2)✖️(n/2),奇数则为(n/2)✖️(n/2+1)

void solve()
{
    int n,m;
    cin>>n>>m;
    int ans=0;
    while(m--)
    {
        int xx,yy;cin>>xx>>yy;
    }
    
    if(n&1) ans=(n/2)*(n/2+1);
    else ans=(n/2)*(n/2);
    cout<<ans;
    
}

除法移位
1.其实本质上也是个贪心,找能够移动的依次最大数即可,就是按从大到小找,尽量把大的往第一位挪即可
2.但是注意重复数这种情况,比如1 2 9 9 8,应该移动后面这个次数更少,当然这题是因为我的排序方式需要考虑这个
3.我是以点对的方式,x存值,y存位置,然后按照从大到小派,值相同按照序号从大到小排,然后按顺序遍历找满足条件的即可

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};
int a[35];
bool cmp(pii a,pii b)
{
    if(a.x!=b.x)return a.x>b.x;
     return a.y>b.y;
}
void solve()
{
    int n,m; cin>>n>>m;
    vector<pii>ve(n);
    for(int i=0;i<n;i++)
    {
        cin>>ve[i].x;
        ve[i].y=i;
    }
    sort(all(ve),cmp);
    int ans=0;
    if(ve[0].y==0){
        cout<<0;
        return;
    }
    for(int i=0;i<n;i++)
    {

            if(ve[i].y!=0&&n-ve[i].y<=m){
                ans=n-ve[i].y;
                break;
            }
    }
    //for(auto t:ve) cout<<t.x<<" "<<t.y<<endl;
    cout<<ans; 
    
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
 
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

两难抉择新编
1.当n最大为2e5时,总的次数也才2472133,所以肯定满足暴力的条件
2.其次就是异或的一些小知识要知道,两个相同的数异或,相当于消除这个数

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin()+1,v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};

void solve()
{
    int n; cin>>n;
    int sum=0;
    vector<int>ve(n+1);
    for(int i=0;i<n;i++)
    {
        cin>>ve[i];
        sum^=ve[i];
    }
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n/i;j++)
        {
            ans=max(ans,sum^ve[i-1]^(ve[i-1]+j));//两个相同的数异或为0相当于把a【i-1】转化为a【i-1】+j
            ans=max(ans,sum^ve[i-1]^(ve[i-1]*j));
        }
    }
    
    cout<<ans;
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

旅途的终点
1.贪心的思想,用k次把耗费体力多的遍历掉,然后再检查遍历到多少个国家时sum>=m即可

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};

void solve()
{
    int n,m,k; cin>>n>>m>>k;
    vector<int>ve(n);
    priority_queue<int,vector<int>,greater<int> >q;
    for(int i=0;i<n;i++){
        cin>>ve[i];
    }
    int sum=0;
    for(int i=0;i<n;i++)
    {
        q.push(ve[i]);
        if(q.size()>k)//因为队列是从小到大,当放的个数大于k个相当于这k个放到底部了
        {//所以当国家数少于k个时,直接遍历完输出n了
            sum+=q.top();
            q.pop();
        }
        if(sum>=m)
        {
            cout<<i;
            return;
        }
    }
     cout<<n;
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

标签:return,ve,int,河南,long,2024,solve,萌新,define
From: https://www.cnblogs.com/swjswjswj/p/18307364

相关文章

  • 2024.7.17
    2024.7.17【我们必须知道,我们必将知道】Wednesday六月十二P5999[CEOI2016]kangaroo//2024.7.17//bywhite_ice//P5999[CEOI2016]kangaroo#include<bits/stdc++.h>usingnamespacestd;#defineitnlonglong#defineintlonglongconstexprintoo=4003;co......
  • 河南萌新联赛2024第(一)场:河南农业大学
    A造数思路:将n看成二进制,倒着操作将n变为0即可赛时的想法也是看成二进制,正着从0加到n,乘2就是向前移位,加1就是把0变1,加2就是添一个1...(还是倒着好想些)voidsolve(){intn;cin>>n;if(n==0){cout<<0;return;}if(n==1......
  • 2024.7.17 鲜花
    極私的極彩色アンサー-TOGENASHITOGEARI——fromK*(K8)我怎么每天早上补昨天没写完的鲜花。算了,放到今天吧。书接上回发现2开了,和幂次没关系了。发现有\(b-a+1\)个数,猜到是区间。考虑\(p\)和分布位置,可知是质数。线性筛即可。910.值域偏大,可以用Miller_......
  • SMU Summer 2024 Contest Round 4
    1.HandV原题链接:http://162.14.124.219/contest/1008/problem/B二进制枚举行列即可查看代码#include<bits/stdc++.h>#defineintlonglong#definePIIpair<int,int>usingnamespacestd;intn,m,k;chara[10][10];signedmain(){ios::sync_with_stdio(fals......
  • 2024-07-17 如何在vscode部署你的代码块,从而在新建页面时能快速搭建模板(windows环境)
    步骤一:打开vscode,按住ctrl+shif+p唤出命令窗口 步骤二:在窗口中输入命令,并回车Preferences:OpenUserSnippets 对,就是这个代码片段,接着输入你想添加代码的某某语言or脚本,比如我要添加vue的代码片段输入vue,回车,会显示vue.json文件出来给你更改,我的是这样 注意:如果你......
  • 2024-07-17 搭建一个node+express服务器,并把静态资源部署到该服务器(本地开发)
    前言:请确保你已安装了node,没有你得先装这个。步骤一://创建文件夹mkdirexpress-node//创建完了进入该文件夹cdexpress-node//初始化npminit-y//安装expressnpmiexpress前提工作都准备好后,在express-node文件夹里新建文件server.js,作为启动服务器的入口文件......
  • 2024.7.15 近期练习
    P3488[POI2009]LYZ-IceSkates我们对于鞋码为\(x\)的人,贪心地,显然先把鞋小的给他穿。所以就有了一个暴力的检验方法:从左往右扫,并对应修改。但是这样太慢。这是一个二分图匹配问题,考虑Hall定理。对于任意\(1\lel\ler\len\),当\(sum(a_l\sima_r)\le(r-l+1+d)k\)时合......
  • Goby漏洞发布 | CVE-2024-4879 ServiceNowUI /login.do Jelly模板注入漏洞【已复现】
    漏洞名称:ServiceNowUI/login.doJelly模板注入漏洞(CVE-2024-4879)EnglishName:ServiceNowUI/login.doInputValidationVulnerability(CVE-2024-4879)CVSScore:9.3漏洞描述:ServiceNow是一个业务转型平台。通过平台上的各个模块,ServiceNow可用于从人力资源和员工管理到自动......
  • NOI2024游记
    试图性的写一下游记,本来都懒得写了,但是由于太戏剧性了就还是写一下吧Day-?记不太清了,写一部分把由于要提前到重庆熟悉环境,所以我们就都来了来的这段时间是跟着nfls打模拟赛+UNR第一天打的超级好,哈哈,排名12/70+然后就非常高兴第二天和第三天是UNR,打的屁也不是,混了个Cu就滚了......
  • 常用十大加密软件排行榜丨2024好用的加密软件推荐
    2023年7月,中国人民大学的一位硕士毕业生盗取了该校2014级到2022级学生的大量个人隐私信息,包括照片、姓名、学号、籍贯等,并制作成网站,供人搜索浏览甚至颜值打分。该事件引发了对个人隐私保护和数据安全的广泛关注,突显了加密软件在防范数据泄露中的重要性。随着科技的发展,越来......