Div1 530

  • 感受到被Div1支配的恐惧了.jpg
  • 真·一个题都不会.jpg(虽然T1是我智障
  • 感受到被构造题支配的恐惧了.jpg

A

直接树上贪心就行,是我写错了.jpg

B

这个构造超级神仙有没有.jpg

给定的答案矩阵一定满足,每一行或者每一列只有两种不同的字符交替出现

然后枚举+贪心即可...

C

被老K Diss了.jpg

这题给人的第一印象就是一个非常智障的构造。

然后发现它还有要求...每个节点的度数最大值最小...

然后就不会了.jpg

(开什么玩笑,怎么可能不会!

然后就可以通过枚举这个最大值的方式解决,然后剩下的就直接连在某个点上来满足它的要求...

具体实现看代码吧...有点说不清

总之就是一个$K$叉树+一条链...

#include <bits/stdc++.h>
using namespace std;
#define N 100005
#define ll long long
int fa[N],n,p;ll now,a[N];
int main()
{scanf("%d%lld",&n,&now);if(now*2>(ll)n*(n+1))return puts("No"),0;if(now<n*2-1)return puts("No"),0;for(p=1;p<=n;p++){long long dep=1,cnt=1,t=1,c=1;while(cnt<n)c=c*p,dep++,t+=dep*min(c,n-cnt),cnt+=c;if(t<=now)break;}puts("Yes");long long dep=1,cnt=1,t=1,c=1;a[1]=1;while(cnt<n){dep++;c=c*p;a[dep]=min(c,n-cnt);t+=dep*min(c,n-cnt),cnt+=c;}now-=t;long long now_d=dep,aft_d=dep+1;while(now){if(a[now_d]<=1)now_d--;a[now_d]--;ll tmp=min(aft_d++,now_d+now);now-=tmp-now_d;a[tmp]++;}int lst=1;for(int i=2;i<aft_d;i++){int nowp=lst-a[i-1]+1,nowk=0;// printf("%lld\n",a[i]);for(int j=lst+1;j<=lst+a[i];j++){if(nowk==p)nowp++,nowk=0;nowk++,fa[j]=nowp;}lst+=a[i];}for(int i=2;i<=n;i++)printf("%d ",fa[i]);puts("");
}
//sdadasdasd

D

这个读题杀啊...

根本读不懂啊.jpg

读懂了就是维护一个动态前缀和来求满足这个式子$sum_{i-1}\times 2\le a_i$的$i$的数量.jpg

那么显然,答案小于$30$

然后就直接树状数组+set即可...

每次找到$\min {a_i}$然后每次翻倍去找+树状数组查前缀和.jpg

就是慢了点.jpg

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <iostream>
#include <bitset>
#include <set>
using namespace std;
#define N 500005
#define ll long long
int w[N],p[N],n,sp;char str[10];
multiset<int >s;int siz;ll c[N];
void fix(int x,int v){for(;x<=sp;x+=x&-x)c[x]+=v;}
ll find(int x){ll ret=0;for(;x;x-=x&-x)ret+=c[x];return ret;}
void add(int x){siz++;s.insert(p[x]);fix(x,p[x]);}
void del(int x){siz--;s.erase(s.find(p[-x]));fix(-x,-p[-x]);}
int get_ans()
{if(!siz)return 0;int ret=1,now=*s.begin();while(1){if(now>1e9)break;if(s.upper_bound(now<<1)!=s.end()){int t=*s.upper_bound(now<<1);t=lower_bound(p+1,p+sp+1,t)-p;if(find(t-1)*2<p[t])ret++;now=p[t]+now;}else return siz-ret;}return siz-ret;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%s%d",str,&p[i]),(str[0]=='+'?(w[i]=p[i]):(w[i]=-p[i]));sort(p+1,p+n+1);sp=unique(p+1,p+n+1)-p-1;for(int i=1;i<=n;i++)w[i]=(w[i]<0)?-(lower_bound(p+1,p+sp+1,-w[i])-p):lower_bound(p+1,p+sp+1,w[i])-p;for(int i=1;i<=n;i++)if(w[i]<0)del(w[i]),printf("%d\n",get_ans());else add(w[i]),printf("%d\n",get_ans());
}
//     dasdasd

转载于:https://www.cnblogs.com/Winniechen/p/10352603.html

Codeforces round 1098相关推荐

  1. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  2. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

  3. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  4. Codeforces Round #270

    Codeforces Round #270 题目链接 A:我是筛了下素数.事实上偶数仅仅要输出4和x - 4,奇数输出9和x - 9就可以 B:贪心的策略,把时间排序后.取每k个的位置 C:贪心.每次 ...

  5. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  6. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

  7. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  8. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  9. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

最新文章

  1. 接上一篇配置多仓库相关命令
  2. java中如何设计答题小系统_java的一点问题,设计一个答题的程序
  3. html超链接使用d,HTML图像的调用和超链接
  4. 2019 编程语言终极排行榜:Java 稳坐榜首!
  5. 【redis】redis基础命令,分布式锁,缓存问题学习大集合
  6. Python绘制傅里叶变换、反变换与带通滤波图像
  7. oracle中循环读出一个表的信息插入到另外一个表中
  8. 创建git仓库和常用的命令
  9. 抖音快手直播如何快速粘粉涨粉,直播话术新人必备【干货】
  10. 企业终端安全应该包括哪几部分?
  11. m118w重置墨粉_富士施乐 Fuji Xerox DocuPrint M118w 加粉及清零
  12. java servlet mysql_servlet+mysql实现简易的登录功能
  13. 怎么用matlab进行频域分析法,如何用Matlab进行频域分析?
  14. 用c语音打一个简单的a+b
  15. 关于生物医学工程{血站+软件}的看法
  16. 模拟退火算法全解(Simulated Annealing)文末有源码
  17. 什么情况下需要破坏双亲委派模型
  18. Matlab最小面积包围四边形
  19. ElementUI 图标Icon
  20. 【福尔摩斯的约会】-PAT

热门文章

  1. ios html 调试,使用iframe和vconsole调试ios网页
  2. 电脑不能打字_电脑拼音打字快速入门秘籍
  3. linux查看进程自身全路径,在linux环境下如何查看进程的全路径
  4. android webview 数字键盘,android – 在WebView中显示数字键盘
  5. java卡片布局例子_Java编程使用卡片布局管理器示例【基于swing组件】
  6. 宝塔清mysql主从日志_宝塔面板Mysql主从日志文件mysql-bin文件清除方法
  7. python文件打不开 环境变量错误_【图片】[求助]cmd用环境变量突然打不开文件【python吧】_百度贴吧...
  8. matlab如何将两张图画在一起,如何在MATLAB里面将两个图画在一起
  9. java socket 二次发送_发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题...
  10. java json特殊字符处理_java json字符串传递给 js 时 特殊字符转义错误 研究