综述

试题为常州集训2019SCDay2

得分\(100+30(0)+28\)


时之终结

问题描述

HZOJ1310

题解

构造题。

发现部分分有一档是 \(Y\) 是 \(2^x\) ,于是自然想到很多个三角形连到一起。

然后正解就是在这个基础上删边。

\(\mathrm{Code}\)

#include<bits/stdc++.h>
using namespace std; #define int long long template <typename Tp>
void read(Tp &x){
x=0;char ch=1;int fh;
while(ch!='-'&&(ch>'9'||ch<'0')) ch=getchar();
if(ch=='-') ch=getchar(),fh=-1;
else fh=1;
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
x*=fh;
} int y,opt=2;
bool eps[1007]; bool deal(){
int bf=y,cnt=0;
while(1){
if(bf&1) return (bf==1);
++cnt;bf>>=1;++opt;
}
return 0;
} namespace Subtask_2{
void solve(){
printf("%lld %lld\n",opt,opt*(opt-1)/2);
for(int i=1;i<opt;i++){
for(int j=i+1;j<=opt;j++) printf("%lld %lld\n",i,j);
}
}
} namespace Subtask_3{
void solve(){
int bf=y;opt=2;int tmp=1;
while(bf){
eps[opt]=(bf&1);bf>>=1;
tmp+=(eps[opt]==0);++opt;
}
printf("%lld %lld\n",opt,opt*(opt-1)/2-tmp);
for(int i=1;i<opt;i++){
for(int j=i+1;j<=opt;j++){
if(j==opt&&!eps[i]) continue;
printf("%lld %lld\n",i,j);
}
}
}
} signed main(){
freopen("review.in","r",stdin);freopen("review.out","w",stdout);
read(y);
if(y==1){
puts("2 1");puts("1 2");
fclose(stdin);fclose(stdout);
return 0;
}
if(y==2){
puts("3 3");puts("1 2");puts("2 3");puts("1 3");
fclose(stdin);fclose(stdout);
return 0;
// 3 3 1 2 2 3 1 3
}
if(deal()) Subtask_2::solve();
else Subtask_3::solve();
return 0;
}

博士之时

问题描述

HZOJ1311

题解

想象它是肽链和肽环

正难则反

链只能倒过来,环随便转

注意长度相同的链、长度相同的环可以互换。

\(\mathrm{Code}\)

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5+10;
const int M=5e5+10;
const int mod=1e9+7;
int Num,n,m1,m2,A,B,head[N],cnt,n0,n1,n2,n3,f[N][2],opt,g[N],fac[N],ans,num,tot,bin[N];bool d[N],w[N],vis[N],pd;//f链,g环
bool cc[20][20],dd[20][20];
struct edge{int nxt,to;}ed[M<<1];
inline void addedge(int x,int y){
ed[++cnt].to=y;ed[cnt].nxt=head[x];head[x]=cnt;
ed[++cnt].to=x;ed[cnt].nxt=head[y];head[y]=cnt;}
inline void Add(int &x,int y){x+=y;x-=x>=mod? mod:0;}
inline int MOD(int x){x-=x>=mod? mod:0;return x;}
inline int Minus(int x){x+=x<0? mod:0;return x;}
inline int fas(int x,int p){int res=1;while(p){if(p&1)res=1ll*res*x%mod;p>>=1;x=1ll*x*x%mod;}return res;}
inline void DFS(int u){
vis[u]=true;num++;int record=0;
for(register int i=head[u];i;i=ed[i].nxt){
int v=ed[i].to;if(vis[v]){record++;continue;}
DFS(v);
}
if(!ed[head[u]].nxt)opt=w[u];
if(record==2)pd=true;
}
int main(){
freopen("refrain.in","r",stdin);
freopen("refrain.out","w",stdout);
scanf("%d",&Num);
scanf("%d%d%d",&n,&m1,&m2);
for(register int i=1;i<=m1;i++){
scanf("%d%d",&A,&B);
d[A]=true;d[B]=true;addedge(A,B);
}
for(register int i=1;i<=m2;i++){
scanf("%d%d",&A,&B);
w[A]=true;w[B]=true;addedge(A,B);
}
fac[0]=1;for(register int i=1;i<=n;i++)fac[i]=1ll*fac[i-1]*i%mod;
bin[0]=1;for(register int i=1;i<=n;i++)bin[i]=2ll*bin[i-1]%mod;
ans=fac[n];
for(register int i=1;i<=n;i++)
if(!vis[i]){
num=0;pd=false;DFS(i);
if(num==1)n0++;
else if(num==2){if(d[i]&&w[i])n3++;else if(d[i])n1++;else n2++;}
else if(pd)g[num]++;else f[num][opt]++;
}
tot=fac[n0];
tot=1ll*tot*fac[n1]%mod*bin[n1]%mod;
tot=1ll*tot*fac[n2]%mod*bin[n2]%mod;
tot=1ll*tot*fac[n3]%mod*bin[n3]%mod;
for(register int i=3;i<=n;i++)
if(i&1)tot=1ll*tot*fac[f[i][0]+f[i][1]]%mod;
else tot=1ll*tot*fac[f[i][0]]%mod*bin[f[i][0]]%mod*fac[f[i][1]]%mod*bin[f[i][1]]%mod;
for(register int i=4;i<=n;i+=2)
tot=1ll*tot*fac[g[i]]%mod*fas(i,g[i])%mod;
ans=Minus(ans-tot);
printf("%d\n",ans);
return 0;
}

