Codeforces round 1098
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
Codeforces round 1098的更多相关文章
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #370 - #379 (Div. 2)
题意: 思路: Codeforces Round #370(Solved: 4 out of 5) A - Memory and Crow 题意:有一个序列,然后对每一个进行ai = bi - bi ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- 微信小程序request同步请求
今天在搞微信小程序的时候顺手用了async,await死活不起作用,后来查了一下子,竟然不支持,那没办法就换了一种实现wx.request同步请求的方案 祭出promise来搞一搞,下面直接贴代码,简 ...
- linux Mate Lxde 消耗资源对比
腾讯云 标准型SA1 | SA1.SMALL1 1核1G AMD LXDE: MATE:
- (网页)JS去掉字符串前后空格或去掉所有空格的用法(转)
转自脚本之家: 这篇文章主要介绍了JS去掉字符串前后空格或去掉所有空格的用法,需要的朋友可以参考下: 代码如下: function Trim(str) { return str.replace(/(^ ...
- @RequestMapping --注解用法详解
一.编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了.这时我们可以在方法前添加 @SuppressWarnin ...
- 7z常用命令行&7z检测压缩包完整性&7z压缩包错误不执行rsync同步
7Z简介&常用命令 7Z脚本使用说明 7Z检测压缩包完整性脚本 7Z压缩包错误不执行Rsync脚本 1.7Z简介&常用命令 ⑴简介: 7z,全称7-Zip, 是一款开源软件.是目前公认 ...
- Windows批处理 -- 打造MySQLCleaner
批处理打造MySQLCleaner 1. 简介 在我们卸载MySQL数据库的时候,往往除了需要卸载软件,还需要删除各种注册表信息,隐藏文件,卸载服务,否则当我们再次安装MySQL时就会出现 ...
- orcale 使用创建日期排序然后分页每次取排序后的固定条数
需求: 一个使用mybatis分页插件的分页列表, 现在要求新增一条数据或者修改一条数据后,显示在最前端 思路: 使用sql , 先将查询出来的数据排序, 然后使用rownum > page*s ...
- Python进阶(二)
高阶函数 1.把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 2.Python内建了map( )和reduce( ) 函数 map()函数接收两个参数,一个是函数 ...
- Unity3d自制字体
这篇教学中会使用到BMFont 这个工具 准备好Unity5.3.2版本,其他版本会有异常 一.制作字体 下载链接: http://www.angelcode.com/products/bmfont/ ...
- 17秋 软件工程 团队第五次作业 Alpha Scrum8
17秋 软件工程 团队第五次作业 Alpha Scrum8 今日完成的任务 世强:部门人员管理界面设计编写: 港晨:设计主页面: 树民:web后端框架与前端对接: 伟航:app前端界面的美工: 陈翔: ...