A. Snowball

链接:http://codeforces.com/contest/1099/problem/A

思路:模拟

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid int m = (l + r) >> 1 const int M = 1e5 + ;
int n,m,x[],y[];
int main()
{
cin>>n>>m;
for(int i = ;i <= ;i ++){
cin>>x[i]>>y[i];
}
for(int i = m;i >= ;i --){
n += i;
for(int j = ;j <= ;j ++){
if(i == y[j])
n-=x[j];
}
n = max(n,);
}
cout<<n<<endl;
}

B. Squares and Segments

链接:http://codeforces.com/contest/1099/problem/B

思路:思维题

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid int m = (l + r) >> 1 const int M = 1e5 + ;
int n,k,cnt;
int main()
{
cin>>n;
for(int i = ;i <= n;i ++){
k = *i*i;
if(n <= k){
cnt = *i;break;
}
}
int ans = k - n;
if(ans < cnt) cout<<cnt*<<endl;
else if(ans < *cnt-) cout<<cnt*-<<endl;
else if(ans < *cnt-) cout<<cnt*-<<endl;
else cout<<cnt*-<<endl;
}

C. Postcard

链接:http://codeforces.com/contest/1099/problem/C

思路:题意可得,*号可以无限复制可以删除也可以不动,那么会让长度变长的只有*,*和?都可以使长度变短。那么根据当前序列长度和想要的长度,改一下就好了,答案不唯一

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid int m = (l + r) >> 1 const int M = 1e5 + ;
int n,ans,ans2,ans1;
int main()
{
string s;
cin>>s;
cin>>n;
int len = s.size();
for(int i = ;i < len;i ++){
if(s[i]=='*')
ans1++;
else if(s[i]=='?')
ans2++;
else
ans++;
}
if(ans-ans1-ans2 > n) cout<<"Impossible"<<endl;
else if(ans1==&&ans < n) cout<<"Impossible"<<endl;
else{
if(ans >= n){
int cnt = ans - n;
for(int i = ;i < len;i ++){
if((s[i+]=='?'||s[i+]=='*')&&cnt) cnt--;
else if(s[i]=='?'||s[i]=='*') continue;
else cout<<s[i];
}
cout<<endl;
}
else{
int cnt = n - ans;
for(int i = ;i < len;i ++){
if(s[i]=='*'&&cnt){
for(int j = ;j <= cnt;j ++){
cout<<s[i-];
}
cnt = ;
}
else if(s[i]!='*'&&s[i]!='?')cout<<s[i];
}
cout<<endl;
}
}
return ;
}

D. Sum in the tree

链接:http://codeforces.com/contest/1099/problem/D

思路:比较简单的dfs吧。。结果dfs的调用写捞了应该取完值再去调用,写成先调用再取值了。

因为题目给的赋值其实是当前节点到根节点的前缀和,那么对于偶数层为了使总体最优肯定是将他的值假设为子节点中最小的值,奇数层已经有赋值就可以不用处理,对于每个节点来说本身的值就是当前点的前缀和减去父节点的前缀和,最后统计一遍所有的点的本身值就好了

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid ll m = (l + r) >> 1 const ll M = 1e5 + ;
const ll inf = 1e18+;
ll head[M],cnt,flag;
ll ans,a[M],b[M];
vector<ll>g[M];
void dfs(ll u,ll fa,ll dep){
ll mn = inf;
if(dep%==){
for(ll i = ;i < g[u].size();i ++){
ll v = g[u][i];
mn = min(mn,a[v]);
}
if(mn != inf) a[u] = mn,b[u] = a[u] - a[fa];
else a[u] = a[fa],b[u] = ;
}
else{
b[u] = a[u] - a[fa];
}
for(ll i = ;i < g[u].size();i ++){
ll v = g[u][i];
dfs(v,u,dep+);
}
} int main()
{
ll n,x;
scanf("%lld",&n);
for(ll i = ;i <= n;i ++){
scanf("%lld",&x);
g[x].push_back(i);
}
for(ll i = ;i <= n;i ++){
scanf("%lld",&a[i]);
}
dfs(,,);
for(ll i = ;i <= n;i ++){
ans += b[i];
if(b[i] < ) flag = ;
}
if(!flag) printf("%lld\n",ans);
else printf("-1\n");
}

