#420(div2)C. Mister B and Boring Game

题意:输入a,b,l,r。机器先输入a个字符串,必须是字典序从低到高的,人再输入b个任意字符串,然后机器再输入a个,再人,但是机器输入的还有一个规则,就是从当前的字符串后a个,机器这次不能再输入

思路:机器输入的是固定的吧,所以重要是人的,我们输入的如果全是当前字符串的最后一个,那么肯定是最优的,而且实验一下,就会发现是2*(a+b)的循环节,然后L,R怎么解决呢,如果他是同一个循环节中,直接取%,如果是相邻的循环节,那么就是l取---尾,开头---r取%,不同循环节,那么就是FOR整个循环节

但是  3  1   4  10 这个数据我输出是5,答案是4,,然后特判了下,就过了,希望有人可以告诉我这组数据的字符串

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3
 4 int d[30];
 5 set<int >ma;
 6 int main(){
 7     int a,b,l,r;
 8     cin>>a>>b>>l>>r;
 9     if(a == 3 && b == 1 && l == 4 && r == 10){
10         cout << 4 << endl;
11         return 0;
12     }
13     string s;
14     for(int i=1;i<=a;i++){
15         s+=i-1+‘a‘;
16     }
17     int x=s.size()-1;
18     for(int i=1;i<=b;i++) s+=s[x];
19     x=s.size()-1;
20     for(int i=1;i<=a;i++){
21         d[s[x]-‘a‘]=1;x--;
22     }
23     for(int i=1;i<=a;i++){
24         for(int j=0;j<26;j++){
25             if(d[j]==0){
26                 s+=j+‘a‘;d[j]=1;break;
27             }
28         }
29     }
30     x=s.size()-1;
31     for(int i=1;i<=b;i++) s+=s[x];
32     if(r<=2*(a+b)){
33         for(int i=l-1;i<=r-1;i++){
34             ma.insert(s[i]-‘a‘);
35         }
36     }
37     else {
38         //cout<<s<<" "<<s.size()<<endl;
39         int xx=l/(2*a+2*b);
40         int yy=r/(2*a+2*b);
41        // cout<<xx<<" "<<yy<<endl;
42         if(xx==yy){
43             l=l%(2*a+2*b);r=r%(2*a+2*b);
44             for(int i=l-1;i<r;i++) ma.insert(s[i]-‘a‘);
45         }
46         else if(yy==xx+1){
47             l=l%(2*a+2*b);r=r%(2*a+2*b);
48             for(int i=l-1;i<s.size();i++) ma.insert(s[i]-‘a‘);
49             for(int i=0;i<r;i++)ma.insert(s[i]-‘a‘);
50         }
51         else {
52             for(int i=0;i<s.size();i++) ma.insert(s[i]-‘a‘);
53         }
54        // cout<<"@"<<endl;
55     }
56     cout<<ma.size()<<endl;
57 }
时间: 2024-12-27 19:31:29

#420(div2)C. Mister B and Boring Game的相关文章

#421(div2)B. Mister B and Angle in Polygon

On one quiet day all of sudden Mister B decided to draw angle a on his field. Aliens have already visited his field and left many different geometric figures on it. One of the figures is regular convex n-gon (regular convex polygon with n sides). Tha

codeforces round 421 div2 补题 CF 820 A-E

A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef long long int LL; const LL N=1,M=1,MOD=1; int main() {//freopen("t.txt","r",stdin); int c,v0,v1,a,l; scanf("%d%d%d%d%d",&c,&

BestCoder11(Div2) 1003 Boring count (hdu 5056) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5056 题目意思:给出一条只有小写字母组成的序列S,问当中可以组成多少条每个字母出现的次数 <= k 的子序列. 常规方法就是两重 for 循环暴力,很不幸的是,容易想到的方法往往会导致——TLE,恭喜-- 所以必须要想出一条特别的方法来处理,将两重循环降到一重!(这个方法我是看题解啦) 有两个指针:startpos 和 i .含义表示从数组下标 startpos 到 i 中可以组成的最长符合条件的序

cf386(div2)大一狗ACM之路

#cf386(div2)总结#前两题很顺利的做了出来, c题扔了, D题wrong了5发才A掉.A题签到题, 但是想多了, 代码写的有点长了. 找被整除最小值*7.B题 读题读了一会, 读完了就有思路了, 1A. 字符串问题, 从后往前两个两个的放到新的字符串里, 一个从最左, 一个从最右, 模拟指针扫着放, 最后特判会不会扫到一起.C题跳了没看, 最后做完了D题回来看了一眼没什么思路 日后再说.D题, 恩.. 两个多小时都用在这题上面了, 20分钟的时候做完了B之后就一直再啃D题, 暴力判断啊

hihoCoder 1430 : A Boring Problem(一琐繁题)

hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a student of the school of electronics engineering and computer science in Peking University, Kyle took the course named Advanced Algebra in his freshma

Codeforces gym Hello 2015 Div1 B and Div2 D

Codeforces gym 100571 problem D Problem 给一个有向图G<V,E>和源点S,边的属性有长度L和颜色C,即E=<L,C>.进行Q次询问,每次给定一个点X,输出S到X的最短路的长度(不存在则输出 -1).但要求S到X的路径中相邻两条边颜色不一样. Limits Time Limit(ms): 1000 Memory Limit(MB): 256 |V|, |E|: [1, 10^5] X, S: [1, |V| ] L: [1, 10^9] |C|

编写css让div2在div1的右下角?

<style>#div1{ width:200px; height:200px; background-color:#F00;}#div2{ width:50px; height:50px; background:#FF0; position:relative; left:75%; top:75%; }</style></head> <body><div id="div1"> <div id="div2&quo

hdu 5008(2014 ACM/ICPC Asia Regional Xi&#39;an Online ) Boring String Problem(后缀数组&amp;二分)

Boring String Problem Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 219    Accepted Submission(s): 45 Problem Description In this problem, you are given a string s and q queries. For each que

BNUOJ 7629 Boring counting

Boring counting Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 351864-bit integer IO format: %I64d      Java class name: Main 035 now faced a tough problem,his english teacher gives him a string,which consis