Link:

Codeforces #210 传送门

A:

贪心,对每个值都取最大值,不会有其他解使答案变优

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef pair<int,int> P;
typedef double db;
const int MAXN=,INF=<<;
struct data{int op,l,r,x;}dat[MAXN];
int n,m,mx[MAXN],vis[MAXN]; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d%d%d",&dat[i].op,&dat[i].l,&dat[i].r,&dat[i].x);
for(int i=;i<=n;i++)
{
int tmp=;mx[i]=INF;
for(int j=;j<=m;j++)
if(dat[j].op==&&i>=dat[j].l&&i<=dat[j].r)
tmp+=dat[j].x;
else if(dat[j].op==&&i>=dat[j].l&&i<=dat[j].r)
mx[i]=min(mx[i],dat[j].x-tmp);
}
for(int i=;i<=n;i++)
{
if(mx[i]==INF) mx[i]=;
int tmp=mx[i];
for(int j=;j<=m;j++)
if(dat[j].op==&&i>=dat[j].l&&i<=dat[j].r)
tmp+=dat[j].x;
else if(dat[j].op==&&i>=dat[j].l&&i<=dat[j].r&&tmp==dat[j].x)
vis[j]++;
}
for(int i=;i<=m;i++)
if(dat[i].op==&&!vis[i]) return puts("NO"),;
puts("YES");
for(int i=;i<=n;i++)
printf("%d ",mx[i]);
return ;
}

Problem A

B:

答案可行性单调,二分答案

每次判断用$dp[i]$表示到$i$只要要删多少个数,$i$必取

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int MAXN=2e3+;
int n,k,l,r,dat[MAXN],dp[MAXN]; bool check(int x)
{
int ret=n;
for(int i=;i<=n;i++) dp[i]=i-;
for(int i=;i<=n;i++)
for(int j=;j<i;j++)
if(abs(dat[i]-dat[j])<=1ll*x*(i-j))
dp[i]=min(dp[i],dp[j]+i-j-);
for(int i=;i<=n;i++)
ret=min(ret,dp[i]+n-i);
return ret<=k;
} int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%d",&dat[i]);
l=;r=2e9;
while(l<=r)
{//注意爆long long
int mid=l/+r/+(l%+r%)/;
if(check(mid)) r=mid-;
else l=mid+;
}
printf("%d",l);
return ;
}

Problem B

$i$必取这个条件一定要加,否则无法转移

同时注意二分时$l+r$可能爆$longlong$

C:

想到从前往后$dp$,每次按以$i$为左端点时对答案的贡献转移

但这样在$t[i]=s[i]$时是后项相关的,不符合$dp$要求

因此要将$t[i]=s[i]$合并在$t[i]>s[i]$中计算,$t[i]>s[i]$时的贡献变为$(pre+1)*(n-i+1)$

$dp[i][j]$:以前$i$位为左端点结果为$j$的方案数,分$t[i]>s[i]$与$t[i]<s[i]$枚举$pre$转移

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int MAXN=2e3+,MOD=1e9+;
int n,k;char s[MAXN];
ll pre[MAXN][MAXN],dp[MAXN][MAXN]; int main()
{
scanf("%d%d%s",&n,&k,s+);
dp[][]=pre[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=k;j++)
{
dp[i][j]=pre[i-][j]*(s[i]-'a')%MOD;
for(int k=;(k+)*(n-i+)<=j&&k<i;k++)
(dp[i][j]+=dp[i-k-][j-(k+)*(n-i+)]*('z'-s[i]))%=MOD;
pre[i][j]=(pre[i-][j]+dp[i][j])%MOD;
}
printf("%lld",pre[n][k]);
return ;
}

Problem C

[Codeforces #210] Tutorial的更多相关文章

  1. [Codeforces #172] Tutorial

    Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1.每个矩形只有两条边相交,重合的形状为菱形 2.每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ ...

  2. [Codeforces #514] Tutorial

    Link: Codeforces #514 传送门 很简单的一场比赛打崩了也是菜得令人无话可说…… D: 一眼二分,发现对于固定的半径和点,能包含该点的圆的圆心一定在一个区间内,求出区间判断即可 此题 ...

  3. [Codeforces #196] Tutorial

    Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first ...

  4. [Codeforces #174] Tutorial

    Link: Codeforces #174 传送门 A: 求原根的个数,有一条性质是原根个数为$\phi(\phi(n))$,多了一个不会证的性质 如果要确定哪些是原根的话还是要枚举,不过对于每个数不 ...

  5. [Codeforces #190] Tutorial

    Link: Codeforces #190 传送门 A: 明显答案为$n+m-1$且能构造出来 #include <bits/stdc++.h> using namespace std; ...

  6. [Codeforces #211] Tutorial

    Link: Codeforces #211 传送门 一套非常简单的题目,但很多细节都是错了一次才能发现啊…… 还是不能养成OJ依赖症,交之前先多想想corner case!!! A: 模拟,要特判0啊 ...

  7. [Codeforces #192] Tutorial

    Link: Codeforces #192 传送门 前两天由于食物中毒现在还要每天挂一天的水 只好晚上回来随便找套题做做找找感觉了o(╯□╰)o A: 看到直接大力模拟了 但有一个更简便的方法,复杂度 ...

  8. [Codeforces #201] Tutorial

    Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> ...

  9. [Codeforces #188] Tutorial

    Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. python学习笔记(七)之列表

    列表:是一个加强版的数组,什么东西都可以往里面放. 创建列表 创建一个普通列表: >>> member = ['operating system', 'data structure' ...

  2. Python中的异常处理 -- (转)

    python中的异常   异常是指程序中的例外,违例情况.异常机制是指程序出现错误后,程序的处理方法.当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理. Exception类是常用的异 ...

  3. URI设计原则

    以下是与 REST API 相关的重要术语: 资源(Resource) 是一个对象或对某物的表示.它有一些相关联的数据,并有一组方法进行操作. 例如:动物,学校和员工是资源.这些资源都有着删除,添加, ...

  4. wce.exe getpass.exe 读取密码

    http://www.ampliasecurity.com/research/wce_v1_4beta_x32.zip http://www.ampliasecurity.com/research/w ...

  5. js作用域与上下文

    作用域:与调用函数,访问变量的能力有关 作用域分为:局部和全局(在局部作用域里可以访问到全局作用域的变量,但在局部作用域外面就访问不到局部作用里面所设定的变量) 上下文:与this关键字有关 是调用当 ...

  6. python基础===monkeytype可以自动添加注释的模块!

    monkeytype 一个可以自动添加注释的模块! 先要下载: pip install monkeytype 以官网的sample code为例 #moudle.py def add(a, b): r ...

  7. C#中执行批处理文件(.bat),执行数据库相关操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. CNN中千奇百怪的卷积方式大汇总

    1.原始版本 最早的卷积方式还没有任何骚套路,那就也没什么好说的了. 见下图,原始的conv操作可以看做一个2D版本的无隐层神经网络. 附上一个卷积详细流程: [TensorFlow]tf.nn.co ...

  9. Load balancer does not have available server for client:xxx

    今天在搭建一个springcloud项目在搭建以zuul为网关的时候,项目抛了一个异常, com.netflix.zuul.exception.ZuulException: Forwarding er ...

  10. PHP-5.3.27源码安装及nginx-fastcgi配置

    源码安装php cat /etc/redhat-release uname -rm wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.c ...