网络营销典型案例,周口seo,为什么几年前做的网站视频看不了,杭州战争网站建设洛谷P1109 学生分组
题目描述
有 n 组学生#xff0c;给出初始时每组中的学生个数#xff0c;再给出每组学生人数的上界 R 和下界 L (L≤R)#xff0c;每次你可以在某组中选出一个学生把他安排到另外一组中#xff0c;问最少要多少次才可以使 N 组学生的人数都在 [L,R] 中…洛谷P1109 学生分组
题目描述
有 n 组学生给出初始时每组中的学生个数再给出每组学生人数的上界 R 和下界 L (L≤R)每次你可以在某组中选出一个学生把他安排到另外一组中问最少要多少次才可以使 N 组学生的人数都在 [L,R] 中。
输入格式
第一行一个整数 n表示学生组数
第二行 n 个整数表示每组的学生个数
第三行两个整数 L,R表示下界和上界。
输出格式
一个数表示最少的交换次数如果不能满足题目条件输出 −1−1。
输入输出样例
输入 #1复制
2
10 20
10 15输出 #1复制
5
说明/提示
数据范围及约定
对于全部数据保证 1≤n≤50。
题目分析
1贪心策略进行模拟首先判断是否能满足题目条件满足题目条件的根本原因是输入n个数的总和必须满足在n组l和r的区间所以就演变成了suml*nsumr*n;
2,满足题目条件后根据题目分别统计超出右界和左界因为右界的值是可以填补左界的所以统计最大的值
代码示例
#includebits/stdc.h
using namespace std;
int a[51],l,r,sum0;
int main(){int n,k0,m0;cinn;for(int i0;in;i){cina[i];suma[i];//总和}cinlr;if(suml*n||sumr*n){cout-1;return 0;}//判断是否符合题目条件for(int i0;in;i){if(a[i]r)ka[i]-r;//超出右界if(a[i]l)ml-a[i];//超出左界}printf(%d,km?k:m);} 洛谷P2708 硬币翻转
题目描述
有很多个硬币摆在一行有正面朝上的也有背面朝上的。正面朝上的用 1 表示背面朝上的用 0 表示。
现在要求从这行的第一个硬币开始将从第一个硬币开始的前若干个硬币同时翻面求如果要将所有硬币翻到正面朝上最少要进行这样的操作多少次
输入格式
一个字符串由 0 和 1 组成表示硬币的初始状态。
输出格式
一个整数表示要翻转的最少次数。
输入输出样例
输入 #1复制
10
输出 #1复制
2
说明/提示
样例解释
第 1次翻转把第一个硬币翻到反面字符串为 00第 2 次翻转把第一、二个硬币一起翻到正面字符串为 11翻转完成输出 2。
数据范围
记 n 表示硬币的总个数
对于 20%20% 的数据1≤n≤10对于 50%50% 的数据1≤n≤104对于 100%100% 的数据1≤n≤106。
题目分析
1运用模拟可以得出一直如果当前的值与下一个不一样则次数肯定要加一翻转最后会得到一个全是1或者全是0
2.判断最后一个字符如果是0就再翻转一次是1的话直接输出
3注意这里的翻转是将1到i全翻转一次
代码示例
#includeiostream
#includecstdio
using namespace std;
int main()
{string s;cins;int sum0;int lens.length();for(int i0;ilen-1;i)//一直比较{if(s[i]!s[i1])sum;}if(s[len-1]0)//判断加一sum;coutsum;
}