【jzoj2017.8.21提高组A】
太菜了,刷刷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】的更多相关文章
- 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\)都存不 ...
- [NOIP2015] 提高组 洛谷P2615 神奇的幻方
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- NOIP2008提高组(前三题) -SilverN
此处为前三题,第四题将单独发布 火柴棒等式 题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0 ...
- [NOIP2011] 提高组 洛谷P1315 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- NOIP 2015提高组复赛
神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...
- 洛谷-神奇的幻方-NOIP2015提高组复赛
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- 洛谷 P2678 & [NOIP2015提高组] 跳石头
题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...
- 【二分查找】 跳石头NOIP2015提高组 D2T1
[二分查找]跳石头NOIP2015提高组 D2T1 >>>>题目 [题目描述] 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石 ...
- 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...
随机推荐
- POJ1422:Air Raid——题解
http://poj.org/problem?id=1422 题目大意:n个点m条有向边,每条边只能走一次,往点上放人让他们走遍所有边,问至少要多少人. —————————————————————— ...
- POJ 3621 Sightseeing Cows | 01分数规划
题目: http://poj.org/problem?id=3621 题解: 二分答案,检查有没有负环 #include<cstdio> #include<algorithm> ...
- jQuery考试
No1: 分析:首先A答案是正确的jQuery中删除元素的方法有a,c,d所以排除B,另外c是清空,d虽然能删除但是不能删除元素所绑定的事件等等. No2: 分析:A是正确的通过get(index)的 ...
- 微信小程序 事件绑定 bind和catch 区别
转自:https://blog.csdn.net/xiaoqiang_0719/article/details/79729592 本文以冒泡事件tap(手指触摸后马上离开,也就是点击事件)为例子来区别 ...
- 【线段树】【P3740】 [HAOI2014]贴海报
传送门 Description Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规 ...
- Django内置auth模块中login_required装饰器用于类视图的优雅方式
使用多继承 以及类似java中的静态代理模式 原理:OrderView.as_view()根据广度优先,调用的是LoginRequiredMixin中的as_view(cls, *args, **kw ...
- JS判断当前DOM树是否加载完毕
/** * @function Monitor whether the document tree is loaded. * @param fn */function domReady(fn) { i ...
- Android实现自动定位城市并获取天气信息
定位实现代码: <span style="font-size:14px;">import java.io.IOException; import java.util.L ...
- 51Nod 1062 序列中最大的数 | 简单DP
#include "iostream" #include "cstdio" using namespace std; #define LL long long ...
- linux 执行shell脚本的4种方法总结
bash shell 脚本的方法有多种,假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时, ...