Bike老爷问了好几天到底要怎样简单的题目你们才能AK啊终于在他每天降难度直到要走了才出了一套我们能AK的题。虽然前几天的题换成llj肯定随便AK。

其实最近有点方虽然通常最后都写完了把该拿的分拿了该拍的拍了,但是并不是很顺利的那种前30min切了T1,再1h切t2拍了最后写t3然后拍这样,这套题推了半天t1没推出来就弃了去搞t2,结果半天把fwt打挂了又去搞t3,开考1h多终于把t3搞出来了才又去回想我的fwt,最后1h先猜了个t1的结论然后先想打个树dp之类的验证发现不会,又证了半天才勉强觉得是对的。t3还没有拍,交题的时候都很虚。如果是正式的考场,特别是像noip比较简单的,这种情况我可能心态就崩了,别说AK,一不小心爆个0也不是不可能。但总得来说先通读题每道有个大概的想法和及时弃题不要对着一个狂肝其他该要的分都不要(去年能要是明白这个道理我大概就不在这里了吧)应该是没错的,然后心态要稳这样?

B 君的第一题hohhot

结论题。画一条链,发现胜负只跟最上面一条边有关,画一朵菊花,发现答案就是和根相连的所有边的异或和。大胆地猜测,这是个结论。考虑和根相连只有一条边的情况,任何一次操作都会改变这条边,那么胜负只跟这条边原本的状态有关。如果根有多条边相连,那么每条边底下的操作情况互不影响,答案就是每条边的答案的异或和。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,a[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} #define ANS
int main() {
#ifdef ANS
freopen("hohhot.in","r",stdin);
freopen("hohhot.out","w",stdout);
#endif
read(n);
For(i,,n) {
int x,y,z;
read(x); read(y); read(z);
a[x]^=z; a[y]^=z;
}
For(i,,n) printf("%d\n",a[i]);
Formylove;
}

B 君的第二题lhasa

