A.小的那个数的阶乘。

#include<bits/stdc++.h>
using namespace std; int a,b; int main()
{
ios::sync_with_stdio();
cin >> a >> b;
int t = min(a,b);
int ans = ;
for(int i = ;i <= t;i++) ans *= i;
cout << ans << endl;
return ;
}

B.暴力t串的起始位置,比较两个串。

#include<bits/stdc++.h>
using namespace std; int n,m;
string s1,s2;
vector<int> v; int main()
{
ios::sync_with_stdio();
cin >> n >> m >> s1 >> s2;
s1 = ' '+s1;
s2 = ' '+s2;
int ans = 1e9;
for(int i = ;i <= m-n;i++)
{
int cnt = ;
for(int j = ;j <= n;j++)
{
if(s1[j] != s2[i+j]) cnt++;
}
if(cnt < ans)
{
ans = cnt;
v.clear();
for(int j = ;j <= n;j++)
{
if(s1[j] != s2[i+j]) v.push_back(j);
}
}
}
cout << ans << endl;
for(int i = ;i < v.size();i++) cout << v[i] << " ";
cout << endl;
return ;
}

C.先按l排序,遍历每一段,维护一个优先队列,每次把当前之前的段从优先队列中拿出来,更新对应长度的最小花费,然后把该段放进优先队列。

#include<bits/stdc++.h>
using namespace std; int n,x;
map<int,int> mp;
struct xx
{
int l,r,c;
friend bool operator <(xx a,xx b)
{
return a.l < b.l;
}
}a[];
struct yy
{
int r,len,c;
yy(int a,int b,int cc):r(a),len(b),c(cc){};
friend bool operator <(yy a,yy b)
{
return a.r > b.r;
}
};
priority_queue<yy> q; int main()
{
ios::sync_with_stdio();
cin >> n >> x;
for(int i = ;i <= n;i++) cin >> a[i].l >> a[i].r >> a[i].c;
sort(a+,a++n);
int ans = 2e9+;
for(int i = ;i <= n;i++)
{
while(!q.empty() && q.top().r < a[i].l)
{
if(!mp.count(q.top().len)) mp[q.top().len] = q.top().c;
else mp[q.top().len] = min(mp[q.top().len],q.top().c);
q.pop();
}
int len = a[i].r-a[i].l+;
if(mp.count(x-len)) ans = min(ans,a[i].c+mp[x-len]);
q.push(yy(a[i].r,len,a[i].c));
}
if(ans == 2e9+) cout << - << endl;
else cout << ans << endl;
return ;
}

D.暴力dp刚好卡过。

#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std; int t,l,r;
long long dp[],f[]; int main()
{
ios::sync_with_stdio();
cin >> t >> l >> r;
for(int i = ;i <= r;i++)
{
f[i] = (long long)i*(i-)/;
dp[i] = f[i];
}
for(int i = ;i <= r;i++)
{
for(int j = i,k = ;j <= r;j += i,k++) dp[j] = min(dp[j],dp[i]*k+f[k]);
}
long long tt = ,ans = ;;
for(int i = l;i <= r;i++)
{
ans = (ans+dp[i]%MOD*tt)%MOD;
tt = tt*t%MOD;
}
cout << ans << endl;
return ;
}

E.dp,类似01背包,开两个数组记录两个串中的位置。

#include<bits/stdc++.h>
using namespace std; string s,t;
int n,m,x,a[],b[]; int main()
{
ios::sync_with_stdio();
cin >> n >> s >> m >> t >> x;
s = ' '+s;
t = ' '+t;
for(int i = ;i <= x;i++) a[i] = ;
for(int i = ;i <= n;i++)
{
for(int j = x;j >= ;j--)
{
int now = a[j];
if(i < b[j]) continue;
int k = ;
while(k+now <= m)
{
if(s[i+k] != t[now+k]) break;
k++;
}
if(now+k > m)
{
cout << "YES" << endl;
return ;
}
if(a[j+] < now+k)
{
a[j+] = now+k;
b[j+] = i+k;
}
}
}
cout << "NO" << endl;
return ;
}

Codeforces_822的更多相关文章

随机推荐

  1. 推荐中的多任务学习-ESMM

    本文将介绍阿里发表在 SIGIR'18 的论文ESMM<Entire Space Multi-Task Model: An Effective Approach for Estimating Po ...

  2. html1,初识html

    vs code编辑器 安装插件 chinese 中文支持 open in browser 快速预览文件 view in browser 快捷键 快捷键 描述 shift + end 选中从光标到行尾 ...

  3. Java工程师 基础+实战 完整路线图(详解版)

    Java工程师 基础+实战 完整路线图(详解版)   Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...

  4. input 只允许输入小数

    oninput = "value=value.replace(/[^\d]/g,'')" 输入浮点数不好使 突发奇想自己写一个与众不同的... oninput="valu ...

  5. JSON的学习与使用

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  6. cf - 920 c 求能否实现交换

    C. Swap Adjacent Elements time limit per test 1 second memory limit per test 256 megabytes input sta ...

  7. Qt Installer Framework翻译(3-1)

    初始化安装 下图说明了安装应用程序的默认工作流程: 本节使用在macOS上运行的Your Application Installer示例来说明默认工作流程.安装程序具有本地化外观,并可感知每个受支持的 ...

  8. Java单体应用 - 导读

    原文地址:http://www.work100.net/training/monolithic 更多教程:光束云 - 免费课程 Java单体应用 本阶段课程将学习如何进行Java单体Web应用开发,经 ...

  9. 「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 Eureka的高可用需要 ...

  10. 简单理解设计模式——享元模式-线程池-任务(tesk)

    前面在写到多线程的文章的时候,一直想写一篇关于线程池等一系列的文章,做一下记录,本篇博客记录一下设计模式中享元模式的设计思想,以及使用享元模式的实现案例——线程池,以及线程池的简化版——任务(tesk ...