D

因为可以用贡献2把起点终点堵掉,所以答案为0/1/2

0/2简单

1:方格可以理解为分层图,考虑每个能到达终点,起点能到达其的点,标记一下,对角线如果仅存在1则为必经之路

E

\(d_i\le n\),我们先把\(2,4,..,2n\)提出来单独拉一条链,然后乱搞即可

F

咕咕

G

似乎是比较套路的题%%%

单独考虑两行A,B是否有解

无解当且仅当A是B的子集或B是A的子集

\(C=A&B\),则\(A^C\)为\(1\)的位置则,\(A\)为\(1\),\(B\)为\(0\)

\(B\)同理

全局无解当且仅当按1个数排序后,相邻的全为包含关系,故我们可以排序后仅根据相邻的判断答案即可

用bitset优化

#include<bits/stdc++.h>
typedef int LL;
#define mp std::make_pair
inline LL Read(){
LL x(0),f(1); char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0' && c<='9'){
x=(x<<3)+(x<<1)+c-'0'; c=getchar();
}return x*f;
}
const LL maxn=2e3+9;
LL n,m,q;
std::bitset<maxn> A[maxn],fac[maxn],C,b1,b2;
struct node{
LL fir,sec;
bool operator < (const node &x)const{
return sec<x.sec || (sec==x.sec && fir<x.fir);//set的比较大小 如出现相对大小则会删去一个
}
};
std::set<node > S;
std::set<std::pair<LL,LL> > ans;
std::set<node >::iterator it1,it2,it3;
std::set<std::pair<LL,LL> >::iterator It1;
inline bool cmp(LL x,LL y){
C=A[x]&A[y];
if(C!=A[x] && C!=A[y]) return true; return false;
}
inline void Modify(LL x,LL cnt,LL ty){
it1=S.find((node){x,cnt}); it2=it1; it2++;
if(it1!=S.begin()){
it3=it1; it3--;
if(ty==-1) ans.erase(mp(it3->fir,it1->fir));
else if(cmp(it3->fir,it1->fir)) ans.insert(mp(it3->fir,it1->fir));
}
if(it2!=S.end()){
if(ty==-1) ans.erase(mp(it1->fir,it2->fir));
else if(cmp(it1->fir,it2->fir)) ans.insert(mp(it1->fir,it2->fir));
}
if(it1!=S.begin() && it2!=S.end()){
--it1;
if(ty==1) ans.erase(mp(it1->fir,it2->fir));
else if(cmp(it1->fir,it2->fir)) ans.insert(mp(it1->fir,it2->fir));
}
}
int main(){
n=Read(); m=Read(); q=Read();
for(LL i=1;i<=n;++i) S.insert((node){i,0});
for(LL i=1;i<=m;++i){
fac[i]=fac[i-1]; fac[i][i]=1;
}
while(q--){
LL x(Read()),l(Read()),r(Read());
LL cnt(A[x].count());
Modify(x,cnt,-1);
S.erase((node){x,cnt});
A[x]^=((fac[r]>>l)<<l);
cnt=A[x].count();
S.insert((node){x,cnt});
Modify(x,cnt,1);
if(ans.empty()) puts("-1");
else{
It1=ans.begin();
LL x(It1->first),y(It1->second);
C=A[x]&A[y];
b1=A[x]^C; b2=A[y]^C;
LL y1(b1._Find_first()),y3(b2._Find_first());
if(x>y) std::swap(x,y);
if(y1>y3) std::swap(y1,y3);
printf("%d %d %d %d\n",x,y1,y,y3);
}
}
return 0;
}

H

神仙题

假设一条链,则按序染色即可

设有三个分叉,链长为\(a,b,c\),设\(a\ge b\ge c\),则\(b+c\ge k\)

证明:\(a\)与\(b\)和\(c\)一个段的位置,\(b\)和\(c\)比可以让其构成一个段,由于重复比无解

注意必须\(k\ge 2\),因为\(k=2\)时不可能一条链由两个分叉组成

寻找解:找到直径,由于其他的点到直径的一端点一定是最远的,故由两端点找次短及三次短判断即可

构造解:直径端点为根遍历,按深度染色

CF1214题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 【SP1811】 LCS - Longest Common Substring(后缀自动机)

    题目链接 对第一个串建出\(SAM\),然后用第二个串去匹配. 如果能往下走就往下走,不能的话就跳parent tree的父亲,直到能走为止.如果跳到\(0\)了还是不能走,重新匹配. #includ ...

  2. java容易混淆的概念

    容易混淆的内容 1.JVM内存模型 2.Java内存模型 3.Java对象模型 JVM内存模型 1.堆 2.虚拟机栈 3.本地方法栈 4.程序计数器 5.方法区 Java内存模型 Java堆和方法区的 ...

  3. 微信小程序组件通信入门及组件生命周期函数

    组件生命周期函数链接地址:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.h ...

  4. Synopsys DC综合脚本示例

    #****************************************************************************** # File : syn_example ...

  5. awvs 中文手册详细版(含10.5及12版本)

    目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...

  6. MySQL Replication--双主结构优缺点

    双主架构图 双主架构实现原理当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从 ...

  7. CentOS 7.6最小化安装(系统盘和数据盘分离安装)

    CentOS 7.6最小化安装(系统盘和数据盘分离安装) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建虚拟机 鉴于大家使用的平台操作系统可能不尽相同,博主精力有限,仅演示 ...

  8. WCF 学习系列——WCF的学习基础

    这个系列的博客由WCF4 高级编程学习记录,如有错误请指正. 首先介绍一些概念: SOA: (Service-Oriented Architecture 面向服务架构),一种架构方法,也是一种编程模式 ...

  9. 重装windows10系统的教程

    1.首先从官网上下载一个win10的系统, 2.准备一个8GB的移动U盘,下载好的镜像文件烧录在这个U盘, 3.按照不同型号的机型,使用不同的按键进入BOIS模式,然后选中U盘作为启动项,读取出来这个 ...

  10. Python 利用random库来实现圆周率的运算

    蒙特卡罗方法求解圆周率 随机向一个正方形以及其内切圆(半径为1)的图形中随机抛洒大量的点,计算每个点到圆心的距离从而判断该点在圆内或圆外,用圆内的点除以总点数就是π/4的值.点数越多,值就越精确. 具 ...