首页 > 其他分享 >winter week6 day1

winter week6 day1

时间:2024-02-26 22:11:53浏览次数:188  
标签:typedef const winter int double long day1 define week6

2024 蓝桥杯模拟赛3(div1+div2)

A

[传智杯 #3 决赛] 序列

思路:暴力枚举

查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    int n,k;
    cin>>n>>k;
    vector<int>a(n);
    for(int i=0;i<n;++i)cin>>a[i];
    int ans=0;
    for(int i=0;i<n;++i){
        for(int j=i+1;j<n;++j)
            if(a[i]*a[j]<=k)ans++;
    }
    cout<<ans;
}

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

B

[蓝桥杯 2022 省 B] 刷题统计

思路:二分或直接算

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    int a,b,n;
    cin>>a>>b>>n;
    int ans,c=5*a+2*b;
    ans=n/c*7;
    n%=c;
    if(n<=a*5)ans+=(n+a-1)/a;
    if(n>a*5)ans+=5,n-=5*a,ans+=(n+b-1)/b;
    cout<<ans;
}

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

C

[蓝桥杯 2015 省 B] 移动距离

思路:由编号求位置,由位置求距离

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    int w,m,n;
    cin>>w>>m>>n;
    PII a,b;
    auto P=[w](int x){
        PII y;
        y.first=(x+w-1)/w;
        if(y.first%2){
            y.second=x%w;
            if(y.second==0)y.second=w;
        }else{
            x%=w;
            if(x==0)x=w;
            y.second=w-x+1;
        }
        return y;
    };
    a=P(m),b=P(n);
    int ans=abs(a.first-b.first)+abs(a.second-b.second);
    cout<< ans;
}

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

D

[蓝桥杯 2020 国 C] 天干地支

思路:60年一个轮回,为了方便计算,把年数替换成不小于2020的最小的数,之后枚举即可

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
string a[10]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
string b[12]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
void solve() {
    int n;
    cin>>n;
    if(n<2020)
        while(n<2020)n+=60;
    if(n>=2080)
        while(n>=2080)n-=60;
    int x=6,y=0;
    for(int i=2021;i<=n;++i){
        x++,y++;
        x%=10,y%=12;
    }
    cout<<a[x]<<b[y];
}

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

E

[蓝桥杯 2016 省 AB] 四平方和

思路:枚举ijk,再由ijkn判断第4个数是否可行

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
void solve() {
    int n;
    cin>>n;
    for(int i=0;i*i<=n;++i){
        for(int j=0;i*i+j*j<=n;++j){
            for(int z=0;i*i+j*j+z*z<=n;++z){
                int x=n-i*i-j*j-z*z;
                if(x== (int)::sqrt(x)* (int)::sqrt(x)){
                    cout<<i<<' '<<j<<' '<<z<<' '<<::sqrt(x);
                    return ;
                }
            }
        }
    }
}

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

F

[蓝桥杯 2019 国 C] 最长子序列

思路:保证了要连续且是前缀,可以贪心的找最靠前的相同的字符

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
void solve() {
    string a,b;
    cin>>a>>b;
    int ans=0;
    int x=0;
    for(int i=0;i<b.size();++i){
        while(x<a.size()&&a[x]!=b[i])x++;
        if(x>=a.size()){
            ans=i;
            break;
        }
        x++;
        if(x==a.size()){
            ans=i+1;
            break;
        }
        if(i==b.size()-1){
            ans=b.size();
        }
    }
    cout<<ans;
}

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

G

[蓝桥杯 2017 国 C] 合根植物

思路:已经给了编号,直接并查集就可以

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
vector<int>fa;
int find(int x){
    if(x!=fa[x])fa[x]=find(fa[x]);
    return fa[x];
}
void solve() {
    int n,m,k;
    cin>>n>>m>>k;
    fa=vector<int>(n*m+1);
    for(int i=1;i<=n*m;++i)fa[i]=i;
    for(int i=0;i<k;++i){
        int x,y;
        cin>>x>>y;
        x=find(x),y=find(y);
        if(x!=y)fa[x]=y;
    }
    set<int>se;
    for(int i=1;i<=n*m;++i){
        int x=find(i);
        se.insert(x);
    }
    cout<<se.size();
}

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

H

[蓝桥杯 2023 国 B] 班级活动

