首页 > 其他分享 >SDNU_ACM_ICPC_2024_Winter_Practice_1st 赛后

SDNU_ACM_ICPC_2024_Winter_Practice_1st 赛后

时间:2024-02-20 12:44:05浏览次数:35  
标签:Winter int ll Practice cin ACM -- long num1

A:

题目

给出t个n,对每个n,令n=x+y+z,x|n,y|n,z|n,输出最大的xyz的值。

解法

打表 找规律

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        ll n;
        cin>>n;
        if(n>=3 && (n%3 == 0 || n%4 == 0 ))
        {
            if(n%3==0)
            {
                ll tmp = n/3;
                cout<<tmp*tmp*tmp<<'\n';
            }
            else
            {
                ll tmp = n/4;
                cout<<tmp * tmp * tmp * 2<<'\n'; 
            }
        }
        else 
        {
            cout<<-1<<'\n';
        }
    }
    return 0;
}

B

题目大意

左右括号刚好匹配的串成为平衡串,其中 1.空串 2.两个平衡串相接的串 3.左右同时分别加上左括号、右括号的串 也是平衡串,求一个串中最长平衡串的长度。

解法

所给出的串先按串中左右括号的数量排序,然后遍历整个串,寻找要求的最大值。

#include<bits/stdc++.h>
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
struct node
{
    int l,r,nu;
    bool operator < (const node& aa)const
    {
        if(l<=r&&aa.l>aa.r) return false;
        if(l>r&&aa.l<=aa.r) return true;
        if(r>=l&&aa.r>=aa.l) return l>aa.l;
        return r<aa.r;
    }
}strs[100010];
char str[100010];
int main()
{
    ios;
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
        {
           cin>>str;
           int len=strlen(str);
           int num1=0,num2=0,num=0;
           for(int j=0;j<len;j++)
           {
               if(str[j]=='(')
                    num1++;
               else 
               {
                    if(num1)
                    num++,num1--;
               else
                    num2++;
               }
            }
            strs[i].l=num1;
            strs[i].r=num2;
            strs[i].nu=num;
        }
        sort(strs,strs+n);
        ll ans=0;
        ll ln=0;
        for(int i=0;i<n;i++)
        {
           ans+=strs[i].nu;
           if(ln&&strs[i].r)
           {
               if(ln>strs[i].r)
               {
                   ans+=strs[i].r;
                   ln-=strs[i].r;
               }
               else ans+=ln,ln=0;
           }
           ln+=strs[i].l;
        }
        cout<<ans*2<<'\n';
    }
    return 0;
}

C

题目大意

给出3n个点,求可以构造出n个不重叠三角形的点的标号

解法

题目保证了任意三点不共线,只要按照每个点的x、y坐标排序,便必然不会出现重叠的部分,然后三个为一组,即可得到目标三角形。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100050;
struct node
{
    int x,y,pos;
};

node a[maxn];

bool cmp(node n,node m)
{
    if(n.x == m.x) return n.y < m.y;
    return n.x<m.x;
}

int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i = 1;i<=3*n;i++)
        {
            cin>>a[i].x>>a[i].y;
            a[i].pos = i;
        }
        sort(a+1,a+n*3+1,cmp);
        for(int i = 1;i<=3*n;i+=3)
        {
            cout<<a[i].pos<<' '<<a[i+1].pos<<' '<<a[i+2].pos<<'\n';
        }
    }
    return 0;
}

J

题目大意:

解法

正反对伤害各自预处理一个前缀和数组,使用时查询即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100050;
typedef long long ll;
ll mp[maxn],pre[maxn],repre[maxn];

int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n,m;
    cin>>n>>m;
    mp[0]=0,mp[n+1]=0;
    for(int i = 1;i<=n;i++) cin>>mp[i];
    for(int i = 1;i<=n;i++)
    {
        if(mp[i]<mp[i-1]) pre[i] = mp[i-1]-mp[i];
        else pre[i]=0;
    }
    for(int i = 1;i<=n;i++) pre[i]+=pre[i-1];
    for(int i = n;i>0;i--)
    {
        if(mp[i]<mp[i+1]) repre[i] = mp[i+1] - mp[i];
        else repre[i] = 0;
    }
    for(int i = n;i>0;i--) repre[i] += repre[i+1];
    while(m--)
    {
        int s,e;
        cin>>s>>e;
        if(s<e) cout<<pre[e] - pre[s]<<'\n';
        else cout<<repre[e] - repre[s]<<'\n';
    }
    return 0;
}

K

题目大意

时区转化

解法

注意读入方式以及数据处理方式即可。
记得交C++,不然会tle到怀疑人生。

