A.暴力把每个位置的字符改成另外25个字符,判断是否回文。

#include<bits/stdc++.h>
using namespace std; string s; int main()
{
ios::sync_with_stdio(false);
cin >> s;
for(int i = ;i < s.length();i++)
{
for(char j = 'a';j <= 'z';j++)
{
if(s[i] == j) continue;
string ss = s;
ss[i] = j;
string sss = ss;
reverse(sss.begin(),sss.end());
if(sss == ss)
{
cout << "YES" << endl;
return ;
}
}
}
cout << "NO" << endl;
return ;
}

B.先判断是否都能变成相同串,若可以,则有一个特点,最后的串肯定与初始某个串相同,直接暴力就可以了。

#include<bits/stdc++.h>
using namespace std; int n,a[][];
string s[];
map<string,int> mp; int main()
{
ios::sync_with_stdio(false);
cin >> n;
for(int i = ;i <= n;i++) cin >> s[i];
int cnt = ;
for(int i = ;i < s[].length();i++)
{
string ss = s[].substr(i)+s[].substr(,i);
mp[ss] = ;
}
for(int i = ;i <= n;i++)
{
if(s[i].length() != s[].length() || !mp.count(s[i]))
{
cout << - << endl;
return ;
}
}
int ans =1e9;
for(int i = ;i <= n;i++)
{
int sum = ;
for(int j = ;j <= n;j++)
{
if(i == j) continue;
for(int k = ;k < s[i].length();k++)
{
string ss = s[j].substr(k)+s[j].substr(,k);
if(ss == s[i])
{
sum += k;
break;
}
}
}
ans = min(ans,sum);
}
cout << ans << endl;
return ;
}

C.这道题首先注意负数和0的gcd,可以用__gcd尝试一下。

先判断初始的gcd是否大于1,若大于1,直接YES。

否则,剩下的数我们只用考虑它们的奇偶性。

相邻两个分为4中情况:

  ①奇奇  直接操作这两个位置  ans+1

  ②偶偶  不用动

  ③奇偶  操作两次变成奇奇  ans+2

  ④偶奇  考虑到最少的操作次数,把奇与其后面的数操作,若奇已经是最后一位,偶奇操作两次,变成奇奇

#include<bits/stdc++.h>
using namespace std; int n,a[]; int main()
{
ios::sync_with_stdio(false);
cin >> n;
cin >> a[];
int t = a[];
for(int i = ;i <= n;i++)
{
cin >> a[i];
t = __gcd(t,a[i]);
}
if(t > )
{
cout << "YES" << endl << << endl;
return ;
}
int ans = ;
for(int i = ;i < n;i++)
{
if(a[i]% && a[i+]% == )
{
ans += ;
}
else if(a[i]% && a[i+]%)
{
ans++;
a[i+]++;
}
}
if(a[n]%) ans += ;
cout << "YES" << endl << ans << endl;
return ;
}

D.我们对个数分奇偶。

若是奇数个:

  对A排序,A1对应下标加入,剩下偶数个数,两两分,每组取B中最大的那个下标。

若是偶数个:

  对A排序,A1对应下标加入,剩下n-2个跟上面相同操作,An对应下标加入。

这样操作的结果肯定是符合要求的。

#include<bits/stdc++.h>
using namespace std; int n,b[],c[];
struct xx
{
int x,id;
friend bool operator <(xx a,xx b)
{
return a.x > b.x;
}
}a[]; vector<int> ans; int main()
{
ios::sync_with_stdio(false);
cin >> n;
long long sum1 = ,sum2 = ;
for(int i = ;i <= n;i++) cin >> a[i].x,a[i].id = i;
for(int i = ;i <= n;i++) cin >> b[i];
sort(a+,a++n);
ans.push_back(a[].id);
for(int i = ;i <= n;i += )
{
if(i == n) ans.push_back(a[i].id);
else
{
if(b[a[i].id] > b[a[i+].id]) ans.push_back(a[i].id);
else ans.push_back(a[i+].id);
}
}
cout << ans.size() << endl;
for(int i = ;i < ans.size();i++) cout << ans[i] << " ";
cout << endl;
return ;
}

