题目链接:http://codeforces.com/contest/820/problem/C

题解:显然a<=b的规律很好找只要

例如a=2,b=5,只要这样排列就行abbbbbbabbbbbbabbbbbb....

然后a>b的规律是

例如a=5,b=2,只要这样的排列就行abcdeeeabfghhhabcdeeeanfghhh.....

当然满足这些条件的话就可以求出大于r-l>T的结果(T=2*(a+b))

显然if(a <= b) ans = a + 1; else ans = 2 * a - b;就按照上面的构造方法。

然后小与一周期的时候就直接暴力判断,这个很好判断详见代码。

#include <iostream>
#include <cstring>
using namespace std;
int a , b , l , r , ans , T;
char s[200];
bool vis[27];
int dfs(char cp) {
int count = 0;
for(int i = 0 ; i < a ; i++) s[i] = ('a' + i);
for(int i = a ; i < a + b ; i++) s[i] = cp;
memset(vis , false , sizeof(vis));
for(int i = b ; i < a + b ; i++) vis[s[i] - 'a'] = true;
int sta = a + b , ed = 0;
while(sta < 2 * a + b) {
while(vis[ed]) ed++;
s[sta] = ed + 'a';
sta++ , ed++;
}
for(int i = 2 * a + b ; i < T ; i++) s[i] = s[i - 1];
memset(vis , false , sizeof(vis));
if(l <= r) {
for(int i = l ; i <= r ; i++) {
if(!vis[s[i] - 'a']) {
count++ , vis[s[i] - 'a'] = true;
}
}
}
else {
for(int i = 0 ; i <= r ; i++) {
if(!vis[s[i] - 'a']) {
count++ , vis[s[i] - 'a'] = true;
}
}
for(int i = l ; i < T ; i++) {
if(!vis[s[i] - 'a']) {
count++ , vis[s[i] - 'a'] = true;
}
}
}
return count;
}
int main() {
cin >> a >> b >> l >> r;
l-- , r--;
if(a <= b) ans = a + 1;
else ans = 2 * a - b;
T = 2 * (a + b);
if(r - l >= T);
else {
r %= T , l %= T;
for(int i = 0 ; i < a ; i++) {
ans = min(dfs('a' + i) , ans);
}
}
cout << ans << endl;
return 0;
}

最新文章

  1. Cesium应用篇:3控件(1)Clock
  2. bzoj 1257
  3. Sql Server Analysis Service 转换为UnknownMember的正确设置
  4. Appium下Android keyevent整理
  5. 今日推荐(三)AndroidResideMenu类似QQ侧滑效果
  6. 卸载mysql残留
  7. c++ 重载,覆盖,重定义
  8. VMware安装Centos6.8设置ip无法远程连接问题
  9. net 中web.config单一解决方法 (其他配置引入方式)
  10. PL/SQL FAQ in installation &quot;make sure you have the 32 bits Oracle client installed&quot; and &quot;Database character set(AL32UTF8) and Client character set (GBK) are different&quot;
  11. (办公)SpringBoot与mybatisGenerator自动生成.
  12. 让Source Insight完美支持中文注释
  13. qt之QAbstractSocket
  14. 01: shell基本使用
  15. 查看linux服务器内存信息
  16. ggplot2——简介
  17. 洛谷 P3312 [SDOI2014]数表 解题报告
  18. HTTP协议各个参数详解
  19. php 单线程 (http://bbs.csdn.net/topics/390778072)
  20. 我有一台 PC,上面有摄像头,怎么进行一场直播?

热门文章

  1. docker的基本安装和命令详解
  2. c#小灶——注释和代码规范
  3. 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介
  4. 63342 接口 奇遇 IDEA
  5. Vsftp服务器配置文件详解
  6. Day3 AntV/G2图表的组成
  7. Python装饰器完全解读
  8. EXP查询合集提权后渗透必备
  9. c# oracle 数据库连接以及参数化查询
  10. Linux 使用命令 1