[Codeforces #210] Tutorial
Link:
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的更多相关文章
- [Codeforces #172] Tutorial
Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1.每个矩形只有两条边相交,重合的形状为菱形 2.每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ ...
- [Codeforces #514] Tutorial
Link: Codeforces #514 传送门 很简单的一场比赛打崩了也是菜得令人无话可说…… D: 一眼二分,发现对于固定的半径和点,能包含该点的圆的圆心一定在一个区间内,求出区间判断即可 此题 ...
- [Codeforces #196] Tutorial
Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first ...
- [Codeforces #174] Tutorial
Link: Codeforces #174 传送门 A: 求原根的个数,有一条性质是原根个数为$\phi(\phi(n))$,多了一个不会证的性质 如果要确定哪些是原根的话还是要枚举,不过对于每个数不 ...
- [Codeforces #190] Tutorial
Link: Codeforces #190 传送门 A: 明显答案为$n+m-1$且能构造出来 #include <bits/stdc++.h> using namespace std; ...
- [Codeforces #211] Tutorial
Link: Codeforces #211 传送门 一套非常简单的题目,但很多细节都是错了一次才能发现啊…… 还是不能养成OJ依赖症,交之前先多想想corner case!!! A: 模拟,要特判0啊 ...
- [Codeforces #192] Tutorial
Link: Codeforces #192 传送门 前两天由于食物中毒现在还要每天挂一天的水 只好晚上回来随便找套题做做找找感觉了o(╯□╰)o A: 看到直接大力模拟了 但有一个更简便的方法,复杂度 ...
- [Codeforces #201] Tutorial
Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> ...
- [Codeforces #188] Tutorial
Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...
随机推荐
- 苹果API常用英语名词---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 苹果API常用英语名词0. indicating 决定1.in order to 以便 ...
- springmvc4处理get和post请求中文乱码问题
1.在springmvc4处理get和post请求的问题 参看大牛博客连接:https://blog.csdn.net/qq_41665356/article/details/80234392
- 一键前端代理,一行命令开启nginx容器,代理前端页面
我们在前端开发的过程中,在对接口时候,往往需要跨域请求,那么及其简便的方法就是使用nginx反向代理,但是存在几点缺点 1.在新的一个项目下,我们需要找到安装nginx目录的nginx.conf文件并 ...
- 如何用CMD开启3389与查看3389端口
开启 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections / ...
- net_dev_init
Kernel: 4.12.6 网络设备初始化,主要包括初始化softnet_data,注册收发包软中断等: static int __init net_dev_init(void) { int i, ...
- Linux-进程间通信(四): 域套接字
1. 域套接字: (1) 只能用于同一设备上不同进程之间的通信: (2) 效率高于网络套接字.域套接字仅仅是复制数据,并不走协议栈: (3) 可靠,全双工: 2. 域套接字地址结构: struct s ...
- Style2Paints:用AI技术为线稿快速上色的工具(GitHub 3310颗星)
python 开源项目: Style2Paints:用AI技术为线稿快速上色的工具(GitHub 3310颗星) https://github.com/lllyasviel/style2paints
- 64_a1
AGReader-1.2-16.fc26.x86_64.rpm 13-Feb-2017 23:31 50654 ATpy-0.9.7-11.fc26.noarch.rpm 13-Feb-2017 22 ...
- SRM 739 Div.2
250 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostre ...
- 【转】Debug 运行正常,Release版本不能正常运行
http://blog.csdn.net/ruifangcui7758/archive/2010/10/18/5948611.aspx引言 如果在您的开发过程中遇到了常见的错误,或许您的Release ...