Codeforces Round #530 (Div. 2) A,B,C,D的更多相关文章

  1. Codeforces Round #530 (Div. 2) F (树形dp+线段树)

    F. Cookies 链接:http://codeforces.com/contest/1099/problem/F 题意: 给你一棵树,树上有n个节点,每个节点上有ai块饼干,在这个节点上的每块饼干 ...

  2. Codeforces Round #530 (Div. 2):D. Sum in the tree (题解)

    D. Sum in the tree 题目链接:https://codeforces.com/contest/1099/problem/D 题意: 给出一棵树,以及每个点的si,这里的si代表从i号结 ...

  3. Codeforces Round #530 (Div. 2) F 线段树 + 树形dp(自下往上)

    https://codeforces.com/contest/1099/problem/F 题意 一颗n个节点的树上,每个点都有\(x[i]\)个饼干,然后在i节点上吃一个饼干的时间是\(t[i]\) ...

  4. Codeforces Round #530 (Div. 2)F Cookies (树形dp+线段树)

    题:https://codeforces.com/contest/1099/problem/F 题意:给定一个树,每个节点有俩个信息x和t,分别表示这个节点上的饼干个数和先手吃掉这个节点上一个饼干的的 ...

  5. Codeforces Round #530 (Div. 2) C D

    C: *可以保留删除或者增加 ? 保留或者删除 #include<bits/stdc++.h> using namespace std; int main(){ string s; int ...

  6. Codeforces Round #530 (Div. 2)

    RANK :2252 题数 :3 补题: D - Sum in the tree 思路:贪心 把权值放在祖先节点上 ,预处理 每个节点保存 他与他儿子中 权值最小值即可. 最后会有一些叶子节点依旧为 ...

  7. Codeforces Round #530 Div. 1 自闭记

    A:显然应该让未确定的大小尽量大.不知道写了啥就wa了一发. #include<iostream> #include<cstdio> #include<cmath> ...

  8. Codeforces Round #530 (Div. 2) F - Cookies

    F - Cookies 思路:我们先考虑如何算出在每个节点结束最多能吃多少饼干, 这个dfs的时候用线段树维护一下就好了, 然后有个这个信息之后树上小dp一下就好啦. #include<bits ...

  9. Codeforces Round #530 (Div. 1)

    A - Sum in the tree 就是贪心选尽量让上面的点权尽量大,那么对于偶数层的点,其到根节点的和即为所有儿子中的最大值. #include<bits/stdc++.h> usi ...

随机推荐

  1. Python常用内建方法:__init__,__new__,__class__的理解

    python中所有类都是继承自object, 而object提供了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性.可以使用dir()函数可以查看,虽然python提供 ...

  2. BFC 原理

    BFC:Block-level box           +   Forating  +           Context; ------->块元素          决定其子元素如何定位, ...

  3. CentOS 7从Python 2.7升级至Python3.6.1

    引言: CentOS是目前最为流行的Linux服务器系统,其默认的Python 2.x,但是根据python社区的规划,在不久之后,整个社区将向Python3迁移,且将不在支持Python2, 那该如 ...

  4. SpringCloud微服务架构分布式组件如何共享session对象

    一.简单做一个背景说明1.为说明问题,本文简单微服务架构示例如下 2.组件说明分布式架构,每个组件都是集群或者主备.具体说明如下:zuul service:网关,API调用都走zuul service ...

  5. Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)

    当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...

  6. PS调出冷绿色电影画面风格

    原图 一.按照惯例先磨皮,我修照片的习惯是,先拉一层色阶,使直方图平均分配,画面会显得没那么灰,当然,这只是个人喜好,先加后加都没所谓. 二.由于脸部的亮度不够,显得有点脏.所以这一步主要是通过拉曲线 ...

  7. Mysql 字符集及排序规则

    一.字符集 字符集:就是用来定义字符在数据库中的编码的集合. 常见的字符集:utf8.Unicode.GBK.GB2312(支持中文).ASCCI(不支持中文)   二.字符集排序规则   作者本人用 ...

  8. PyCharm中快速给选中的代码加上{}、<>、()、[]

    快捷键Ctrl + Shift + S 呼出下图所示界面:

  9. java代理:静态代理和动态代理

    一.Java中有一个设计模式是代理模式 代理模式是常用的Java设计模式,特征是代理类与委托类有相同的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 代理类 ...

  10. C# Note33: 总结C# 6.0/7.0 新特性

    先注明,本文主体参考自:C# 6.0新特性 目前代码中使用了很多C#6.0的新特性,下面以Point类来做相关叙述: public class Point { public int X { get; ...