• KYOCERA Programming Contest 2022(AtCoder Beginner Contest 271)


    KYOCERA Programming Contest 2022(AtCoder Beginner Contest 271)

    A - 484558

    思路:进制转换
    没啥巧解,就十进制转十六进制

    #include
    using namespace std;
    #define int long long
    #define rep(i,a,n) for(int i=a;i<=n;i++)
    #define per(i,a,n) for(int i=n;i>=a;i--)
    #define pb push_back
    #define SZ(v) ((int)v.size())
    #define fs first
    #define sc second
    const int N=2e6+10,M=2e5;
    typedef double db;
    typedef pairpii;
    int n,m,k,Q,cnt,t;
    vectordel;
    int l[200010],l1[N],r[200010],r1[N];
    int prime[N];
    bool st[N];
    bool isPrime(int n)
    {
    	if (n <= 3)//当n不大于3时只有1不是素数
    		return n > 1;
    	if (n % 6 != 1 && n % 6 != 5)//只有6i+1和6i+5可能是素数
    		return false;
    	for (int i = 5; i <= sqrt(n); i += 6)
    	{
    		if (n % i == 0 || n % (i + 2) == 0)
    			return false;
    	}
    	return true;
    }
    mapmp;
    void solve() {	
    	int n;cin>>n;
    	int sum=0;
    	int x=n/16;
    	n%=16;
        for(int i=0;i<16;i++){
            if(i<=9)mp[i]=char(i+'0');
            else {
                mp[i]=(char)(i-10+'A');
            }
        }
    	cout<>t;
        t=1;
        while(t--)solve();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    B - Maintain Multiple Sequences

    思路:
    直接取出对应位置的值即可

    #include
    using namespace std;
    #define int long long
    #define rep(i,a,n) for(int i=a;i<=n;i++)
    #define per(i,a,n) for(int i=n;i>=a;i--)
    #define pb push_back
    #define SZ(v) ((int)v.size())
    #define fs first
    #define sc second
    const int N=2e5+10,M=2e5;
    typedef double db;
    typedef pairpii;
    int n,m,k,Q,cnt,t;
    vectordel;
    int l[200010],l1[N],r[200010],r1[N];
    int prime[N];
    bool st[N];
    bool isPrime(int n)
    {
    	if (n <= 3)//当n不大于3时只有1不是素数
    		return n > 1;
    	if (n % 6 != 1 && n % 6 != 5)//只有6i+1和6i+5可能是素数
    		return false;
    	for (int i = 5; i <= sqrt(n); i += 6)
    	{
    		if (n % i == 0 || n % (i + 2) == 0)
    			return false;
    	}
    	return true;
    }
    mapmp;
    void solve() {	
    	int n,m;
    	cin>>n>>m;
    	vectorg[N];
    	for(int i=1;i<=n;i++){
    	    int x;
    	    cin>>x;
    	    for(int j=1;j<=x;j++){
    	        int y;
    	        cin>>y;
    	        g[i].push_back(y);
    	    }
    	}
    	while(m--){
    	    int i,j;
    	    cin>>i>>j;
    	    j--;
    	    cout<>t;
        t=1;
        while(t--)solve();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    C - Manga

    思路:二分
    二分答案然后看 mid 是不是满足能构成 1到 mid里面的所有数,能就继续二分,输出答案即可

        #include
        using namespace std;
        #define int long long
        #define rep(i,a,n) for(int i=a;i<=n;i++)
        #define per(i,a,n) for(int i=n;i>=a;i--)
        #define pb push_back
        #define SZ(v) ((int)v.size())
        #define fs first
        #define sc second
        const int N=2e5+10,M=2e5;
        typedef double db;
        typedef pairpii;
        int n,m,k,Q,cnt,t;
        vectordel;
        int l[200010],l1[N],r[200010],r1[N],b[N];
        int prime[N];
        bool st[N];
        bool isPrime(int n)
        {
        	if (n <= 3)//当n不大于3时只有1不是素数
        		return n > 1;
        	if (n % 6 != 1 && n % 6 != 5)//只有6i+1和6i+5可能是素数
        		return false;
        	for (int i = 5; i <= sqrt(n); i += 6)
        	{
        		if (n % i == 0 || n % (i + 2) == 0)
        			return false;
        	}
        	return true;
        }
        unordered_mapmp;
        int f[110][10100];
        pii lst[110][10100];
        void dfs(int i,int j){
            if(i==0) return ;
            dfs(i-1,j-lst[i][j].first);
            if(lst[i][j].second==1) cout<<"H";
            else cout<<"T";
        }
        priority_queueq;
        bool check(int mid){
            int x=0,y=0;
            rep(i,1,mid){
                if(!mp[i])x++;
            }
            if(n-(mid-x)>=x*2)return true;
            else return false;
            //1 3 5 7 8 9
        }
        //int n;
        void solve() {	
        	cin>>n;
            vectora(n);
        	for(auto&i:a) {
        	    cin>>i;
        	    mp[i]++;
        	}
        	sort(a.begin(),a.end());
        	int l=0,r=n;
        	while(l>1;
        	    if(check(mid)){
        	        l=mid;
        	       //cout<<"l== "<>t;
            t=1;
            while(t--)solve();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78

    D - Flip and Adjust

    思路:动态规划
    类似于背包,然后就是判断他前面一个数能不能转换过来能就记录该值以及路径即可,然后dfs反向判断满足条件的路径

    #include
    using namespace std;
    #define int long long
    #define rep(i,a,n) for(int i=a;i<=n;i++)
    #define per(i,a,n) for(int i=n;i>=a;i--)
    #define pb push_back
    #define SZ(v) ((int)v.size())
    #define fs first
    #define sc second
    const int N=2e5+10,M=2e5;
    typedef double db;
    typedef pairpii;
    int n,m,k,Q,cnt,t;
    vectordel;
    int l[200010],l1[N],r[200010],r1[N],a[N],b[N];
    int prime[N];
    bool st[N];
    bool isPrime(int n)
    {
    	if (n <= 3)//当n不大于3时只有1不是素数
    		return n > 1;
    	if (n % 6 != 1 && n % 6 != 5)//只有6i+1和6i+5可能是素数
    		return false;
    	for (int i = 5; i <= sqrt(n); i += 6)
    	{
    		if (n % i == 0 || n % (i + 2) == 0)
    			return false;
    	}
    	return true;
    }
    mapmp;
    int f[110][10100];
    pii lst[110][10100];
    void dfs(int i,int j){
        if(i==0) return ;
        dfs(i-1,j-lst[i][j].first);
        if(lst[i][j].second==1) cout<<"H";
        else cout<<"T";
    }
    priority_queueq;
    void solve() {	
    	int n,m;cin>>n>>m;
    	for(int i=1;i<=n;i++){
    	    cin>>a[i]>>b[i];
    	}
    	f[0][0]=1;
    	for(int i=1;i<=n;i++){
    	    for(int j=0;j<=m;j++){  
    	        if(j>=a[i]){
    	            if(f[i-1][j-a[i]]){f[i][j]=1;lst[i][j]={a[i],1};}
    	        }
    	        if(j>=b[i]){
    	            
    	            if(f[i-1][j-b[i]]){f[i][j]=1;lst[i][j]={b[i],2};}
    	        }
    	    }
    	}
    	if(f[n][m]){
    	    cout<<"Yes\n";
    	    
    	}
    	else {
    	    cout<<"No";
    	    return ;
    	}
    	dfs(n,m);
    }
    signed main(){
        //cin>>t;
        t=1;
        while(t--)solve();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
  • 相关阅读:
    如何从SEO角度写好原创文章并吸引人
    软件流程和管理(六):Project Scheduling
    我的创作纪念日
    抖音矩阵系统,抖音矩阵系统源码。
    压缩包加密、解密
    信息收集工具 -- weblive
    从一到无穷大 #3 对象存储.浅谈
    Symfony 简介
    数仓工具—Hive进阶之查询最佳实践(19)
    Python实现猎人猎物优化算法(HPO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战
  • 原文地址:https://blog.csdn.net/qq_64289808/article/details/132718010