RT,即将退役的人懒得一篇篇写题解,于是有了这个东西


CF1004E

树上选一条不超过k个点的链,最小化其余点到链上点的最大距离

这个思路很有意思,不像平时一般的树上问题,是从叶子开始一点点贪心合并直到合得只剩一条链,这条链就是最后的答案

用优先队列完成,复杂度$O(n\log n)$

 #include<set>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
struct a{int pts,len;};
bool operator < (a x,a y)
{
return x.len>y.len;
}
set<pair<int,int> > st[N];
priority_queue<a> hp;
int n,k,t1,t2,t3,siz,ans;
int main()
{
scanf("%d%d",&n,&k),siz=n;
for(int i=;i<n;i++)
{
scanf("%d%d%d",&t1,&t2,&t3);
st[t1].insert(make_pair(t2,t3));
st[t2].insert(make_pair(t1,t3));
}
for(int i=;i<=n;i++)
if(st[i].size()==)
hp.push((a){i,(*st[i].begin()).second});
while(hp.size()>||k<siz)
{
a mn=hp.top(); hp.pop(),siz--,ans=mn.len;
int p=mn.pts,nxt=(*st[p].begin()).first;
st[nxt].erase(st[nxt].lower_bound(make_pair(p,)));
if(st[nxt].size()==)
hp.push((a){nxt,ans+(*st[nxt].begin()).second});
}
printf("%d",ans);
return ;
}

CF772D

题面看题吧

感觉这题没啥意义,因为考场不太可能想出来

这个东西可以理解为十进制下的“与”(=。=???),记录每个权值出现的次数,出现的和,出现的平方和,搞一个十进制FWT来做

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+,M=1e6,mod=1e9+;
int n,rd,a[N],b[N],c[N],f[N],pw2[N]; long long ans;
void Add(int &x,int y)
{
x+=y;
if(x>=mod) x-=mod;
}
void Trans(int *arr,int typ)
{
if(~typ)
{
for(int i=;i<M;i*=)
for(int j=M-;~j;j--)
if(j/i%) Add(arr[j-i],arr[j]);
}
else
{
for(int i=;i<M;i*=)
for(int j=;j<M;j++)
if(j/i%) Add(arr[j-i],mod-arr[j]);
}
}
int main()
{
scanf("%d",&n),pw2[]=;
for(int i=;i<=n;i++) pw2[i]=2ll*pw2[i-]%mod;
for(int i=;i<=n;i++)
{
scanf("%d",&rd);
a[rd]++,Add(b[rd],rd),Add(c[rd],1ll*rd*rd%mod);
}
Trans(a,),Trans(b,),Trans(c,);
for(int i=;i<M;i++)
if(a[i]) f[i]=(a[i]==)?c[i]:1ll*pw2[a[i]-]*(1ll*b[i]*b[i]%mod+c[i])%mod;
Trans(f,-);
for(int i=;i<M;i++) ans^=1ll*i*f[i];
printf("%lld",ans);
return ;
}

CF908D

据yjc说是NOIP前留的题,然而我并不会,wsl

设$dp[i][j]$表示前缀中有i个a和j个ab的期望,在i+j>=k时到达边界,用高中数学讲的 等差数列*等比数列 算一算

答案是dp[1][0],因为dp[0][0]在没有a的时候会自己转移自己

代码咕咕了

CF908H

调了一下午,不知道为啥过不去,重构了一遍好了。。。。。。

先把AND的连起来,然后一个联通块里XOR判无解,剩下的XOR连边之后相当于选不相交独立集并起来,DP+容斥到有方案就输出

注意不用管siz=1的

 #include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#define vint vector<int>
#define vit vector<int> ::iterator
using namespace std;
const int N=,M=(<<)+,mod=;
int n,m,aset[N],siz[N],idx[N],sta[N],bit[M],pw[M],dp[M]; char str[N][N];
int Finda(int x)
{
return x==aset[x]?x:aset[x]=Finda(aset[x]);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%s",str[i]+),aset[i]=i,siz[i]=;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
if(str[i][j]=='A')
{
int fx=Finda(i),fy=Finda(j);
if(fx!=fy) aset[fy]=fx,siz[fx]+=siz[fy];
}
memset(idx,-,sizeof idx);
for(int i=;i<=n;i++)
if(Finda(i)==i&&siz[i]>) idx[i]=m++;
for(int i=;i<m;i++) sta[i]|=<<i;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
if(str[i][j]=='X')
{
int fx=Finda(i),fy=Finda(j);
if(fx==fy) printf("-1"),exit();
if(~idx[fx]&&~idx[fy])
{
sta[idx[fx]]|=<<idx[fy];
sta[idx[fy]]|=<<idx[fx];
}
}
dp[]=; int all=(<<m)-;
for(int i=;i<=all;i++)
{
int lbt=i&-i;
bit[i]=bit[i>>]+(i&);
dp[i]=(dp[i^lbt]+dp[i^(sta[(int)log2(lbt)]&i)])%mod;
}
for(int i=;i<=all;i++) pw[i]=;
for(int i=;i<=n;i++)
{
int tmp=;
for(int j=all;~j;j--)
{
if((m-bit[j])&) (tmp+=mod-pw[j])%=mod;
else (tmp+=pw[j])%=mod;
pw[j]=1ll*pw[j]*dp[j]%mod;
}
if(tmp) printf("%d",n-+i),exit();
}
return ;
}

