Codeforces 1037

比赛链接

F之后的先不做了...

A.Packets

logn+1,没细想,反正对。

#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar() inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
int n=read(),x=0;
for(; n; n>>=1,++x);
printf("%d\n",x); return 0;
}

B.Reach Median

//写法麻烦了
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
const int N=2e5+5; int n,s,A[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
n=read(),s=read();
for(int i=1; i<=n; ++i) A[i]=read();
std::sort(A+1,A+1+n);
int p=(n+1)/2; long long ans=0;
if(A[p]>s)
{
int p2=p;
for(int i=1; i<p; ++i) if(A[i]>s) {p2=i; break;}
for(int i=p2; i<=p; ++i) ans+=A[i]-s;
}
else if(A[p]<s)
{
int p2=p;
for(int i=n; i>p; --i) if(A[i]<s) {p2=i; break;}
for(int i=p; i<=p2; ++i) ans+=s-A[i];
}
printf("%I64d\n",ans); return 0;
}

C.Equalize

#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
const int N=1e6+5; int n;
char A[N],B[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
n=read();
scanf("%s%s",A+1,B+1);
int ans=0;
for(int i=1; i<n; ++i)
if(A[i]!=B[i])
if(A[i+1]!=B[i+1]&&A[i]==B[i+1]) std::swap(A[i],A[i+1]), ++ans;
else ++ans;
if(A[n]!=B[n]) ++ans;
printf("%d\n",ans); return 0;
}

D.Valid BFS

用个set队列,模拟一波BFS。

#include <set>
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
const int N=2e5+5; int n,sz[N],A[N],Enum,H[N],nxt[N<<1],to[N<<1];
std::set<int> st[N];
bool vis[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AddEdge(int u,int v)
{
to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum;
to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum;
}
bool Solve()
{
if(A[1]!=1) return 0;
int h=1,t=1,now=2; vis[1]=1;
for(int i=H[1]; i; i=nxt[i]) st[1].insert(to[i]);
while(now<=n && h<=t)
{
int x=A[now++]; if(vis[x]) return 0;
if(!st[h].count(x)) return 0;
++t, ++sz[h], vis[x]=1;
for(int i=H[x]; i; i=nxt[i]) if(!vis[to[i]]) st[t].insert(to[i]);
if(st[t].empty()) --t;
if(sz[h]==st[h].size()) ++h;
}
return now>n;
} int main()
{
n=read();
for(int i=1; i<n; ++i) AddEdge(read(),read());
for(int i=1; i<=n; ++i) A[i]=read();
puts(Solve()?"Yes":"No"); return 0;
}

比赛结束后

E.Trips(正难则反)

要保证答案集合中的每个点到集合内点的连边至少有k条。正序不好更新,考虑倒序。

添加完所有边后,删掉度数不足k的点,每成功删一个点,如果其邻接点也在答案集合中,将其度数减一再尝试删它然后删它的邻接点...

邻接点当然要用set存。。复杂度\(O(n\log n)\)。

当时还想了下倒着做,还立马觉得不行。。

//343ms	40100KB
#include <set>
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
const int N=2e5+5; int n,m,K,Enum,H[N],to[N<<1],nxt[N<<1],dgr[N],Ans[N];
bool del[N];
std::set<int> ans,E[N];
std::pair<int,int> e[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AddEdge(int u,int v,int i)
{
E[u].insert(v), E[v].insert(u);
e[i]=std::make_pair(u,v), ++dgr[u], ++dgr[v];
}
void Delete(int x)
{
del[x]=1, ans.erase(x);
int v;
for(std::set<int>::iterator it=E[x].begin(); it!=E[x].end(); ++it)
if(!del[v=*it] && --dgr[v]<K) Delete(v);
} int main()
{
n=read(), m=read(), K=read();
for(int i=1; i<=m; ++i) AddEdge(read(),read(),i);
for(int i=1; i<=n; ++i) ans.insert(i);
for(int i=1; i<=n; ++i) if(!del[i]/*!!*/&&dgr[i]<K) Delete(i);
for(int i=m,u,v; i; --i)
{
Ans[i]=ans.size(), u=e[i].first, v=e[i].second;
if(!del[u]&&!del[v])//都没被删这条边才存在
{
if(--dgr[u]<K) Delete(u);
else if(--dgr[v]<K) ++dgr[u]/*不判pre会重复删*/, Delete(v);
// if(--dgr[u]<K) Delete(u,v);
// if(--dgr[v]<K && !del[v]/*!!*/) Delete(v,u);
}
E[u].erase(v), E[v].erase(u);
}
for(int i=1; i<=m; ++i) printf("%d\n",Ans[i]); return 0;
}

Manthan, Codefest 18 (Div 1 + Div 2) (A~E)的更多相关文章

  1. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C D

    C - Equalize #include<bits/stdc++.h> using namespace std; using namespace std; string a,b; int ...

  2. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)

    还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...

  3. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T4(模拟)

    随便模拟下就过了qwq 然后忘了特判WA了QwQ #include <cstdio> #include <algorithm> #include <cstring> ...

  4. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T3(贪心)

    是一道水题 虽然看起来像是DP,但其实是贪心 扫一遍就A了 QwQ #include <cstdio> #include <algorithm> #include <cs ...

  5. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T2(模拟)

    题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstr ...

  6. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T1(找规律)

    就是找一下规律 但是奈何昨天晚上脑子抽 推错了一项QwQ 然后重新一想 A掉了QwQ #include <cstdio> #include <algorithm> #inclu ...

  7. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D,E

    D. Valid BFS? time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C】Equalize

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] Swap操作显然只能对(i-1,i)执行才有用. 不然直接将i翻转以及j翻转 显然比直接交换更优. 那么现在我们就相当于有两种操作. ...

  9. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) B】Reach Median

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 将数组排序一下. 考虑中位数a[mid] 如果a[mid]==s直接输出0 如果a[mid]<s,那么我们把a[mid]改成s ...