曾有两次

问题描述

HZOJ1312

题解

不会

20191003 「HZOJ NOIP2019 Round #8」20191003模拟的更多相关文章

  1. 20191004 「HZOJ NOIP2019 Round #9」20191004模拟

    综述 第一次 rk1 ,激动. 题目是 COCI 18/19 Round #1 的三至五题. 得分 \(100+100+20\) \(\mathrm{cipele}\) 问题描述 HZOJ1313 题 ...

  2. 20191102 「HZOJ NOIP2019 Round #12」20191102模拟

    先开坑. md原题写挂我也真是... 100+20+10 白夜 打表大法吼 显然,不在环上的点对答案的贡献是 \((k-cycle)^{k-1}\) . 打表得到环上的递推式,矩阵一下乘起来就好了. ...

  3. 20190922 「HZOJ NOIP2019 Round #7」20190922模拟

    综述 这次是USACO2019JAN Gold的题目. \(\mathrm{Cow Poetry}\) 题解 因为每句诗的长度一定是\(k\),所以自然而然想到背包. 设\(opt[i][j]\)代表 ...

  4. 「LibreOJ NOI Round #2」不等关系

    「LibreOJ NOI Round #2」不等关系 解题思路 令 \(F(k)\) 为恰好有 \(k\) 个大于号不满足的答案,\(G(k)\) 表示钦点了 \(k\) 个大于号不满足,剩下随便填的 ...

  5. LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿

    二次联通门 : LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 /* LibreOJ #507. 「LibreOJ NOI Round #1」接竹竿 dp 记录一下前驱 ...

  6. 「LibreOJ NOIP Round #1」旅游路线

    Description T 城是一个旅游城市,具有 nnn 个景点和 mmm 条道路,所有景点编号为 1,2,...,n1,2,...,n1,2,...,n.每条道路连接这 nnn 个景区中的某两个景 ...

  7. 「LibreOJ NOI Round #1」验题

    麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然 ...

  8. #509. 「LibreOJ NOI Round #1」动态几何问题

    下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...

  9. LibreOJ #539. 「LibreOJ NOIP Round #1」旅游路线(倍增+二分)

    哎一开始看错题了啊T T...最近状态一直不对...最近很多傻逼题都不会写了T T 考虑距离较大肯定不能塞进状态...钱数<=n^2能够承受, 油量再塞就不行了...显然可以预处理出点i到j走c ...

随机推荐

  1. 用arthas查看JVM已加载的类及方法信息

    1.sc:“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d].[E].[f] 和 [x:]. [d] 输出当前类的详细信 ...

  2. 重构与模式 (Joshua Kerievsky 著)

    第1章 本书的写作缘由 第2章 重构 第3章 模式 第4章 代码坏味 第5章 模式导向的重构目录 第6章 创建 第7章 简化 第8章 泛化 第9章 保护 第10章 聚集操作 第11章 实用重构 参考文 ...

  3. 代码问题【LDES//AAAI2019】

    paper:Li Y, Zhu J, Hoi S C H, et al. Robust Estimation of Similarity Transformation for Visual Objec ...

  4. Vue学习记录(二)-打包问题

    由于项目需要,vue项目在build打包 之后,希望有一个类似wbeconfig的配置文件.方便判断应用所处的环境.进行相应的逻辑处理. 这边暂时记录一下思路,具体请看友情链接. 方案一:从环境变量下 ...

  5. Python基础-day02-3

    循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺序执行 ...

  6. [MFC]_在vs2019中使用MFC快速构建简单windows窗口程序

    微软基础类库(英语: Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发 ...

  7. JVM的监控工具之jinfo

    参考博客:https://www.jianshu.com/p/8d8aef212b25 jinfo(ConfigurationInfoforJava)的作用是实时地查看和调整虚拟机各项参数,使用jps ...

  8. JVM的监控工具之jps

    jps的功能和ps命令相似:可列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Mach ...

  9. vsdbg 下载方法 使用下载工具下载后手动安装

    vsdbg国内下载太慢了,这里提供一个使用下载工具下载后,手动安装的处理方法 查看vs build控制台输出: 1>C:\WINDOWS\System32\WindowsPowerShell\v ...

  10. IDA分析时添加新的C语言结构体

    View - Open Subviews - Local Type - INSERT键 - 输入新结构体 - 右击"Synchornize to idb" 之后再分析处按 T 就可 ...