保定网站建设多少钱,福州seo关键字推广,三站合一网站营销,福建省网站备案用户注销(删除)备案申请表文章目录 重复字符串翻硬币乘积最大 重复字符串 思路#xff1a;判断是否能整除#xff0c;如果不能整除直接退出#xff0c;能整除每次从每组对应位置中找出出现最多的字母将其他值修改为它#xff0c;所有修改次数即为答案。
#includeiostream
using namespace … 文章目录 重复字符串翻硬币乘积最大 重复字符串 思路判断是否能整除如果不能整除直接退出能整除每次从每组对应位置中找出出现最多的字母将其他值修改为它所有修改次数即为答案。
#includeiostream
using namespace std;
const int N 1e5 10;
int k;
char s[N];
int cnt[30];int main( ){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);scanf(%d\n%s,k,s1);if(strlen(s1)%k){cout-1\n;return 0;}int ans0,n strlen(s1)/k;for(int i 1;in;i){int ma 0;for(int j 0;j25;j)cnt[j] 0;for(int j1;jk;j){char x s[i (j-1)*n];cnt[ x - a ];ma max(ma,cnt[x-a]);}ans k -ma;}coutans\n;return 0;
}
翻硬币 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面用 o 表示反面是小写字母不是零。 比如可能情形是**oo***oooo 如果同时翻转左边的两个硬币则变为oooo***oooo 现在小明的问题是如果已知了初始状态和要达到的目标状态每次只能同时翻转相邻的两个硬币,那么对特定的局面最少要翻动多少次呢 我们约定把翻动相邻的两个硬币叫做一步操作。 输入格式 两行等长的字符串分别表示初始状态和要达到的目标状态。 输出格式 一个整数表示最小操作步数 数据范围 输入字符串的长度均不超过100。 数据保证答案一定有解。 输入样例1
**********
o****o****输出样例1
5思路从前往后枚举硬币计数过程中翻转后一枚硬币。
#includeiostream
#includestring
using namespace std;
string s,d;
int main( ){cinsd;int cnt 0,lens.length();for(int i 0;ilen;i){if(s[i]!d[i]){cnt;if(s[i1]*)s[i1]o;else s[i1]*;}}coutcnt\n;return 0;
}
做法二考验思维硬币一共有两种情况第 i 个不同第 i1 可能相同也可能不同。当第 i 个不同时第 i1 个相同翻的时候后面会变成不同所以要一直往后翻直到找到不同期间就是一组翻硬币次数。由于题目没有要我们输出不能成功翻硬币的输出所以硬币一定能翻成功即不同个数一定是偶数。
#includeiostream
#includevector
using namespace std;
signed main( ){string s,d;int cnt 0;cinsd;vectorintvec;for(int i0;is.size();i)if(s[i]!d[i])vec.push_back(i);for(int i0;ivec.size();i2)cntvec[i1]-vec[i];coutcnt\n;return 0;
}
乘积最大 给定N个整数A1, A2, … AN。请你从中选出K个数使其乘积最大。 请你求出最大的乘积由于乘积可能超出整型范围你只需输出乘积除以1000000009的余数。 注意如果X0 我们定义X除以1000000009的余数是负(-X)除以1000000009的余数。 即0-((0-x) % 1000000009) 【输入格式】 第一行包含两个整数N和K。 以下N行每行一个整数Ai。 对于40%的数据1 K N 100 对于60%的数据1 K 1000 对于100%的数据1 K N 100000 -100000 Ai 100000 【输出格式】 一个整数表示答案。 【输入样例】 5 3 -100000 -10000 2 100000 10000 【输出样例】 999100009 再例如 【输入样例】 5 3 -100000 -100000 -2 -100000 -100000 【输出样例】 -999999829 资源约定 峰值内存消耗含虚拟机 256M CPU消耗 1000ms 思路思维题把所有情况都考虑到。如果用动态规划只能过一半。
#includeiostream
using namespace std;
int n,k;
const int N 1e510,mod 1e99;
long long res 1;
int cnt1,cnt2;
int a[N];int main( ){cinnk;for(int i1;in;i){cina[i];if(a[i]0)cnt1;else cnt2;}sort(a1,a1n);if(kn){for(int i 1;in;i) res * a[i],res%mod;coutres\n;}else if(!cnt2){for(int in;in-k1;i--)res * a[i],res%mod;coutres\n;}else if(!cnt1){if(k1)for(int in;in-k1;i--)res res*a[i]%mod;else for(int i1;ik;i)res res*a[i]%mod;coutres\n;}else{int p 1;while(kcnt1){res * (a[p]*a[p1])%mod,res % mod;p2,k-2;}int p1 p,p2 n;while(k1){if(a[p1]*a[p11] a[p2]*a[p2-1]){res * (a[p1]*a[p11])%mod,res % mod;p12;}else{res * (a[p2]*a[p21])%mod,res % mod;p2-2;}k-2;}if(k)res res*a[p2]%mod;coutres\n;}return 0;
}