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. [转]Tomcat中8005/8009/8080/8443端口的作用

    8005:关闭tomcat进程所用.当执行shutdown.sh关闭tomcat时就是连接8005端口执行“SHUTDOWN”命令--由此,我们直接telnet8005端口执行“SHUTDOWN”(要 ...

  2. Linux日志筛选命令

    (1)Linux目录操作命令 cd ..退出当前目录,返回上一级目录:cd / 退出当前目录,返回根目录: mkdir命令用于创建一个新的目录:rmdir命令功能删除指定的空目录. (2)Linux筛 ...

  3. eigenvalues problem

    由于在看paper中经常会看到generalized eigenvalues.eigenvalues problem等字眼,今晚终于开始认真地重新看了一下线性代数中这部分内容.下面是在学习过程中找出来 ...

  4. java:Hibernate框架2(关联映射(多对一,一对多,一对多双向,一对一主键,一对一唯一外键,多对多双向))

      hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...

  5. #Java学习之路——基础阶段二(第十三篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. centos v7.0解决乱码

    [root@localhost ~]# ll 鎬荤敤閲4-rw-------. 1 root root 1045 8鏈 24 21:17 anaconda-ks.cfg [root@localhost ...

  7. 【神经网络与深度学习】基于Windows+Caffe的Minst和CIFAR—10训练过程说明

    Minst训练 我的路径:G:\Caffe\Caffe For Windows\examples\mnist  对于新手来说,初步完成环境的配置后,一脸茫然.不知如何跑Demo,有么有!那么接下来的教 ...

  8. Maven从入门到精通(四)

    这一篇我会着重讲解Maven的核心命令及作用,Maven在项目构建各个阶段的作用. 1.maven生命周期模型: 1.1.清洁(clean) 1.2.默认(default) 1.3.站点(site) ...

  9. [转帖]C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别

    C#中字典集合HashTable.Dictionary.ConcurrentDictionary三者区别 https://blog.csdn.net/yinghuolsx/article/detail ...

  10. 浅谈React工作原理

    浅谈React工作原理:https://www.cnblogs.com/yikuu/p/9660932.html 转自:https://cloud.tencent.com/info/63f656e0b ...