A

str.substr(i,j) 从str[i]开始起取j个字符作为返回的字符串

/* Huyyt */
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
string a, b;
cin >> a >> b;
string ans = "zzzzzzzzzzzzzzzzzzzzzzzzzz";
string now;
for (int i = ; i <= a.size(); i++)
{
for (int j = ; j <= b.size(); j++)
{
now = a.substr(, i) + b.substr(, j);
ans = min(now, ans);
}
}
cout << ans << endl;
return ;
}

B

解:

观察到只有当一个地方重复的时候两个线段无法合并

所以有个结论就是最终合并完后的线段数是无法合并数量最多的长度为1的线段数

/* Huyyt */
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int visit[];
int main()
{
int n;
cin >> n;
for (int i = ; i <= n; i++)
{
for (int j = ; j <= n - i + ; j++)
{
for (int k = j; k <= j + i - ; k++)
{
visit[k]++;
}
}
}
int anser = ;
for (int i = ; i <= n; i++)
{
anser = max(anser, visit[i]);
}
cout << anser << endl;
return ;
}

C

S表示一个一般语句  F表示一个循环 循环体内不能为空

问你最后能有几个合法的程序

解:

①dp[i][j]表示到第i个字母该字母在第j层的方案数(层数即for循环的层数)

 1.当前面一个操作是for循环时 因为for循环不能为空 所以当前操作必须加在前面一个for循环的后面

 2.当前面一个操作是s时 不管后续操作是f还是s最高层数都不会变(即加s或者加f都与前一个s在同一个for循环中)

  但是假设你当前加的是第X层 你可以加的地方就是X到最高层的所有方案数之和 所以倒着推.

最后答案就是第n个操作在第1-n层方案数之和  注意当最后一个操作是f时是不合法的 答案为0

/* Huyyt */
#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
const long long mod = 1e9 + ;
const int maxn = ;
int n, f;
char op[maxn][];
ll dp[maxn][maxn];
int main()
{
scanf("%d", &n);
for (int i = ; i <= n; i ++)
{
scanf("%s", op[i]);
}
dp[][] = ;
for (int i = ; i <= n; i ++)
{
if (op[i - ][] == 'f')
{
for (int j = ; j <= i - ; j ++)
{
dp[i][j + ] = dp[i - ][j];
}
}
else
{
ll sum = ;
for (int j = i - ; j >= ; j --)
{
sum = (sum + dp[i - ][j]) % mod;
dp[i][j] = sum;
}
}
}
ll ans = ;
if (op[n][] == 'f')
{
ans = ;
}
else
{
for (int j = ; j <= n; j ++)
{
ans = (ans + dp[n][j]) % mod;
}
cout << ans << endl;
}
return ;
}

D

给你一条直线 直线上有N个点 每个点有一个小写字母表示它的颜色 每次操作你可以任选几个邻居颜色与自身不同的点将他们删掉

问你最少需要几次操作使得最终得到点集不能进行操作

N<=1E6

解:

剩下的点集不能进行操作有两种情况   ①集合为空   ②集合不为空且集合中的字母全部一样

所以题目就转变成问你最少多少次操作能使得点全部删完或者剩下的点颜色全部一样

继续观察可以知道 当有连续的一段相同字母 我们最多只能删掉这连续一段两端的两个

所以缩点 每次让左边界与右边界的size-1 其他的size-min(size,2) 每删完一次后去除掉size为0的即可

/* Huyyt */
#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define pb push_back
using namespace std;
typedef long long ll;
const long long mod = 1e9 + ;
int len;
vector<pair<int, int> > v;
int num[];
int main()
{
string now;
cin >> now;
len = now.size();
for (int i = ; i < len; i++)
{
num[i] = now[i] - 'a';
}
for (int i = ; i < len; i++)
{
if (!v.size())
{
v.push_back(mkp(num[i], ));
}
else
{
if (v[v.size() - ].first == num[i])
{
v[v.size() - ].second++;
}
else
{
v.push_back(mkp(num[i], ));
}
}
}
int anser = ;
while (v.size() > )
{
anser++;
vector<pair<int, int> > cnt;
for (int i = ; i < v.size(); i++)
{
if (i == || i == v.size() - )
{
v[i].second--;
}
else
{
v[i].second -= ;
}
}
for (auto it : v)
{
if (it.second <= )
{
continue;
}
else
{
if (cnt.empty())
{
cnt.push_back(it);
}
else if (it.first == cnt[cnt.size() - ].first)
{
cnt[cnt.size() - ].second += it.second;
}
else
{
cnt.push_back(it);
}
}
}
v = cnt;
}
cout << anser << endl;
return ;
}

