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. linux RPM manager

    RPM manage:rpm2cpio package_name | cpio -id #将一个rpm包解压至当前目录rpm -qi package_name #查看一个已安装的rpm包信息rpm - ...

  2. Flask使用Flask-SQLAlchemy操作MySQL数据库

    前言: Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作.SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台.SQLAl ...

  3. DrangonBorns

    团队介绍 团队名称:DrangonBorns(龙裔)      团队博客:http://www.cnblogs.com/DragonBorns/     团队队长:蒲建国     队长博客链接:htt ...

  4. Python 中的字符串(str)、字典(dict)详解及操作方法

    一.字符串 在python中字符串是一种重要数据类型.其他数据类型分别为: 数字-number -------- int.long.float.complex这几种 字符串-string ------ ...

  5. PAT 1002 写出这个数

    https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384 读入一个自然数n,计算其各位数字之和,用汉语 ...

  6. Delphi/XE2 使用TIdHttp控件下载Https协议服务器文件[转]

    之前的一篇博文详细描述了使用TIdhttp控件下载http协议的文件,在我项目的使用过程中发现对于下载Https协议中的文件与Http协议的文件不同,毕竟Https在HTTP协议基础上增加了SSL协议 ...

  7. GIL全局解释器锁+GIL全局解释器锁vs互斥锁+定时器+线程queue+进程池与线程池(同步与异步)

    以多线程为例写个互斥锁 from threading import Thread ,Lockimport timemutex = Lock() n = 100 def task(): global n ...

  8. Fantacy团队周二站立会议

    词频分析模型 1.这次站会是周二开的,但是由于我个人的疏忽,哎,不说了. 2.会议时间:2016年3月29日12:03~12:30. 持续时长:27分钟 会议参加成员:组长:杨若鹏 http://ww ...

  9. 设计模式笔记:适配器模式(Adapter)

    1. 适配器模式简介 1.1 模式定义 适配器模式:通过一个类的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器从结构上分为:类适配器和对象适配器.其 ...

  10. python 字符串内置方法实例

    一.字符串方法总结: 1.查找: find(rfind).index(rindex).count 2.变换: capitalize.expandtabs.swapcase.title.lower.up ...