Codeforces Round #836 (Div. 2)

A. 把字符串再反正输出一遍即可

#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=1e6+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
   ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
} 
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;
bitset<N> vis;
bool ok;ll pre[M];

void solve()
{
	string s;cin>>s;
	cout<<s;
	reverse(s.begin(),s.end());
	cout<<s;
	cout<<'\n';
}
signed main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
	int t;cin>>t;
	//int t=1;
	while(t--){
		solve();
	}
}  

B, 维护一个1 2 3 即可

#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=1e6+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
   ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
} 
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;
bitset<N> vis;
bool ok;ll pre[M];

void solve()
{
	cin>>n;
	if(n&1){
		for(int i=1;i<=n;i++)cout<<3<<" ";
	} 
	else{
		cout<<1<<" "<<3<<" ";
		for(int i=1;i<=n-2;i++)cout<<2<<" ";
	}
	cout<<'\n';
}
signed main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
	int t;cin>>t;
	//int t=1;
	while(t--){
		solve();
	}
}  

C. 最差的情况肯定是n在x==i 的位置上 我们只需要把x向前贪心 前面是不是有位置满足 j val  val%(x==i)==0&&n&j==0 的情况可以进行交换

#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=2e5+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
   ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
} 
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;int ans[N];int x;
bitset<N> vis;
bool ok;ll pre[M];

void solve()
{
	cin>>n>>x;
	if(n==x){
		cout<<x<<" ";
		for(int i=2;i<=n-1;i++){
			cout<<i<<" ";
		}
		cout<<1<<" ";
	}
	else if(n%x)cout<<-1<<'\n';
	else {
		ans[1]=x;ans[n]=1;
		for(int i=2;i<n;i++)ans[i]=i;
		ans[x]=n;
		int cur=x;
		for(int i=x;i<n;i++){
			if(i%cur==0&&n%i==0){
				swap(ans[cur],ans[i]);
				cur=i;
			}
		}
		for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
	}
	cout<<'\n';
}
signed main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
	int t;cin>>t;
	//int t=1;
	while(t--){
		solve();
	}
}  

D. 维护一个4*n*n 即可 那么就要保证其他不同的数在 3*n+1,5*n-1即可

#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=3e5+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
   ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
} 
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;int ans[N];int x;
bitset<N> vis;
bool ok;ll pre[M];

void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)a[i]=4*n;
	int now=n/2;
	for(int i=now,j=1;i>=1;i--,j++)a[i]+=j;
	if(n&1)now+=2;
	else now++;
	for(int i=now,j=1;i<=n;i++,j++)a[i]-=j;
	a[1]=5*n;a[n]=3*n;
	for(int i=1;i<=n;i++)cout<<a[i]<<" ";
	cout<<'\n';
}
signed main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
	int t;cin>>t;
	//int t=1;
	while(t--){
		solve();
	}
}  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值