CF1140

肥肠爆芡,因为沙茶博主看不懂E和之后的题解,这场比赛咕了

省选前的CF题的更多相关文章

  1. 省选前的th题

    沙茶博主终于整完了知识点并学完了早该在NOIP之前学的知识们 于是终于开始见题了,之前那个奇怪的题单的结果就是这个了 题目按沙茶博主的做题顺序排序 个人感觉(暂时)意义不大的已被自动忽略 洛谷 491 ...

  2. 省选前的JOI

    RT,发现找不到题,于是又开了新坑 JOI特色:重思考,代码难度(相比NOI系列)基本没有 (省选前到处挖坑2333) JOI 2017 Final 焚风现象 差分,莫得了 (不是看到200ms就tm ...

  3. [TaskList] 省选前板子补完计划

    省选前本子补完计划 [ ] 带权并查集 [ ] 树上莫队 - UOJ58 [WC2013]糖果公园 loj2485「CEOI2017」Chase

  4. [OI]省选前模板整理

    省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...

  5. csp退役前的做题计划1(真)

    csp退役前的做题计划1(真) 因为我太菜了,所以在第一次月考就会退役,还是记录一下每天做了什么题目吧. 任务计划 [ ] Z算法(Z Algorithm) 9.28 [x] ARC061C たくさん ...

  6. 解决el-tree lazy懒加载时,连续勾选前两个子节点后第二次进入默认选中时,将父节点也勾选的问题

    在用到el-tree的懒加载和默认勾选功能时,若第一次勾选前几个连续节点,第二次进入默认勾选时,由于el-tree子节点尚未完全加载(只加载出来前几个),默认勾选已经开始(已加载出来的子节点被默认勾选 ...

  7. yyb省选前的一些计划

    突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...

  8. NOIP前的刷题记录

    因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...

  9. 【POJ各种模板汇总】(写在逆风省选前)(不断更新中)

    1.POJ1258 水水的prim……不过poj上硬是没过,wikioi上的原题却过了 #include<cstring> #include<algorithm> #inclu ...

随机推荐

  1. 宇宙最强IDE,查看设计器报错,看不了设计界面

    在使用自定义控件或者用户控件的时候,查看设计器打不开界面的原因: Loaded事件中加以下判断条件:if (!DesignerProperties.GetIsInDesignMode(this))

  2. Ionic2 下处理 Android 设备下返回按钮的事件

    原文发表于我的技术博客 本文分享了 Ionic2 下处理 Android 设备下返回按钮的事件,供参考. 原文发表于我的技术博客 代码中我分享了如何捕捉 Ionic2 项目在 Android 设备下返 ...

  3. Centos7.2下OpenVPN 环境完整部署记录

    关于OpenVPN的有关介绍及为何使用OpenVPN在此就不做赘述了,下面直接记录Centos7.2系统下部署OpenVPN环境的操作过程: 1) 先将本机的yum换成阿里云的yum源 [root@t ...

  4. snmpd.conf 配置

    开启snmp后,一些指标获取不到,需要配置snmpd.conf文件,如下图所示 参考文章:http://blog.csdn.net/flyingfalcon/article/details/47831 ...

  5. openpyxl 实现excel字母列号与数字列号之间的转换

    https://www.cnblogs.com/apple2016/p/9686433.html

  6. VS2013软件的安装和单元测试

    VS2013是什么? 微软在Builder 2013开发者大会上发布了Visual Studio 2013预览版,并且发布其程序组件库.NET 4.5.1的预览版.该软件已于北京时间2013年11月1 ...

  7. 《Linux内核分析》第七周: 可执行程序的装载

    LINUX内核分析第七周学习总结--可执行程序的装载 杨舒雯(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...

  8. 第三个spring冲刺第9天

    今天是第三阶段冲刺的最后第二天了,我们该实现的功能基本已经全部实现了,有填空的,选择题的,还有计时的,目前就是在查BUG,看看有哪些地方有BUG需要修改,以下截图是我们团队所做的功能截图: 首页: 填 ...

  9. 牛客OI周赛7-普及组

    https://ac.nowcoder.com/acm/contest/372#question A.救救猫咪 #include <bits/stdc++.h> using namespa ...

  10. 基于Windows Subsystem for Linux (WSL) 【Ubuntu】在WIN10 Home Edition安装Docker

    root@Andy-PC:~# uname -a Linux Andy-PC --Microsoft #-Microsoft Fri Apr :: PST x86_64 x86_64 x86_64 G ...