太菜了,刷刷NOIP题玩玩。

今天的题好像以前有做过(雾)

A.

#include<bits/stdc++.h>
typedef long long ll;
int n,q,phi,p[],cnt;
ll x;
inline ll sqr(ll x){return x*x;}
ll fpow(ll x,ll p){
ll ans=;
for(;p;p>>=,x=x*x%n)if(p&)ans=(ans*x)%n;
return ans;
}
inline ll read(){
ll f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
n=read();q=read();phi=n;int qwq=n;
for(int i=;i*i<=n;i++){
if(n%i==)phi=phi/i*(i-);
while(n%i==)n/=i;
}
if(n!=)phi=phi/n*(n-);
p[cnt=]=;n=qwq;
for(int i=;i*i<=n;i++)if(phi%i==){p[++cnt]=i;if(i*i!=phi)p[++cnt]=phi/i;}
while(q--){
x=read();char ch='';
if(fpow(x,phi)!=){putchar('');continue;}
for(int j=;j<=cnt;j++)if(fpow(x,p[j])==){ch='';break;}
putchar(ch);
}
}

B.

#include<bits/stdc++.h>
#define N 100010
const int yql=1e9+;
typedef long long ll;
using namespace std;
struct Edge{int u,v,next;}G[*N];
int tot=,head[*N],fa[N],n;
ll ans,w[N],sumv[N];
void addedge(int u,int v){
G[++tot].u=u;G[tot].v=v;G[tot].next=head[u];head[u]=tot;
G[++tot].u=v;G[tot].v=u;G[tot].next=head[v];head[v]=tot;
}
inline ll read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
void dfs(int u,int f){
for(int i=head[u];i;i=G[i].next){
int v=G[i].v;if(v==f)continue;
fa[v]=u;dfs(v,u);
sumv[u]=(sumv[u]+sumv[v])%yql;
}
ll tmp=(sumv[u]*2LL+w[u])%yql*w[u]%yql;
for(int i=head[u];i;i=G[i].next){
int v=G[i].v;if(v==f)continue;
tmp=(tmp+(sumv[u]+yql-sumv[v])%yql*sumv[v])%yql;
}
//printf("%lld\n",tmp);
ans=(ans+tmp*w[u])%yql;
sumv[u]=(sumv[u]+w[u])%yql;
}
int main(){
n=read();w[]=read();
for(int i=;i<=n;i++){
int u=read();w[i]=read();
i[w]%=yql;
addedge(u,i);
}
dfs(,);
//for(int i=1;i<=n;i++)printf("%lld ",sumv[i]);puts("");
printf("%lld\n",ans%yql);
return ;
}

C.

#include<bits/stdc++.h>
const int N=;
using namespace std;
int n,m,fa[N],cnt=;
map<string,int> mps;
struct Edge{int u,v,w;}G[N];
char s[],p[];
bool operator <(Edge x,Edge y){return x.w<y.w;}
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
n=read();m=read();
for(int i=;i<=m;i++){
scanf("%d%s%s",&G[i].w,s,p);
string qwq=string(s);
if(mps[qwq]==)mps[qwq]=++cnt;
G[i].u=mps[qwq];
qwq=string(p);
if(mps[qwq]==)mps[qwq]=++cnt;
G[i].v=mps[qwq];
}
for(int i=;i<=cnt;i++)fa[i]=i;
sort(G+,G+m+);
for(int i=;i<=m&&n;i++){
int x=find(G[i].u),y=find(G[i].v);
if(x!=y){fa[x]=y;--n;printf("%d\n",G[i].w);}
}
for(int i=;i<=n;i++)puts("INF");
}

【jzoj2017.8.21提高组A】的更多相关文章

  1. JZOJ 11.21 提高B组反思

    JZOJ 11.21 提高B组反思 T1 第二类斯特林数 直接套公式 \(S(i,j)=S(i-1,j-1)+S(i-1,j)*j\) 由于过大,\(unsigned\ long\ long\)都存不 ...

  2. [NOIP2015] 提高组 洛谷P2615 神奇的幻方

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  3. NOIP2008提高组(前三题) -SilverN

    此处为前三题,第四题将单独发布 火柴棒等式 题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0 ...

  4. [NOIP2011] 提高组 洛谷P1315 观光公交

    题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...

  5. NOIP 2015提高组复赛

    神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...

  6. 洛谷-神奇的幻方-NOIP2015提高组复赛

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  7. 洛谷 P2678 & [NOIP2015提高组] 跳石头

    题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...

  8. 【二分查找】 跳石头NOIP2015提高组 D2T1

    [二分查找]跳石头NOIP2015提高组 D2T1 >>>>题目 [题目描述] 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石 ...

  9. 2017清北学堂(提高组精英班)集训笔记——动态规划Part3

    现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...

随机推荐

  1. 【bzoj2870】最长道路tree 树的直径+并查集

    题目描述 给定一棵N个点的树,求树上一条链使得链的长度乘链上所有点中的最小权值所得的积最大. 其中链长度定义为链上点的个数. 输入 第一行N 第二行N个数分别表示1~N的点权v[i] 接下来N-1行每 ...

  2. 【bzoj1369】[Baltic2003]Gem 树形dp

    题目描述 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小. 输入 先给出一个数字N,代表树上有N ...

  3. Python数据定义

    数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...

  4. NetScaler + Wireshark = A Perfect Combination!

    NetScaler + Wireshark = A Perfect Combination! https://www.citrix.com/blogs/2014/05/03/netscaler-wir ...

  5. javascript中的this作用域详解

    javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...

  6. [洛谷P4717]【模板】快速沃尔什变换

    题目大意:给定多项式$A$和$B$,求$C$满足: $$C_n=\sum\limits_{x\oplus y=n}A_xB_y$$ 其中$\oplus$为位运算($or,and,xor​$) 题解:$ ...

  7. bzoj 1797: [Ahoi2009]Mincut 最小割 (网络流)

    太神了直接看了hzwer的题解,有个新认识,一条路径上满流的一定是这条路径上所有边的最小值. type arr=record toward,next,cap,from:longint; end; co ...

  8. BZO4197 & 洛谷2150 & UOJ129:[NOI2015]寿司晚宴——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4197 https://www.luogu.org/problemnew/show/P2150 ht ...

  9. BZOJ3427 Poi2013 Bytecomputer 【dp】

    题目链接 BZOJ3427 题解 容易发现最终序列一定是\(\{-1,0,1\}\)组成的 因为如果有一个位置不是,那么这个位置一定大于\(1\),那么上一个位置一定为\(1\),所以该位置一定加到过 ...

  10. HDOJ.2955 Robberies (01背包+概率问题)

    Robberies 算法学习-–动态规划初探 题意分析 有一个小偷去抢劫银行,给出来银行的个数n,和一个概率p为能够逃跑的临界概率,接下来有n行分别是这个银行所有拥有的钱数mi和抢劫后被抓的概率pi, ...