A.简单dp。

#include<bits/stdc++.h>
using namespace std; int n,a[],dp[][] = {}; int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i];
int ans = ;
for(int i = ;i <= n;i++)
{
if(a[i] == )
{
dp[i][] = dp[i-][]+;
dp[i][] = dp[i-][];
}
else
{
dp[i][] = dp[i-][];
dp[i][] = max(dp[i-][],dp[i-][])+;
}
}
cout << max(dp[n][],dp[n][]) << endl;
return ;
}

B.枚举凑满了几个task。

#include<bits/stdc++.h>
using namespace std; int n,m,k,a[]; int main()
{
ios::sync_with_stdio();
cin >> n >> k >> m;
int sum = ;
for(int i = ;i <= k;i++)
{
cin >> a[i];
sum += a[i];
}
sort(a+,a++k);
int ans = ;
for(int i = ;i <= n;i++)
{
int cnt = n-i,left = m-sum*i,now = (k+)*i;
if(left < ) break;
for(int j = ;j <= k;j++)
{
if(left < a[j]*cnt)
{
now += min(cnt,left/a[j]);
break;
}
now += cnt;
left -= a[j]*cnt;
}
ans = max(ans,now);
}
cout << ans << endl;
return ;
}

C.预处理左右两个数的最大值,枚举中间那个点。

#include<bits/stdc++.h>
using namespace std; int n,l[],r[];
long long a[],sum[] = {},lm[],rm[]; long long f(int l,int r)
{
long long t1 = r == ?:sum[r-];
long long t2 = l == ?:sum[l-];
return t1-t2;
} int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i < n;i++)
{
cin >> a[i];
sum[i] = sum[i-]+a[i];
}
for(int i = ;i <= n;i++)
{
int t;
long long maxx = -1e18;
for(int j = ;j <= i;j++)
{
if(f(,j)-f(j,i) > maxx)
{
maxx = f(,j)-f(j,i);
t = j;
}
}
l[i] = t;
lm[i] = maxx;
maxx = -1e18;
for(int j = i;j <= n;j++)
{
if(f(i,j)-f(j,n) > maxx)
{
maxx = f(i,j)-f(j,n);
t = j;
}
}
r[i] = t;
rm[i] = maxx;
}
long long maxx = -1e18;
int ans1,ans2,ans3;
for(int i = ;i <= n;i++)
{
if(lm[i]+rm[i] > maxx)
{
maxx = lm[i]+rm[i];
ans1 = l[i];
ans2 = i;
ans3 = r[i];
}
}
cout << ans1 << " " << ans2 << " " << ans3 << endl;
return ;
}

D.二分答案,二维前缀和判断。

#include<bits/stdc++.h>
using namespace std; int n,m,k,q,mp[][];
struct xx
{
int x,y,t;
friend bool operator<(xx a,xx b)
{
return a.t < b.t;
}
}a[]; bool ok(int t)
{
memset(mp,,sizeof(mp));
for(int i = ;i <= q && a[i].t <= t;i++) mp[a[i].x][a[i].y] = ;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) mp[i][j] += mp[i][j-]+mp[i-][j]-mp[i-][j-];
}
for(int i = ;i <= n-k+;i++)
{
for(int j = ;j <= m-k+;j++)
{
int endx = i+k-,endy = j+k-;
if(mp[endx][endy]-mp[i-][endy]-mp[endx][j-]+mp[i-][j-] == k*k) return ;
}
}
return ;
} int main()
{
ios::sync_with_stdio();
cin >> n >> m >> k >> q;
for(int i = ;i <= q;i++) cin >> a[i].x >> a[i].y >> a[i].t;
sort(a+,a++q);
int l = ,r = 1e9+;
while(l < r)
{
int mid = (l+r)/;
if(ok(mid)) r = mid;
else l = mid+;
}
if(l == 1e9+) cout << - << endl;
else cout << l << endl;
return ;
}

E.dfs从下到上处理每个点,注意超long long,负值太大直接NO。

#include<bits/stdc++.h>
using namespace std; int n,ok = ;
long long a[],b[];
struct xx
{
int to,k;
xx(int a,int b):to(a),k(b){};
};
vector<xx> v[]; void dfs(int now)
{
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i].to,k = v[now][i].k;
dfs(t);
if(a[t] < )
{
if(1.0*a[t]*k+a[now] < -1e17) ok = ;
a[now] += a[t]*k;
}
else a[now] += a[t];
}
} int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i];
for(int i = ;i <= n;i++) cin >> b[i],a[i] -= b[i];
for(int i = ;i <= n;i++)
{
int x,y;
cin >> x >> y;
v[x].push_back(xx(i,y));
}
dfs();
if(ok && a[] >= ) cout << "YES" << endl;
else cout << "NO" << endl;
return ;
}

F.记录每一个值的上一个位置,就容易计算每个点加入时增加的总价值。

#include<bits/stdc++.h>
using namespace std; int n,a[],la[] = {}; int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i];
long long ans = ;
for(int i = ;i <= n;i++)
{
long long t1 = i-la[a[i]],t2 = n-i+;
ans += t1*t2;
la[a[i]] = i;
}
ans *= ;
ans -= n;
cout << fixed << setprecision() << 1.0*ans/n/n << endl;
return ;
}

最新文章

  1. sql server数据库操作
  2. linux配置oracle11G监听及本地网络服务 及 数据库建库
  3. PHP中Redis替代文件存储Session语句
  4. mysql spider之拆库无忧
  5. Javascript的9张思维导图学习
  6. oracle学习总结5(游标、触发器、过程、方法)
  7. python面向对象高级编程
  8. 总结一下C++各个版本之间的功能扩充
  9. 这是一个简单的前台短信验证码功能 ajax实现异步处理 (发送和校验)
  10. JAVA 中LinkedHashMap要点记录
  11. linux 安装沙盒virtualenv 、virtualenvwrapper
  12. IDEA与eclipse:vm参数调优笔记
  13. CSS中list-style详解
  14. 基于JMH的Benchmark解决方案
  15. JS计算前一天或后一天,前一月后一月
  16. OneinStack PHP多版本共存教程
  17. 记录.NET Core在CentOS上基于Jenkins自动化发布
  18. ubuntu , 笔记本合上盖子时不关机的方法。
  19. 【BZOJ1854】[Scoi2010]游戏 二分图最大匹配
  20. 多条件查询接收很多参数的时候要用Map接收。

热门文章

  1. Linux安装MySQL及基本操作(Centos)
  2. Spring Data JPA使用findAllOrderBy时踩的坑
  3. 入门Grunt前端构建工具
  4. Go Web 编程之 Hello World
  5. OpenLayers 笔记
  6. BFC 是什么东西?
  7. Redis 通配符批量删除key
  8. doT的高级用法及loadData的使用
  9. 【UEFI&amp;BIOS】---BIOS开机串口报&quot;ERROR: C2:V1050007 IO 93B80003-9FB3-11D4-9A3A-0090273FC14D 6413FA18&quot;的分析
  10. dp - 逆序数序列