思路:分类讨论。一编号的人数大于2的话,多出的人都要改,一编号人数为1的话,所有相同情况的人可以只改一半

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    int n;
    cin>>n;
    map<int,int>mp;
    for(int i=0;i<n;++i){
        int x;
        cin>>x;
        mp[x]++;
    }
    int a=0,b=0;
    for(auto[x,y]:mp){
        if(y==1)a++;
        else if(y>2)b+=y-2;
    }
    if(a>=b){
        cout<<(a+b)/2;
    }else{
        cout<<b;
    }
}

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

I

[蓝桥杯 2013 国 C] 危险系数

思路:若一个点为关键点,说明x到y的每条路径都经过它,统计下x到y的路径数,已经经过每个点的次数,当一个点的次数等于总路径数说明其为关键点

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
vector<vector<int>>ve;
vector<int>num,vis;
int n,m,all;
int st,ed;
void dfs(int u){
    if(u==ed){
        all++;
        for(int i=1;i<=n;++i){
            if(vis[i])num[i]++;
        }
        return ;
    }
    for(auto v:ve[u]){
        if(!vis[v]){
            vis[v]=1;
            dfs(v);
            vis[v]=0;
        }
    }
}
void solve() {
    cin>>n>>m;
    vis=num=vector<int>(n+1);
    ve=vector<vector<int>>(n+1);
    for(int i=0;i<m;++i){
        int x,y;
        cin>>x>>y;
        ve[x].push_back(y),ve[y].push_back(x);
    }
    cin>>st>>ed;
//    num[st]=1;
    vis[st]=1;
    dfs(st);
    int ans=0;
    for(int i=1;i<=n;++i){
        if(i!=st&&i!=ed&&num[i]==all)ans++;
    }
    if(all)cout<<ans;
    else cout<<-1;
}

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

J

[蓝桥杯 2019 国 C] 数正方形

思路:可以按正方形的大小进行分类,对于给定边长i的正方形a,可以发现四点均在a的边上的正方形恰好有i个,在长度为n的正方形里有(n-i+1)*(n-i+1)个这样的a,即为i*(n-i+1)*(n-i+1),统计所有的i的i*(n-i+1)*(n-i+1)

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    int n,ans=0;
    cin>>n;
    n--;
    for(int i=1;i<=n;++i){
        ans=(ans+i*(n-i+1)*(n-i+1))%mod;
    }
    cout<<ans;
}

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

K

[蓝桥杯 2023 省 A] 更小的数

思路:区间dp,对于区间[i,j],若s[i]和s[j]不相等直接由大小关系判断区间[i,j]是否可以,若相等,由[i+1,j-1]判断。用区间dp即可

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

void solve() {
    string s;
    cin>>s;
    int n=s.size();
    s.insert(s.begin(),' ');
    vector<vector<int>>f(n+1,vector<int>(n+1));
    for(int i=2;i<=n;++i){
        for(int j=1;j+i-1<=n;++j){
            if(s[j]>s[j+i-1])f[j][j+i-1]=1;
            else if(i!=2&&s[j]==s[j+i-1])f[j][j+i-1]=f[j+1][j+i-2];
        }
    }
    int ans=0;
    for(int i=1;i<n;++i)
        for(int j=i+1;j<=n;++j)
            ans+=f[i][j];
    cout<<ans;
}

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

L

[蓝桥杯 2021 省 AB2] 国际象棋

思路:可以看到n最大为6,且每一列的状态只与前一列和前前一列有关,每一列的状态可用二进制表示,用四维数组分别记录当前列数,前前列状态,当前列状态,已用棋子数,然后更新状态。要判断是否冲突可以对二进制进行移位

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,mod=1e9+7,Mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-9;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
int f[101][64][64][21];
void solve() {
    int n,m,kk;
    cin>>n>>m>>kk;
    vector<int>cnt(1<<n);
    auto num=[](int x){
        int s=0;
        while(x){
            if(x&1)s++;
            x>>=1;
        }
        return s;
    };
    for(int i=1;i<1<<n;++i)cnt[i]=num(i);
    for(int i=0;i<1<<n;++i){
        for(int j=0;j<1<<n;++j)
            if(cnt[i]+cnt[j]<=kk)f[2][i][j][cnt[i]+cnt[j]]=1;
    }
    for(int i=2;i<=m;++i){
        for(int j=0;j<1<<n;++j){
            for(int c=cnt[j];c<=kk;++c){
                for(int x=0;x<1<<n;++x){
                    for(int y=0;y<1<<n;++y){
                        if(cnt[j]+cnt[x]+cnt[y]>kk)continue;
                        if(x&(y<<2)||x&(y>>2)||x&(j<<1)||x&(j>>1)||y&(j<<2)||y&(j>>2))continue;
                        f[i][y][j][c]=(f[i][y][j][c]+f[i-1][x][y][c-cnt[j]])%mod;
                    }
                }
            }
        }
    }
    int ans=0;
    for(int i=0;i<1<<n;++i){
        for(int j=0;j<1<<n;++j){
            ans=(ans+f[m][i][j][kk])%mod;
        }
    }
    cout<<ans;
}

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

