zoukankan      html  css  js  c++  java
  • 【ARC 127B】Ternary Strings(构造)

    Ternary Strings

    题目链接:ARC 127B

    题目大意

    要你构造 3n 个字符串,使得字符串都是由 0,1,2 组成,每个字符在每个字符串的同一位的出现次数都是 n 次。
    然后要你最小化你构造出来的字典序最大的字符串的字典序。

    思路

    首先考虑最大的字典序第一个肯定是 (2),然后我们剩下的就从最小的字典序依次网上。

    然后接着是要考虑如何分布第一位是 (1/0) 的情况。
    然后这里给出一种构造方法,其实你就只需要把除了第一位后面每个数都加一,如果变成了 (3) 那就是 (0)
    (就把你上面用字典序求的 (n) 个串都那么搞一遍)

    不按你发现这样没问题。
    然后就好啦。

    代码

    #include<map>
    #include<queue>
    #include<cstdio>
    #include<vector>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define ll long long
    
    using namespace std;
    
    int n, l;
    char c[50001][21], d[21];
    
    int main() {
    	scanf("%d %d", &n, &l);
    	
    	c[0][0] = '2';
    	for (int i = 1; i < l; i++)
    		c[0][i] = '0';
    	
    	memcpy(d, c[0], sizeof(d));//先搞出最大的字典序(从2开始的)
    	for (int i = 1; i < n; i++) {
    		int noww = l - 1;
    		while (noww >= 1 && d[noww] == '2') {
    			d[noww] = '0';
    			noww--;
    		}
    		if (noww >= 1) d[noww] = d[noww] + 1;
    		for (int j = 0; j < l; j++)
    			c[i][j] = d[j];
    	}
    	
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < l; j++)
    			putchar(c[i][j]);
    		putchar('
    ');
    	}
    	
    	for (int i = 0; i < n; i++) {//然后按我们的方法变换
    		c[i][0] = c[i][0] - 1;
    		for (int j = 1; j < l; j++)
    			if (c[i][j] == '2') c[i][j] = '0';
    				else c[i][j] = c[i][j] + 1;
    	}
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < l; j++)
    			putchar(c[i][j]);
    		putchar('
    ');
    	}
    	
    	for (int i = 0; i < n; i++) {
    		c[i][0] = c[i][0] - 1;
    		for (int j = 1; j < l; j++)
    			if (c[i][j] == '2') c[i][j] = '0';
    				else c[i][j] = c[i][j] + 1;
    	}
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < l; j++)
    			putchar(c[i][j]);
    		putchar('
    ');
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    centos 安装docker-ce
    quartz.net .netcore 定时任务部署到linux
    c# 获取linux 磁盘信息
    nginx 安装
    async await 理解
    Remote side unexpectedly closed network connection
    centos 安装。net
    yum 操作
    centos7下安装mysql5.7
    git 本地仓库版本无法从远程更新到本地
  • 原文地址:https://www.cnblogs.com/Sakura-TJH/p/ARC_127B.html
Copyright © 2011-2022 走看看