C 六学家的困惑 【YY】 (2019年华南理工大学程序设计竞赛(春季赛))
冲鸭,去刷题:https://ac.nowcoder.com/acm/contest/625/C
小六面前有两根管子,管子里面放满了数字为1到9的小球。每次取球时,小六会先选择一根管子,再从这根管子的某一侧(左侧或右侧)取出一个球。在满足取球规则的情况下,他可以任意顺序取出所有小球。假如小六依次取出的球的编号为a1,a2,⋯,ana1,a2,⋯,an,则他最后就得到了一个形如¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯a1a2⋯ana1a2⋯an¯样的十进制数。
小六希望他的取球顺序所组成的数是最大的,你可以帮一下他吗?
输入描述:
第一行输入数据组数。T (T≤14)T (T≤14) 接下来T行,每行输入两串只含1∼91∼9的数字,表示两根管子里的小球的数字。每根管子内至少含1个小球,且数量不超过40个。
输出描述:
对每一组数据,输出一行Case #x: A,其中x是数据组数编号(从1开始),A是小六能组成的最大的数。
解题思路:
一:直接暴力模拟,每次取值都要同时从四个端点枚举(直到能判断那个端点最优),取最优端点的值最优。
二:其实上面的模拟过程抽象一下不就是把两个字符串取反后获得四个字符串,然后取字典序最大的那个吗......
AC code:
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define LL long long
#define inc(i, j, k) for(int i = j; i <= k; i++)
#define rep(i, j, k) for(int i = j; i < k; i++)
#define mem(i, j) memset(i, j, sizeof(i))
#define gcd(i, j) __gcd(i, j)
using namespace std;
const int MAXN = 2e5+; string str, tp, a, b;
string ans, res; int main()
{
int T_case;
scanf("%d", &T_case);
inc(k, , T_case){
res = "";
cin >> str >> tp;
int L = , R = str.size()-, l = , r = tp.size()-;
while(L <= R || l <= r){
ans = "";
a = str;
b = tp;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end()); // cout << L << " " << R << " " <<str << endl;
// cout << l << " " << r << " " << tp << endl;
// cout << "res: " << res << endl << endl; ans = max(ans, max(max(str, a), max(tp, b)));
// cout << ans << endl;
if(ans == str){
res+=str[L++];
// cout << "1: " << L-1 << " " << res << endl;
if(L > R) str = "";
else str = str.substr(L, (R-L+));
}
else if(ans == tp){
res+=tp[l++];
// cout << "2: " << l-1 << " " << res << endl;
if(l > r) tp = "";
else tp = tp.substr(l, (r-l+));
}
else if(ans == a){
res+=str[R--];
// cout << "3: " << R+1 << " " << res << endl;
if(L > R) str = "";
else str = str.substr(L, (R-L+));
}
else if(ans == b)
{
res+=tp[r--];
// cout << "4: " << r+1 << " " << res << endl;
if(l > r) tp = "";
else tp = tp.substr(l, (r-l+));
}
L = ;R = str.size()-;l = ; r = tp.size()-;
}
cout << "Case #" << k << ": " << res << endl;
}
return ;
}
C 六学家的困惑 【YY】 (2019年华南理工大学程序设计竞赛(春季赛))的更多相关文章
- 2019年华南理工大学程序设计竞赛(春季赛)-C-六学家的困惑
题目链接:https://ac.nowcoder.com/acm/contest/625/C 题意:给定两个字符串,每次只能从两个字符串的两端取字符,求依次取字符后所构成的数字最大为多少. 思路:思路 ...
- 2019年华南理工大学程序设计竞赛(春季赛)-H-Parco_Love_GCD
题目链接:https://ac.nowcoder.com/acm/contest/625/H 题意:给定n个数(<=1e9)的序列,其中n<=5e5,求该序列所有子序列的对应的gcd对1e ...
- A NB群友 【记忆化搜索】(2019年华南理工大学程序设计竞赛(春季赛))
冲鸭!去刷题:https://ac.nowcoder.com/acm/contest/625/A 题目描述 CC是著名的算法竞赛选手,他不仅人长得帅,而且技术了得,自然而然就有了许多粉丝. 为了能帮助 ...
- 2019年华南理工大学程序设计竞赛(春季赛) B 修仙时在做什么?有没有空?可以来炼丹吗?(思维建图搜索)
https://ac.nowcoder.com/acm/contest/625/B 分析: 全部的状态只有1<<18 个 , 所以我们可以预处理 f[u][j] , 然后建立出全部的u可以 ...
- 2019年华南理工大学程序设计竞赛(春季赛) K Parco_Love_String(后缀自动机)找两个串的相同字串有多少
https://ac.nowcoder.com/acm/contest/625/K 题意: 给出Q 个询问 i , 求 s[0..i-1] 与 s[i...len-1] 有多少相同的字串 分析: 给出 ...
- 2019年华南理工大学程序设计竞赛(春季赛)A NB群友
https://ac.nowcoder.com/acm/contest/625/A 题意:给出一个区间范围 , 求有多少个数的每一位的积是在这个区间里面的 分析:没错了 ,就是记忆化暴力搜索 ,不断的 ...
- 2019年华南理工大学软件学院ACM集训队选拔赛 Round1
TIps: 1.所有代码中博主使用了scanf和printf作为输入输出 2.代码中使用了define LL long long 所以在声明变量的时候 LL其实就等价于long long 希望这两点 ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 C序列变换
链接:https://www.nowcoder.com/acm/contest/91/C来源:牛客网没有账号的同学这样注册,支持博主 题目描述 给定两个长度为n的序列,ai, bi(1<=i&l ...
- K-序列(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛)
题目描述 给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”.现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列. 输入描述: 第一行为 ...
随机推荐
- 关于shader的学习
教程地址:https://onevcat.com/2013/07/shader-tutorial-1 因为想做一些特效,所以想稍微了解一下shader的代码,一下是一些笔记 // Upgrade NO ...
- Dllmain的作用
DllMain函数是DLL模块的默认入口点.当Windows加载DLL模块时调用这一函数.系统首先调用全局对象的构造函数,然后调用全局函数 DLLMain.DLLMain函数不仅在将DLL链接加载到进 ...
- (利用DOM)在新打开的页面点击关闭当前浏览器窗口
1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口.用html DOM就可做到. 2.注意:本次写法要求在新窗口中关闭. target="_blank" ...
- Review——JS的异步与同步
一.概念 同步(synchronous):指在js的主线程上,所有任务被依次执行: 异步(asynchronous):指任务不进入主线程,进入任务队列(task):当“任务队列”通知主线程,异步任务才 ...
- 教程:RSS全文输出,自己动手做。(一)
这里以PHP版为例,尽量说得通俗点吧,水平实在有限,见谅. 目前我这里所有的获取全文输出的网站大概是三种情况: 要输出的内容集中在一页上,也就是看似列表页的页面里集中了你想要的所有内容,并不需要点击“ ...
- java获取本月第一天和最后一天
public class CalendarTest { public static void main(String[] args) { // 获取当前年份.月份.日期 Calendar cale = ...
- 增加图例 Legend和删除图例
private void button1_Click(object sender, System.EventArgs e) { //Get the GraphicsContainer IGraphic ...
- 一步一步pwn路由器之radare2使用实战
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前文讲了一些 radare2 的特性相关的操作方法.本文以一个 c ...
- Array类型
Array类型 Array也是ECMAScript中常用类型之一,其特点是数组中的每一项都可以保存任何类型的数据,数组的大小可以动态调整. 创建数组 方式1:使用Array构造函数 var books ...
- clean-css
What is clean-css? Clean-css is a fast and efficient Node.js library for minifying CSS files. Accord ...