随机推荐

  1. Hadoop生态圈-Flume的组件之自定义拦截器(interceptor)

    Hadoop生态圈-Flume的组件之自定义拦截器(interceptor) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客只是举例了一个自定义拦截器的方法,测试字节传输速 ...

  2. Git 配置环境及常用命令整理

    一.Git教程网站 廖雪峰网站 易百GitHub命令:https://www.yiibai.com/git/git_clone.html 完成Windows环境命令下Git config配置 设置好之 ...

  3. WINDOWS控制界面操作命令for WIN10

    Windows系统:开始--运行--命令大全: cmd--------CMD命令提示符 cleanmgr-------垃圾整理 compmgmt.msc---计算机管理 conf----------- ...

  4. 图解MySQL 内连接、外连接

    2.内连接(INNER JOIN)内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行.(所谓的链接表就是数据库在做查询形成的中间表).例如:下面的语句3 ...

  5. 使用JWPL (Java Wikipedia Library)操作维基百科数据

    使用JWPL (Java Wikipedia Library)操作维基百科数据 1. JWPL介绍 JWPL(Java Wikipedia Library)是一个开源的访问wikipeida数据的Ja ...

  6. 第12月第29天 cocos quick manual

    1. Example: $ cd cocos2d-x $ ./setup.py $ source FILE_TO_SAVE_SYSTEM_VARIABLE $ cocos new MyGame -p ...

  7. AC自动机(Keywords Search)

    题目链接:https://cn.vjudge.net/contest/280743#problem/A 题目大意:首先给你T组测试样例,然后给你n个字符串,最后再给你一个模式串,然后问你这一些字符串中 ...

  8. 01 uni-app框架学习:项目创建及底部导航栏tabBar配置

    1.创建一个项目类型选择uniapp 2. pages里新建3个页面如下 3.在pages.json中配置底部导航tabBar 效果展示:

  9. CSS float浅析

    写在开篇: 浮动属性的设计初衷,只是为了实现文本环绕效果! 时刻牢记这一点,才能正确使用浮动. 由于浮动元素脱离文档流,它后面的块级元素会忽略它的存在,占据它原本的位置,但是这个块级元素中的内联元素, ...

  10. list 复制

    a=[1,2,3] b=a #b值改变,a也会改变 b[0]=90 print(a) [90,2,3] b=list(a) #这样修改b,a的值就不会改变