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. 图片存进Mat类中,然后调用图像矩阵元素

    Mat img = imread();//灰度图 imwrite("origin.png",img); if(img.empty()) { cout << " ...

  2. JAVA初级面试题,附个人理解答案

    一,面向对象的特征:1.抽象 包括数据抽象跟行为抽象,将对象共同的特征取出形成一个类2.继承 被继承类为基类/超类,继承类为子类/派生类3.封装 多次使用道德数据或方法,封装成类,方便多次重复调用4. ...

  3. 【flask】使用配置类管理app测试环境-demo版

    如果对app.config是什么还心有疑惑,或者对于这种配置方式很陌生,参考:flask项目配置 app.config classConfig.py: class BaseConfig(object) ...

  4. Kettle使用教程之数据同步

    数据模型原型如下: 1.表输入,针对最新的数据输入的表 2.目标表,需要更新的表 3.两个表都需要进行排序操作 4.合并,根据id进行合并 5.数据同步(包括更新.插入.删除) 6.点击运行,就可以实 ...

  5. 自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法

    最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常: {"无法添 ...

  6. 十二:jinja2模板中使用url_for

    在页面中,有点击跳转到另一个地址的时候,可以使用url_for来指定要跳转的视图函数:{{ url_for('view_function') }} 如果该视图需要接收参数

  7. win 10 系统激活

    win10企业版永久激活方法?win10企业版是针对企业用户推出的版本,随着win10系统的不断完善,现在越来越多的人选择升级win10,升级完系统就需要激活它.那么今天就为大家分享一下怎么永久激活w ...

  8. python学习笔记:(九)循环(for和while)

    在python中循环包括for和while 1.while循环 while 判断条件: statements ----表示:判断条件为真时执行statements,为假不执行 2.for语句 for ...

  9. Ubantu下部署Flask项目安装与配置

    1.nginx 安装 sudo apt-get install nginx 启动,停止和重启 sudo /etc/init.d/nginx start sudo /etc/init.d/nginx s ...

  10. 【Qt开发】Qt控件之进度条

    QT 进度条操作实例是本文要介绍的内容,在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用   首先在designer中拖一个按钮和 ...