#include<iostream>
using namespace std;
int main()
{
    int t;
    scanf("%d",&t);
    int x,y;
    while(t-- && ~(scanf("%d %d ",&x,&y)) )
    {
        int num1,num2;
        double cha;
        scanf("UTC%lf",&cha);
        num1 =cha;
        cha *=10;
        num2 = (int)cha % 10;
        num1 = 8-num1;
        x-=num1;
        num2*=6;
        y+=num2;
        if(y>=60)
        {
            y%=60;
            x++;
        }
        else if(y<0)
        {
            y+=60;
            x--;
        }
        x+=24;
        x%=24;
        printf("%02d:%02d\n",x,y);
    }
    return 0;
}
----------

标签:Winter,int,ll,Practice,cin,ACM,--,long,num1
From: https://www.cnblogs.com/Allswy/p/18022858

相关文章

  • winter 2024 第三四周周报
    内容week3day1https://www.cnblogs.com/bible-/p/18018423这天是打寒假牛客2,请假了后面补的题,补了10道吧,感觉这些题花点时间都是可以写的,但是赛时真的很容易被卡,板子题也挺多,线段树、树状数组、字典树(太久不写有点忘了)week3day3https://www.cnblogs.com/bible-/p/18011488打......
  • SMU Winter 2024 div2 ptlks的周报Week 3(2.12-2.18)
    这周主要加强了对知识点的掌握。P10161[DTCPC2024]小方的疑惑10从题目可以得知a个连续括号贡献为a(a+1)/2,代价为2a。要求总贡献恰为k,且代价不高于n。一开始我想到了模拟,先取一个贡献低于k最大的a,剩下的再直接在外面套括号,结果wa。又想到可以分出多个a来组成k,就用递归,每次......
  • winter week3 day1
    2024牛客寒假算法基础集训营2ATokitsukazeandBracelet#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128#definedoublelongdoubletypedefpair<int,int>PII;typedefpair<string,int>PSI;typedefpair<stri......
  • 安卓逆向环境指北 rk3588 orangepi5b macM1 cuttlefish redroid
    省流安卓现在有若干种方案买个pixel6真机随便刷rom多,文档直接看google官方的即可缺点贵刷砖了难救windows的安卓模拟器傻瓜式部署但是安卓版本低特征多跑不了arm的soAVDwindowsormacorlinux有多个安卓版本但是基本没办法自定义内核想自定义内核再替换......
  • winter 2024 第二周周报
    内容winterweek2day1这套题复习了最短路,主要是dp,都是比较好推的dp,还是要多写dp吧,感觉写dp用的时间太久了day2这天是ccf的测试赛,测完就练了套河南大学联赛,10题看当时榜可能第八,只能说队友太给力了。写的那道l感觉挺好想的求方案数,刚开始也是在猜结论,没有想着去好好推qwq,后面......
  • SMU Winter 2024 div2 ptlks的周报Week 2(1.29-2.4)
    这周学习到的知识点有斯特林数(F鸡数题!)F鸡数题!思路第二类斯特林数代码#include<bits/stdc++.h>#defineintlonglong#defineMOD1000000007usingnamespacestd;intn,m,f[100005],fi[100005];intqpow(inta,intn){ intans=1; while(n){ if(n&1){ ......
  • ACM基础数论笔记
    基础数论部分整除定义设\(a,b\inZ,a\neq0,若\existq\inZ使得b=aq\),则b可被a整除,记作\(a\midb\),称b是a的倍数,a是b的约数不能整除\(a\nmidb\)定理\(a\mid{b}\iff-a\mid{b}\iffa\mid{-b}\iff|a|\mid|b|\)\(a\midb且b\midc\Rightarrowa\midc\)\(a\midb且a......
  • ACM常用模板
    usefulskill连续区间求和llsum(lll,llr){return(l+r)*(r-l+1)/2;}内置位运算__builtin_ffs(x):返回x中最后一个为1的位是从后向前的第几位,如__builtin_ffs(0x789)=1,__builtin_ffs(0x78c)=3。于是,__builtin_ffs(x)-1就是x中最后一个为1的位的位置。__buil......
  • winter 2024 第一周周报
    训练内容winter2024day1题解https://www.cnblogs.com/bible-/p/17980600算是考完试后第一场正式训练,练的蓝桥杯,这场不算难打打恢复下状态 winter2024day2题解https://www.cnblogs.com/bible-/p/17983616组队vp了23年新疆那场,6题第三(队友太厉害了qwq),题基本补了。感觉J......
  • 第一周寒假acm训练总结
    本周训练让我切身体会了算法的魅力和学习需求,还有很多的算法需要我去掌握。这是其中我印象较为深刻的一道题P1048[NOIP2005普及组]采药我的理解是,将草药一个一个放入背包中,如果放入时超过了限重,则最佳方案为不放入,即dp[i-1][j]=dp[i][j];反之则判断放入的方案和不放入的方案......