这不是一道FWT的裸题么,毕老爷给的标答也就是换一种方式的各种集合变换,和FWT也差不到哪去吧,我觉得noip不会考。。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,k,a[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL f[N],b[N];
void FWT(int n,int F) {
for(int i=;i<n;i<<=)
for(int j=,pp=(i<<);j<n;j+=(pp))
for(int k=;k<i;k++) {
LL x=f[j+k],y=f[j+k+i];
if(F==) f[j+k+i]=x+y;
else f[j+k+i]=y-x;
} } #define ANS
int main() {
#ifdef ANS
freopen("lhasa.in","r",stdin);
freopen("lhasa.out","w",stdout);
#endif
read(n); read(k);
For(i,,n) {
read(a[i]);
f[a[i]]++;
}
int up=(<<k);
For(i,,up) b[i]=f[i];
FWT(up,);
For(i,,up) f[i]=f[i]*f[i];
FWT(up,-);
For(i,,up) f[i]=(f[i]-b[i])/;
//For(i,0,up-1) printf("%lld ",f[i]); puts("");
For(i,,k-) {
Rep(s,up-,) if(!(s&(<<i)))
f[s]+=f[s|(<<i)];
}
For(s,,up-) printf("%lld\n",f[s]);
Formylove;
}

B 君的第三题urumqi

并查集+set启发式合并,之前讲过的一道题。

我开了两个并查集,一个并查集维护和我相同集合的元素,一个并查集维护每个集合不能有的元素。每个集合的每个并查集开个set。

合并的时候启发式合并,不等关秀就在每个集合不能有的元素的set里放进一个对面集合的代表元。相等关系我处理的比较暴力,不管怎么样先合并(启发式)再说,合并到一半发现冲突就把这部分合并都撤销了输出NO否则最终合并完输出YES,因为有撤销操作所以大概要用multiset。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,sz,x[N],y[N],o[N],ls[N];
int sta[N],top,sta2[N],top2;
int fa[][N];
multiset<int>s1[N],s2[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int find(int x,int f) { return x==fa[f][x]?x:fa[f][x]=find(fa[f][x],f); } #define ANS
int main() {
#ifdef ANS
freopen("urumqi.in","r",stdin);
freopen("urumqi.out","w",stdout);
#endif
read(n);
For(i,,n) {
read(x[i]); read(y[i]); read(o[i]);
ls[++ls[]]=x[i];
ls[++ls[]]=y[i];
}
sort(ls+,ls+ls[]+);
sz=unique(ls+,ls+ls[]+)-(ls+);
For(i,,n) {
x[i]=lower_bound(ls+,ls+sz+,x[i])-ls;
y[i]=lower_bound(ls+,ls+sz+,y[i])-ls;
}
For(i,,sz) {
fa[][i]=i;
fa[][i]=i;
s1[i].insert(i);
}
For(i,,n) {
int u1=find(x[i],),v1=find(x[i],);
int u2=find(y[i],),v2=find(y[i],);
if(o[i]) {
if(u1==u2) puts("Yes");
else {
int fl=;
if(s1[u1].size()<s1[u2].size()) swap(u1,u2),swap(v1,v2);
fa[][u2]=u1;
top=;
while(s1[u2].size()) {
int tp=*s1[u2].begin();
if(s2[v1].find(tp)!=s2[v1].end()) {
while(top) {
int t=sta[top--];
s1[u2].insert(t);
s1[u1].erase(t);
}
fl=;
break;
}
s1[u2].erase(s1[u2].begin());
sta[++top]=tp;
s1[u1].insert(tp);
}
if(!fl) {
int tpfl=;
if(s2[v1].size()<s2[v2].size()) { tpfl=; swap(u1,u2),swap(v1,v2); }
fa[][v2]=v1;
top2=;
while(s2[v2].size()) {
int tp=*s2[v2].begin();
if(s1[u1].find(tp)!=s1[u1].end()) {
while(top) {
int t=sta[top--];
if(!tpfl) {
s1[u2].insert(t);
s1[u1].erase(t);
}
else {
s1[u1].insert(t);
s1[u2].erase(t);
}
}
while(top2) {
int t=sta2[top2--];
s2[v2].insert(t);
s2[v1].erase(s2[v1].find(t));
}
}
s2[v2].erase(s2[v2].begin());
sta2[++top2]=tp;
s2[v1].insert(tp);
}
}
if(fl) {
puts("No");
fa[][u1]=u1; fa[][u2]=u2;
fa[][v1]=v1; fa[][v2]=v2;
}
else puts("Yes");
}
}
else {
if(u1==u2) puts("No");
else {
puts("Yes");
s2[v1].insert(u2);
s2[v2].insert(u1);
}
}
}
Formylove;
}

NOIp2018集训test-10-19 (bike day5)的更多相关文章

  1. [NOIP2018模拟赛10.19]只会暴力报告

    闲扯 今天又是暴力满满(并不)的一天呢 昨天老师说了分数要正态分布,今天看起来...不过暴力分很多,虽然我人太傻逼又没打满 T1 woc?不是说送分的吗,看起来又是个树形DP神题,暴力告辞,链上的搞一 ...

  2. 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定

    [源码下载] 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定 作者:we ...

  3. Scrum会议10.19

    Scrum会议 组名称:好好学习 项目名称:记账本 参会成员:林莉(Master)胡丽娜 宫丽君 汪东涵 时间:2016.10.19 已完成内容: 1.完成新项目的查找,查找学姐的代码和项目. 2.理 ...

  4. IDC Digital Transition Annual Festival(2018.10.19)

    时间:2018.10.19地点:北京万达文化酒店

  5. 2018.10.19浪在ACM 集训队第一次测试赛

    2018.10.19浪在ACM 集训队第一次测试赛 待参考资料: [1]:https://blog.csdn.net/XLno_name/article/details/78559973?utm_so ...

  6. 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)

    20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  7. [NOIP2018模拟赛10.16]手残报告

    [NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...

  8. NOIp2018集训test-10-18 (bike day4)

    这是一套简单题,这几天的考试让bike老爷感觉很绝望,说实话我也确实不知道还能怎么更简单了. 这几天的题换做llj.sxy应该都能轻松AK吧,至少随便考个250+应该不是问题吧,我越来越觉得觉得我跟他 ...

  9. NOIp2018集训test-10-17 (bike day3)

    发现自己gradully get moodier and moodier了 负面情绪爆发地越来越频繁,根本out of control,莫名其妙地就像着了魔一样 为什么用英语大概是因为今天早上早自习因 ...

随机推荐

  1. 基于c语言数据结构+严蔚敏——线性表章节源码,利用Codeblocks编译通过

    白天没屌事,那我们就来玩玩线性表的实现吧,快要失业了,没饭吃了咋整哦 题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B ...

  2. java版扫雷

    package com.titian.bean; import java.awt.CardLayout; import java.awt.Point; public class Grid { char ...

  3. 轻松解决U盘拷贝文件时提示文件过大问题

    现在的高科技时代生活中,u盘的使用已经是许多从事电脑it行业的人每天都必须要用到的用具.可以在一台电脑上使用u盘拷贝文件到另外一台电脑上进行使用,加上它的身材小巧,非常方便我们随身携带到任何地方进行使 ...

  4. Git Git管理码云项目

    Git  一.下载安装 1. 要使用git 先安转git 请到官网下载最新git  https://git-scm.com/downloads 2. 一路默认安装,安装完成右键查看下是否有Git. 二 ...

  5. Some Simple Mistakes I had

    This week, I had some mistakes. It is really hard to say: #1 py business what's happening l = abs(px ...

  6. ZROI week4

    考试 前言 起晚了,大概10点才开始看T1,被别人问了T2有点懵逼. 和 这题看了就A掉了,感觉很像原题的样子,是我的错觉吗?? 串串 某神仙有个\(O(n)\)做法问了我一下,我当时也没怎么想(因为 ...

  7. 微信小程序 Page构造函数重写

    //utils/utils.js const oldPage = Page; console.log(oldPage) Page = function (app) { //定义新函数 app.newS ...

  8. 字符串模式匹配算法系列(三):Trie树及AC改进算法

    Trie树的python实现(leetcode 208) #!/usr/bin/env python #-*- coding: utf-8 -*- import sys import pdb relo ...

  9. upc组队赛1 小C的数学问题【单调栈】(POJ2796)

    小C的数学问题 题目描述 小C是个云南中医学院的大一新生,在某个星期二,他的高数老师扔给了他一个问题. 让他在1天的时间内给出答案. 但是小C不会这问题,现在他来请教你. 请你帮他解决这个问题. 有n ...

  10. 【纯净软件】三款照片EXIF信息删除软件 Clear Exif、JPEG & PNG Stripper、Easy Exif Delete 非专业横向对比

    商业软件:需支付费用后方可使用. 共享软件:需支付费用,但可以先免费试用(有使用期限.功能限制). 免费软件:无需支付费用,无使用期限,无功能限制. 纯净软件:无广告.无联网行为的免费软件. 自由软件 ...