Codeforces Round #410 (Div. 2)
来源:互联网 发布:笔记本清理垃圾软件 编辑:程序博客网 时间:2024/05/17 02:10
A.
题意:给你一个字符串,让你判断这个字符串能否修改一个字符后是回文串
思路:暴力枚举,(一定要与原来的字符串不同,开始忘了判了,queue那么长,好久才出结果,又用char型写了几次,最后才改了原来的做法过了)
#include<bits/stdc++.h>using namespace std;bool pa(string s){ string ss = s; reverse(ss.begin(),ss.end()); return ss == s;}int main(){ string s,ss; cin>>s; for(int i = 0;i < s.size();i++) { ss = s; for(char j = 'a';j <= 'z';j++) { if(ss[i] == j) continue; ss[i] = j; if(pa(ss)) return 0 * printf("YES\n"); ss = s; } } printf("NO\n");}
B.
题意:给你n个字符串,每个字符串可以把最前面的字符移到最后面,让你求最小的移动次数使得所有字符串相同。
思路:暴力枚举,另任意串为标准串,其他n-1个串,转到标准串的和取最小值。(自己的循环i、j竟然写错了,我擦,这是大一C语言也不会犯的错误啊,哎,码力下降太多了,又用char写了一遍,其实是循环写错了)
#include<bits/stdc++.h>using namespace std;const int N = 55;string s[N],ss[N];int Cal(string t,string tt){ int l = t.size(),ll = tt.size(); for(int i = 0,j;i+l < ll;i++) { for(j = 0;j < l;j++) { if(tt[i+j] != t[j])//¾¹È»ÍüÁËi+j£¬°¡°¡°¡°¡ break; } if(j == l) return i; } return -1;}int main(){ int n; cin>>n; for(int i = 0;i < n;i++) { cin>>s[i]; ss[i] = s[i]; } for(int i = 0;i < n;i++) ss[i] = ss[i] + s[i]; int minn = 0x3f3f3f3f,cnt; for(int i = 0;i < n;i++) { int sum = 0; for(int j = 0;j < n;j++) { if(i == j) continue; cnt = Cal(s[i],ss[j]); //cout<<cnt<<endl; if(cnt == -1) return 0 * printf("-1\n"); sum += cnt; } minn = min(minn,sum); } printf("%d\n",minn); return 0;}
C.
题意:给你n个a[i],让你通过将ai , ai + 1修改成ai - ai + 1, ai + ai + 1的形式来使最后的gcd > 1,求最小修改次数。
思路:
我们如果对两个数操作两次,那么结果会变成- 2*ai + 1,2*ai,gcd>=2,所以结果一定是YES的。
然后我们只需要ai , ai + 1让变成偶数就行了,这样贪心“肯定”gcd最小为2的操作数是最少的
偶数和奇数,操作2次,都为偶数了
奇数和奇数,操作1次,都为偶数了
代码:
#include<bits/stdc++.h>using namespace std;const int N = 1e5+5;typedef long long ll;ll a[N],res = 0;/*void gao(ll p,ll q){}*/int main(){ int n; cin>>n; for(int i = 1;i <= n;i++) scanf("%lld",&a[i]); ll num = a[1];for(ll i = 2; i <= n ; i++)num = __gcd(num,a[i]);if(num != 1)return 0*printf("YES\n0\n"); for(int i = 1;i <= n;i++) a[i] %= 2; for(int i = 1 ; i <= n - 1 ; i++){if(a[i]){if(a[i+1]){ //a[i] = a[i+1] = 0; a[i+1] = 0; res++;}else { //a[i] = 0; res += 2; }}} if(a[n]) res += 2; printf("YES\n%lld\n",res); return 0;}
D.
题意:
思路:
1 0
- Codeforces Round #410 (Div. 2)
- Codeforces Round #410 (Div. 2)
- Codeforces Round #410 (Div. 2)
- Codeforces Round #410 (Div. 2)
- 【解题报告】Codeforces Round #410 (Div. 2)
- Codeforces Round #410 (Div. 2) 部分解析
- 【Codeforces Round #410 (Div. 2) B】暴力
- Codeforces Round #410 (Div. 2) 解题报告
- Codeforces Round #410 (Div. 2)(Codeforces 798 ABCD)
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #107 (Div. 2)
- Codeforces Round #108 (Div. 2)
- Codeforces Round #110 (Div. 2)
- 使用encodeURIComponent方法对url中的特殊字符进行转码
- 查询数据库记录SELECT
- Photoshop 使用钢笔工具 进行抠图 商业出图入门
- 关于jsp、js、html代码执行顺序
- 网页制作规范和emmet常用快捷键
- Codeforces Round #410 (Div. 2)
- linux常用操作整理(资料来源于互联网,自己用)
- JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
- Java编程思想-08多态
- MySQL 5.4.6之前有关timestamp设置current_timestamp时报错there can be only one TIMESTAMP column with CURRENT_TI
- opencv---任务1
- 碎碎念-随笔-2017.04.22
- 论文阅读笔记-图像识别分类
- 全局K-means算法