标签:typedef,const,winter,int,double,long,day1,define,week6
From: https://www.cnblogs.com/bible-/p/18035708

相关文章

  • Day1
    Markdown学习标题一级:#+空格+标题名二级:##+空格+标题名三级:###+空格+标题名……以此类推字体粗体:文字内容斜体:文字内容删除线:文字内容引用+文字内容分割线三个-或三个*图片超链接[点击跳转百度](必应(bing.com))列表有序列表ABC……无序列表A......
  • 腾飞营 day1(1) 基础算法
    讲师:王浩清。P6600考虑枚举T中心的位置。对于中心点,找出最长的横向长度和纵向长度,即维护每个位置向左/向右/向下有多少连续的1。重要的一步转换:对于所有\((h,w)\),提前建出一个\(h\timesw\)的矩阵,若\((h,w)=1\)代表是一组合法的,否则不合法。对于上界的限制,可以转换为......
  • winter 2024 第五周周报
    内容day1打的牛客寒假4,有一道挺可惜的吧,J题后面补的,一道三点共线+状压dp,没怎么学几何的东西,然后也没有准备几何的板子(就连三点共线的板子都没找到qwq)。还有F题,赛时没有一点思路看别人的代码说实话也看不太懂,一道dp吧,感觉自己dp这方面真的不行qwqday3https://www.cnblogs.com/b......
  • winter week5 day3
    2024牛客寒假算法基础集训营5Amutsumi的质数合数思路:1既不是质数也不是合数查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128#definedoublelongdoubletypedefpair<int,int>PII;typedefpair<string,int>PSI;typ......
  • 暑期集训 Day10 —— 模拟赛复盘
    ${\color{Green}\mathrm{Problem\0:water}}$题如其名,可以用单调队列做,但是数据范围直接暴力枚举每一高度就行。最不会打错的,还是暴力,所以用暴力。${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{Green}\mathr......
  • 暑期集训 Day12 —— 模拟赛复盘
    ${\color{Green}\mathrm{Problem\1:Subarray}}$Map.${\color{Green}\mathrm{Problem\2:小z玩游戏}}$数学题YYDS。我的做法是:首先枚举x的所有二进制位,找里面的\(1\),由于y要比x小,于是我们可以把y的当前位变为\(0\),然后后面的位从全0到全1,用前缀和统......
  • 暑期集训 Day11 —— 模拟赛复盘
    ${\color{Green}\mathrm{Problem\1:Subarray}}$签到失败...直接二进制分组,找出所有二进制位=0的方法。死因:二进制分组没想出来...${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{White}\mathrm{}}$${\color{Green}\mathrm{Problem\2:......
  • winter week5 day5
    2024牛客寒假算法基础集训营6A思路:暴力宇宙的终结查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128#definedoublelongdoubletypedefpair<int,int>PII;typedefpair<string,int>PSI;typedefpair<string,stri......
  • day10- 条件语句
    Python代码如果不做其他处理,是自上往下执行的。但是在我们实际场景中,是需要做一些判断,所以用到了Python的条件判断语句可以根据不同的条件执行不同的代码块 包含if、elif、else关键字每句判断语句使用冒号:结尾,使用缩进划分语句块,相同缩进数的语句组成一个语句块。......
  • Linux学习-day1
    了解Linux运维。Linux运维在互联网行业中处于维护与优化作用,保障网站、服务器、程序等正常运转。2.画图网站:https://excalidraw.com/3.安装VMware虚拟机与centos系统。阿里云镜像下载地址:https://developer.aliyun.com/mirror/安装步骤:准备好镜像文件:DVD(大约4GB,包含常......