E

Codeforces 909 substr用法 思维合并线段目标最少 Py语句逆推DP vecrtor缩点删不同颜色点模拟 拓扑排序处理任务的更多相关文章

  1. CodeForces - 666E: Forensic Examination (广义SAM 线段树合并)

    题意:给定字符串S,然后M个字符串T.Q次询问,每次给出(L,R,l,r),问S[l,r]在L到R这些T字符串中,在哪个串出现最多,以及次数. 思路:把所有串建立SAM,然后可以通过倍增走到[l,r] ...

  2. [C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)

    本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.micro ...

  3. ILMerge将源DLL合并到目标EXE

    ILMerge将源DLL合并到目标EXE(.NET4.6.2) 本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EX ...

  4. 使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)

    本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.micro ...

  5. [Codeforces 280D]k-Maximum Subsequence Sum(线段树)

    [Codeforces 280D]k-Maximum Subsequence Sum(线段树) 题面 给出一个序列,序列里面的数有正有负,有两种操作 1.单点修改 2.区间查询,在区间中选出至多k个不 ...

  6. [C#]使用Costura.Fody将源DLL合并到目标EXE

    本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 一.本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址 ...

  7. 使用Costura.Fody将源DLL合并到目标EXE

    本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 一.本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址 ...

  8. [Codeforces 266E]More Queries to Array...(线段树+二项式定理)

    [Codeforces 266E]More Queries to Array...(线段树+二项式定理) 题面 维护一个长度为\(n\)的序列\(a\),\(m\)个操作 区间赋值为\(x\) 查询\ ...

  9. codeforces 1217E E. Sum Queries? (线段树

    codeforces 1217E E. Sum Queries? (线段树 传送门:https://codeforces.com/contest/1217/problem/E 题意: n个数,m次询问 ...

随机推荐

  1. 八、MD5加密并封装,并调用封装方法

    一.MD5加密 封装Md5 public class Md5 { //十六进制下数字到字符的映射数组 private static final char hexDigits[] = { '0', '1 ...

  2. leetcode 230二叉搜索树中第k小的元素

    通过stack进行中序遍历迭代,timeO(k),spaceO(1) /** * Definition for a binary tree node. * struct TreeNode { * in ...

  3. Python之输入输出

    python中变量的输出 # 打印提示 print('hello world') print('你好!') # 输出变量 url = 'loaderman' print('我是:',url) prin ...

  4. warning: accessed via instance reference

    提示如图: 先简单翻译一下: 静态成员***通过实例对象访问 显示通过类实例而不是类本身调用方法和属性. 现有一个类Test,有静态方法methods和静态属性fields. 对于静态变量或方法,推荐 ...

  5. conftest.py作用范围

    前言 一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用.在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录 ...

  6. slideToggle()---单击隐藏/浮现--jQuery--click() 方法

    click() 方法 模块隐藏/浮现 <html> <head> <script type="text/javascript" src="/ ...

  7. Oracle 笔记(三)

    Oracle的数据库对象 七大对象:用户.表.约束.序列.视图.同义词和索引 知识点一:用户  -  User  -  账户.管理员-一切对象的宿主 1.创建用户 ???? 2.授权 ???? 授权+ ...

  8. Flutter异步Future

    一.认识Future 1.创建Future void testFuture(){ Future future = new Future(() => null); future.then((_){ ...

  9. java:异常机制(try,catch,finally,throw,throws,自定义异常)

    * String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...

  10. Linux进程: task_struct结构体成员

    一:简介 为了管理进程,内核必须对每个进程所做的事情进行清除的描叙. 比如:内核必须知道进程优先级,他是正在CPU上运行还是因为某些事件被阻塞了,给它分配了什么样的地址空间,允许它访问哪个文件等等.这 ...