B. Two Cakes

传送门:http://codeforces.com/contest/911/problem/B

本题是一个数学问题。

a个Ⅰ类球,b个Ⅱ类球;有n个盒子。将球放入盒子中,要求:

①所有的球均被放入盒子中;

②每一个盒子中至少有一个球;

③一个盒子里至多只能有一类球。

设将所有的球放入盒子后,每个盒子里至少有x个球。求x的最大值。

由上述规则可知,一个盒子或放入Ⅰ类球,或放入Ⅱ类球。设放入Ⅰ类球的盒子数为i,放入Ⅱ类球的盒子数为j,则:i+j=n

于是,为使盒子中放入球的最小个数最大化,应尽量遵循平均性原则。于是,在放入Ⅰ类球的盒子中,每个盒子至少有[a/i]个球;在放入Ⅱ类球的盒子中,每个盒子至少有[b/j]个球。

于是,设cur(i)=min{[a/i],[b/j]},则所求的x即为遍历i=1,2,...,n-1时,cur(i)取得的最大值。

参考程序如下:

  1. #include <stdio.h>
  2.  
  3. int min(int a, int b)
  4. {
  5. return a < b? a: b;
  6. }
  7.  
  8. int main(void)
  9. {
  10. int n, a, b;
  11. scanf("%d%d%d", &n, &a, &b);
  12. int x = ;
  13. for (int i = ; i <= a && i < n; i++) {
  14. int j = n - i;
  15. int cur = min(a / i, b / j);
  16. if (cur > x) x = cur;
  17. }
  18. printf("%d\n", x);
  19. return ;
  20. }

C. Three Garlands

传送门:http://codeforces.com/contest/911/problem/C

本题是一个数学问题。

给定三个正整数数k1,k2,k3,于是,对于给定的三个正整数x1,x2,x3,可以按照周期性规则,构成三个集合{x1+nk1|n=0,1,2,...},{x2+nk2|n=0,1,2,...},{x3+nk3|n=0,1,2,...}。现要求这三个集合的并集覆盖max{x1,x2,x3}及以后的所有自然数。试问对于给定的k1,k2,k3,是否存在一组x1,x2,x3,满足上述要求?

以下几种情形是满足要求的:

以下用“O”代表被数列中某一元素存在,“X”代表该元素不存在,则:

①若k1,k2,k3为{1,?,?},则将出现“OOOO…”的情形,显然构成了连续的整数区间;

②若k1,k2,k3为{2,2,?},则可以构造以下情形:

a.OXOXOXOX…

b.XOXOXOXO…

---------

OOOOOOOO…

如此,也可以构成了连续的整数区间;

③若k1,k2,k3为{3,3,3},则可以构造以下情形:

a.OXXOXXOXX…

b.XOXXOXXOX…

c.XXOXXOXXO…

----------

OOOOOOOOO…

如此,也可以构成了连续的整数区间;

④除此之外,若k1,k2,k3为{4,4,2},则可以构造以下情形:

a.OXXXOXXXO…

b.XXOXXXOXX…

c.XOXOXOXOX…

----------

OOOOOOOOO…

这里请关注情形④!!序列a、b恰好组成一个周期为2的序列“OXOXOXOXO…”。

除此之外,不存在满足条件的k1,k2,k3

参考程序如下:

  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int cnt[] = {};
  6. for (int i = ; i < ; i++) {
  7. int k;
  8. scanf("%d", &k);
  9. if (k <= ) cnt[k]++;
  10. }
  11. if (cnt[] >= || cnt[] >= || cnt[] == ||
  12. cnt[] == && cnt[] == ) printf("YES\n");
  13. else printf("NO\n");
  14. return ;
  15. }

D. Inversion Counting

传送门:http://codeforces.com/contest/911/problem/D

本题是一个序列上的问题——逆序对。

定义数列{ai|i=1,2,...,n}的逆序对如下:对于所有的1≤j<i≤n,若ai<aj,则<i,j>为一个逆序对。

于是,对于一个数列a[1..n],给定m次操作。对于每一次操作,给定l,r(1≤l<r≤n),将序列a[l..r]倒置。求倒置后的逆序对数——的奇偶性。

提到逆序对数,首先可以考虑——树状数组?归并排序?

然而,本题只需要求解逆序对数的奇偶性,于是设置一个0-1型变量flag,表示当前逆序对数的奇偶性。首先,计算初始序列的逆序对数。

