7.1补题记录

C.方豆子

题目链接:C-方豆子_牛客小白月赛75(重现赛)@XuSihan (nowcoder.com)

该题能用循环或者递归去解决,这里用递归,由图可以发现每一级豆子都是由上一级组成,所以从递归到1,n级豆子就会有1 << n - 1 行个一级豆子组成,具体看代码实现

#include<bits/stdc++.h>

using namespace std;

const int N = 1e6 + 10;

string a[10] = {"******","******","******","***...","***...","***..."};
string b[10] = {"......","......","......","...***","...***","...***"};
string ans[N];

void connect1(int x)//好豆
{
    for(int i = 0 ; i < 6 ; i ++ )
        ans[x + i] += a[i];
}

void connect2(int x)//坏豆
{
    for(int i = 0 ; i < 6 ; i ++ )
        ans[x + i] += b[i];
}

void dfs(int u , int x , int y) // u表示递归到第几级,x表示1为一级好豆子,0为一级坏豆子,y表示该该豆子需要放置的横坐标
{
    if(u == 1)//如果到第一级则在ans字符串后连接一级豆子
    {
        if(x == 1) connect1(y);
        else connect2(y);
        return ;
    }
    
    //每一级豆子分为四块
    //下部分的豆子,上部分有着1 << u - 2 个一级豆子
    //所以下半部分的坐标加上 (1 << u - 2) * 6;
    dfs(u - 1 , !x , y);
    dfs(u - 1 , !x , y);
    dfs(u - 1 , !x , y + (1 << u - 2) * 6);//符号<<表示向左移动几位,表示乘以2的几次方
    dfs(u - 1 , x , y + (1 << u - 2) * 6);
}
    
int main()
{
    int n;
    cin >> n;
    
    dfs(n , 1 , 0);
    
    for(int i = 0 ; i < 1 << n - 1 ; i ++ )
        for(int j = 0 ; j < 6 ; j ++ )
            cout << ans[i * 6 + j] << endl;
    
    return 0;
}

CF~

B.Maximum Strength

题目链接:Problem - B - Codeforces

题意:

给定区间 [l, r],你可以选择区间内的任何两个数将他们合为一个数,合并的规则:

将选定出的两个数的十进制中的每一位求差的绝对值,将所有位数的结果加起来就是合并出的数,求最大可以合并出的数。

贪心的考虑:找到 l, r 从最高位开始的第一位不相等的十进制位,r 和 l 的这一位交换,后面的一个全取 9,一个全取 0 即可。

#include <bits/stdc++.h>

using namespace std;

string n, m;

void solve() {
	cin >> n >> m;
	while(n.size() < m.size()) n = '0' + n;//补0
	int pos = n.size();
	for(int i = 0; i < n.size(); i ++ ) 
	{
		if(n[i] != m[i]) 
		{
			pos = i;
			swap(n[i], m[i]);//交换数值
			break;
		}
	}
	for(int i = pos + 1; i < n.size(); i ++ ) n[i] = '0', m[i] = '9';
	int ans = 0;
	for(int i = 0; i < n.size(); i ++ ) ans += abs(n[i] - m[i]);
	cout << ans << "\n";
}

int main()
{
	int t;
	cin >> t;
	while(t -- ) 
	    solve();
	return 0;
}

C. Game with Reversing

题目链接:Problem - C - Codeforces

大意~:A想结束快,B想时间长

             A变一个,B翻转一个;

由题意可以发现实际上Bob的操作无法影响到Alice的操作,所以直接计算Alice需要几步使字符串字符类型和数量相同,当Alice完成时,判断另一个数组为正序还是逆序。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
ll n, m, k;
string w, s;
void solve()
{
	cin >> n;
	
	cin >> w >> s;
	
	ll ans = 1e15;
	for(int k = 0; k < 2; k ++)
	{
		ll res = 0;
		for(int i = 0; i < n; i ++)
		{
			if(w[i] != s[i]) res ++;
		}
		
		if(res % 2 == k)
		{
// 当Alice操作完成时,若为正序,时间为2res,反正Alice等到Bob的一次操作使其变成正序
			ans = min(ans , res * 2);
		}
		else if(res % 2 != k && res > 0)
		{
			ans = min(ans , res * 2 - 1);
		}
		else 
		{
			ans = min(ans, (ll)2);
		}
		reverse(s.begin(), s.end());
	}
	cout << ans << endl;
}
int main()
{
    int T;
    cin >> T;
    while(T--)
         solve();
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATPOWER 7.1 是一个用于电力系统分析和仿真的开源软件包。它提供了一套功能强大的工具,用于解决各种电力系统问,包括潮流计算、潮流追踪、稳定性分析等。 MATPOWER 7.1 在电力系统分析和仿真方面有以下主要特点和功能: 1. 潮流计算:MATPOWER 7.1 可以通过牛顿拉夫逊法或快速潮流算法来计算电力系统的潮流。它可以计算节点电压、有功功率、无功功率和线路潮流等重要参数。 2. 潮流追踪:MATPOWER 7.1 可以进行潮流追踪分析,帮助用户了解电力系统的稳定性和可行性。潮流追踪可以用于研究大规模电力系统的稳态行为,并帮助解决传输网约束和功率平衡问。 3. 稳定性分析:MATPOWER 7.1 可以进行稳定性分析,包括小扰动稳定性和大扰动稳定性。它可以用于评估电力系统在故障或其他系统操作条件下的稳定性。 4. 扩展功能:MATPOWER 7.1 提供了一套灵活的扩展功能,用户可以基于其核心算法进行自定义开发。它支持用户自定义模型、扩展功能和算法。 MATPOWER 7.1 是一个功能强大、灵活且易于使用的电力系统分析和仿真软件包。它被广泛应用于电力系统规划、运行和市场分析等领域,为用户提供了一种高效、准确且可靠的方法来解决各种电力系统问。无论是研究人员还是电力系统运营商,都可以从MATPOWER 7.1 提供的功能和特点中获益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值