5月28号总结

刷题记录

1.A. Phone Desktop

输入:

11
1 1
7 2
12 4
0 3
1 0
8 1
0 0
2 0
15 0
8 2
0 9
 

输出:

1
1
2
2
1
1
0
1
1
2
5
 

题意:题目给我们1x1和2x2的图标个数,让我们求最少需要多少个5x3的屏幕。

思路:当只看2x2的图标个数n时,最少需要的屏幕个数为(n+1)/2,查看是否需要添加屏幕,要看屏幕流出的1x1的个数够不够用。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
void solve()
{
	int x,y;
	cin>>x>>y;
	int re=(y+1)/2;
	int k;
	if(y%2==0)
	k=re*7;
	else
	k=(re-1)*7+11;
	x-=k;
	if(x>0)
	{
		int v=x/15+(x%15==0?0:1); 
		cout<<re+v<<"\n";
	}
	else
	{
		cout<<re<<"\n";
	}
	
	
}
int main()
{
	int t;
	cin>>t;
	while(t--){
		solve();
	}
}

2.B. Symmetric Encoding

输入:

5
10
serofedsoc
3
ttf
9
tlrhgmaoi
1
w
15
hnndledmnhlttin
 

输出:

codeforces
fft
algorithm
w
meetinthemiddle
 

思路:找到给出字符串按小到大的所以元素,再按照i对应n-i-1的关系,用map保存对应关系,遍历一遍题目串,更改每个元素为对应关系。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
void solve()
{
	int n;
	cin>>n;
	string s,t,v;
	cin>>s;
	t=s;
	sort(t.begin(),t.end());
	
	for(int i=0;i<n;i++){
		if(t[i]!=t[i+1]) v+=t[i];
	}
	map<char,char>q;
	for(int i=0;i<v.size();i++){
		q[v[i]]=v[v.size()-1-i];
	}
	for(int i=0;i<n;i++){
		
		s[i]=q[s[i]];
	}
	cout<<s<<"\n";
}
int main()
{
	int t;
	cin>>t;
	while(t--){
		solve();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值