之后,考虑某一次倒置操作:对于给定的l,r,记d=l-r+1,若倒置前序列a[l..r]的逆序对数为x,则倒置后序列的逆序对数为Cd2-x。于是,考虑Cd2的奇偶性即可。若这是一个奇数,则逆序对数的奇偶性变化;否则不变化。参考程序如下:

  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define MAX_N 2000
  4.  
  5. int a[MAX_N];
  6.  
  7. int main(void)
  8. {
  9. int n;
  10. scanf("%d", &n);
  11. for (int i = ; i < n; i++)
  12. scanf("%d", &a[i]);
  13. bool flag = ;
  14. for (int i = ; i < n; i++) {
  15. for (int j = ; j < i; j++) {
  16. if (a[i] < a[j]) flag = !flag;
  17. }
  18. }
  19. int m;
  20. scanf("%d", &m);
  21. while (m--) {
  22. int l, r;
  23. scanf("%d%d", &l, &r);
  24. int d = r - l + ;
  25. if (d & ) flag = !flag;
  26. if (flag) printf("odd\n");
  27. else printf("even\n");
  28. }
  29. return ;
  30. }

Educational Codeforces Round 35 B/C/D的更多相关文章

  1. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  2. Educational Codeforces Round 35 A. Nearest Minimums【预处理】

    [题目链接]: Educational Codeforces Round 35 (Rated for Div. 2) A. Nearest Minimums time limit per test 2 ...

  3. Educational Codeforces Round 35 (Rated for Div. 2)A,B,C,D

    A. Nearest Minimums time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. Three Garlands~Educational Codeforces Round 35

    C. Three Garlands time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  5. Educational Codeforces Round 35 B. Two Cakes【枚举/给盘子个数,两份蛋糕块数,最少需要在每个盘子放几块蛋糕保证所有蛋糕块都装下】

    B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. Educational Codeforces Round 35

    Nearest Minimums 相同的数里最小的数里的最小距离 Solution Two Cakes Solution Three Garlands 瞎比试 Solution Inversion C ...

  7. 【Educational Codeforces Round 35 D】Inversion Counting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排列中交换任意两个数字. 排列的逆序对个数的奇偶性会发生变化. 翻转这个过程其实就是len/2对数字发生交换. 交换了偶数次的话,不 ...

  8. 【Educational Codeforces Round 35 C】Two Cakes

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 直觉题. 感觉情况会很少. 毕竟间隔太大了.中间肯定有一些数字达不到. 有1肯定可以 2 2 x肯定可以 3 3 3也可以 2 4 ...

  9. 【Educational Codeforces Round 35 B】Two Cakes

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从小到大枚举x. 看看a/x+b/x是不是大于等于n 是的话. 看看是不是两种蛋糕都能凑一堆. 也即x的最大枚举量是min(a,b) ...

随机推荐

  1. 在Android中创建文件

    import java.io.File; import java.io.IOException; import android.app.Activity; import android.os.Bund ...

  2. Codeforces--598A--Tricky Sum(数学)

     Tricky Sum Tricky SumCrawling in process... Crawling failed Time Limit:1000MS     Memory Limit:26 ...

  3. bzoj1116 [POI2008]CLO——并查集找环

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1116 分析性质,只要有环,那么给环定一下向就满足了条件: 环上点的其他边可以指向外面,所以两 ...

  4. Coursera Algorithms week2 基础排序 练习测验: Intersection of two sets

    题目原文: Given two arrays a[] and b[], each containing n distinct 2D points in the plane, design a subq ...

  5. 第13课 SmartGit程序操作介绍

    http://www.syntevo.com/

  6. php的self和this

    <?phpclass ss{ public static $code; public function __construct( $code ) { self::$code=$code; //这 ...

  7. 日期数据类型为Date ,前台传递喂String的后台处理

    方法一: 在实体类里面将set方法里面将数据类型转为Date public void setBirth(String birth) { SimpleDateFormat sdf = new Simpl ...

  8. Android插件化原理解析——Hook机制之动态代理

    转自 http://weishu.me/2016/01/28/understand-plugin-framework-proxy-hook/ 使用代理机制进行API Hook进而达到方法增强是框架的常 ...

  9. 【贪心】小Y的炮[cannon]题解

    模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分... 这道题单调性很关键,下面会解释 P.S.解释在代码里 #include<cstdio> #i ...

  10. python 12:list(range(...)) (转化参数列表)

    numbers = list(range(1,11)) #把范围产生的数字串转化为列表储存 print(numbers) 运行结果应该是: [1,2,3,4,5,6,7,8,9,10]