另外还有种做法,随机大法,好厉害的样子。

#include<bits/stdc++.h>
using namespace std; int n,a[],b[],c[]; int main()
{
ios::sync_with_stdio(false);
cin >> n;
long long sum1 = ,sum2 = ;
for(int i = ;i <= n;i++) cin >> a[i],sum1 += a[i];
for(int i = ;i <= n;i++) cin >> b[i],sum2 += b[i];
int k = n/+;
for(int i = ;i <= n;i++) c[i] = i;
while()
{
long long x1 = ,x2 = ;
for(int i = ;i <= k;i++)
{
x1 += a[c[i]];
x2 += b[c[i]];
}
if(x1* > sum1 && x2* > sum2)
{
cout << k << endl;
for(int i = ;i <= k;i++) cout << c[i] << ' ';
cout << endl;
return ;
}
random_shuffle(c+,c++n);
}
return ;
}

Codeforces_798的更多相关文章

随机推荐

  1. WTM 3.1发布,完美支持.netcore 3.1

    在过去的2019年,承蒙各位的厚爱,WTM从零开始一年的时间在GitHub上收获了将近1600星,nuget上的下载量累计超过10万. WTM所坚持的低码开发,快速实现的理念受到了越来越多.netco ...

  2. elk日志使用

    elasticsearch +log4net.ElasticSearch+kibana(windows) 需要的东西(目前用的5.6版本) 1.先安装jdk和jre 配置java环境       2. ...

  3. JAVA并发之锁获取步骤及锁优化

    在另外的两篇文章中先后介绍了轻量级同步关键字volatile和重量级锁关键字synchronized,这两个关键字是Java语言中进行线程同步的基本方式(当然还有ReentrenLock等显式锁方式) ...

  4. JAVA读取yml配置文件指定key下的所有内容

    先引入需要的依赖 <!--读取yml文件--> <dependency> <groupId>org.yaml</groupId> <artifac ...

  5. JetBrains Pycharm破解,含破解文件和安装包2019.2版

    此教程支持最新的2019.3版本的Pycharm,并兼容之前的版本. 一.准备工作: 1.下载Pycharm 有条件的可以自行去官网下载,这里我提供了我下载的版本,已上传到百度网盘,链接在下方. 2. ...

  6. socket、http、udp、tcp的整理

    1.socket简介 游戏开发中最常用的便是socket,socket本质是api,是对tcp/ip的封装.tcp/ip协议族是一个网络通信模型以及一系列网络传输协议,为互联网的基础通信架构. tcp ...

  7. 更加清晰的TFRecord格式数据生成及读取

    TFRecords 格式数据文件处理流程 TFRecords 文件包含了 tf.train.Example 协议缓冲区(protocol buffer),协议缓冲区包含了特征 Features.Ten ...

  8. 【Spring Boot 源码解读】之 【为何引入了 Jedis 依赖最后用的还是 Lettuce 客户端?】

    1.Spring Boot 2.x 的两种 Redis 客户端 首先,我们都知道,从 Spring Boot 2.x 开始 Lettuce 已取代 Jedis 成为首选 Redis 的客户端.当然 S ...

  9. 从头学pytorch(十九):批量归一化batch normalization

    批量归一化 论文地址:https://arxiv.org/abs/1502.03167 批量归一化基本上是现在模型的标配了. 说实在的,到今天我也没搞明白batch normalize能够使得模型训练 ...

  10. 在 Vue 中使用 Typescript

    前言 恕我直言,用 Typescript 写 Vue 真的很难受,Vue 对 ts 的支持一般,如非万不得已还是别在 Vue 里边用吧,不过听说 Vue3 会增强对 ts 的支持,正式登场之前还是期待 ...