期望:100 + 80 + 75 = 255

实际:0 + 80 + 60 = 140

唉~一天比一天犯的错误智障,感觉noip要凉啊。。。

吓得我赶紧吃几颗药补补脑子。

奶一下大佬:

  lgj AK NOIP    zbq AK NOIP     gxb AK NOIP

  mjt AK NOIP     zzx AK NOIP      wcz AK  NOIP

是的,我什么也没写。QwQ(逃~~~~)

唉~数论学的不行啊!!

后来发现我的T1的0分到100分只有一个memset(vis,0,sizeof(vis))的距离。

mdzz vis数组忘了清零了。

/*
最后形成的联通块的数量,就是n,m,k的最大公约数。
这是显然的。
只要确定每一个联通块都被访问过就可以了。
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int T;
int b,g,t;
long long n,m,k;
bool vis[];
long long gcd(long long x,long long y){
return x==?y:gcd(y%x,x);
}
int main(){
freopen("happy2.in","r",stdin);
freopen("happy2.out","w",stdout);
scanf("%d",&T);
while(T--){
bool f=;
cin>>n>>m>>k;
long long G;
if(n!=&&m!=&&k!=){ G=gcd(n,gcd(m,k));}
else if(k==&&n!=&&m!=){ G=gcd(n,m);}
else if(m!=&&n!=&&k!=){ G=gcd(n,k);}
else if(n!=&&k!=&&m!=){ G=gcd(k,m);}
else if(n!=&&m==&&k==){ G=n;}
else if(m!=&&n==&&k==){ G=m;}
else if(k!=&&m==&&n==){ G=k;}
scanf("%d",&b);
for(int i=;i<=b;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
scanf("%d",&g);
for(int i=;i<=g;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
scanf("%d",&t);
for(int i=;i<=t;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
for(int i=;i<G;i++)
if(!vis[i]){
puts("No");f=;
break;
}
if(f==) puts("Yes");
}
}

写挂了的正解

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int T,n,m,k,b,g,t;
int fa[],vis[];
int idb[],idg[],idt[];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int gcd(int x,int y){
return x==?y:gcd(y%x,x);
}
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main(){
freopen("happy2.in","r",stdin);
freopen("happy2bao.out","w",stdout);
T=read();
while(T--){
n=read();m=read();k=read();
b=read();
for(int i=;i<=b;i++) idb[i]=read();
g=read();
for(int i=;i<=g;i++) idg[i]=read();
t=read();
for(int i=;i<=t;i++) idt[i]=read();
if(n<=){
bool f=;
for(int i=;i<m+n+k;i++) fa[i]=i;
int G,LCM;
if(n!=&&m!=&&k!=){ G=gcd(n,gcd(m,k));LCM=n/G*m/G*k; }
else if(k==&&n!=&&m!=){ G=gcd(n,m);LCM=n/G*m; }
else if(m!=&&n!=&&k!=){ G=gcd(n,k);LCM=n/G*k; }
else if(n!=&&k!=&&m!=){ G=gcd(k,m);LCM=k/G*m; }
else if(n!=&&m==&&k==){ G=n;LCM=n;}
else if(m!=&&n==&&k==){ G=m;LCM=m;}
else if(k!=&&m==&&n==){ G=k;LCM=k;}
for(int i=;i<LCM;i++){
int a,b,c,da,db,dc;
if(n!=) a=i%n;
if(m!=) b=i%m+n;
if(k!=) c=i%k+n+m;
if(n!=) da=find(a);
if(m!=) db=find(b);
if(n!=&&m!=&&da!=db) fa[da]=db;
if(m!=) db=find(b);
if(k!=) dc=find(c);
if(m!=&&k!=&&db!=dc) fa[db]=dc;
if(n!=) da=find(a);
if(k!=) dc=find(c);
if(n!=&&k!=&&da!=dc) fa[da]=dc;
}
for(int i=;i<=b;i++) vis[find(idb[i])]=;
for(int i=;i<=g;i++) vis[find(idg[i]+n)]=;
for(int i=;i<=t;i++) vis[find(idt[i]+n+m)]=;
for(int i=;i<n+m+k;i++)
if(find(i)==i&&vis[i]==){
puts("No");f=;
break;
}
if(f==) puts("Yes");
}
}
}

写挂了的50分暴力

/*
最后形成的联通块的数量,就是n,m,k的最大公约数。
这是显然的。
只要确定每一个联通块都被访问过就可以了。
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int T;
int b,g,t;
long long n,m,k;
bool vis[];
long long gcd(long long x,long long y){
return x==?y:gcd(y%x,x);
}
int main(){
freopen("happy2.in","r",stdin);
freopen("happy2.out","w",stdout);
scanf("%d",&T);
while(T--){
bool f=;
cin>>n>>m>>k;
long long G;
if(n!=&&m!=&&k!=){ G=gcd(n,gcd(m,k));}
else if(k==&&n!=&&m!=){ G=gcd(n,m);}
else if(m!=&&n!=&&k!=){ G=gcd(n,k);}
else if(n!=&&k!=&&m!=){ G=gcd(k,m);}
else if(n!=&&m==&&k==){ G=n;}
else if(m!=&&n==&&k==){ G=m;}
else if(k!=&&m==&&n==){ G=k;}
scanf("%d",&b);
if(n==&&m==){
int hh=;
}
for(int i=;i<=b;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
scanf("%d",&g);
for(int i=;i<=g;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
scanf("%d",&t);
for(int i=;i<=t;i++){
int x;cin>>x;x%=G;
vis[x]=;
}
for(int i=;i<G;i++)
if(!vis[i]){
puts("No");f=;
break;
}
if(f==) puts("Yes");
memset(vis,,sizeof(vis));
}
}

100

/*
期望得分:80
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int p;
long long n,ans;
bool vi[];
int yes[];
int vis[][];
struct nond{ int x,y; }v[];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
bool judge(int a,int b){
int sum=yes[a]+yes[b]-vis[a][b];
if(sum>=p) return true;
else return false;
}
int main(){
// freopen("lpp.in","r",stdin);
freopen("suspect.in","r",stdin);
freopen("suspect.out","w",stdout);
cin>>n;p=read();
for(int i=;i<=n;i++){
v[i].x=read();
v[i].y=read();
if(v[i].x>v[i].y) swap(v[i].x,v[i].y);
}
if(p==){
ans=n*(n-)/;
cout<<ans;
}
else if(p==){
long long tot=;
for(int i=;i<=n;i++){
if(!vi[v[i].x]){ vi[v[i].x]=;tot++; }
if(!vi[v[i].y]){ vi[v[i].y]=;tot++; }
}
long long last=n-tot;
ans=n*(n-)/-last*(last-)/;
cout<<ans;
}
else if(n<=){
for(int i=;i<=n;i++){
yes[v[i].x]++;
yes[v[i].y]++;
vis[v[i].x][v[i].y]++;
}
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
if(judge(i,j)) ans++;
cout<<ans;
}
}

80分暴力

/*
期望得分:75
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int sum[][];
int sum0[],sum1[];
int a[],b[],num[];
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int main(){
freopen("xor.in","r",stdin);
freopen("xor.out","w",stdout);
n=read();int num1=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
b[i]=a[i];
if(a[i]<=) num1++;
}
sort(b+,b++n);
int bnum=unique(b+,b++n)-b-;
if(bnum==n){
m=read();
for(int i=;i<=m;i++){
int l=read();int r=read();
puts("");
}
}
else if(num1==n){
for(int i=;i<=n;i++){
if(a[i]==){
sum0[i]=sum0[i-];
sum1[i]=sum1[i-]+;
}
if(a[i]==){
sum1[i]=sum1[i-];
sum0[i]=sum0[i-]+;
}
}
m=read();
for(int i=;i<=m;i++){
int l=read();int r=read();
int xx=sum1[r]-sum1[l-];
int yy=sum0[r]-sum0[l-];
if(xx%==&&yy%==&&xx!=&&yy!=) puts("");
else if(xx%==&&xx!=) puts("");
else if(yy%==&&yy!=) puts("");
else puts("");//漏下的情况
}
}
else if(n<=){
for(int i=;i<=n;i++){
int x=a[i];
a[i]=lower_bound(b+,b++bnum,a[i])-b;
num[a[i]]=x;
}
for(int i=;i<=n;i++)
for(int j=;j<=bnum;j++){
if(a[i]==j) sum[i][j]=sum[i-][j]+;
else sum[i][j]=sum[i-][j];
}
m=read();
for(int i=;i<=m;i++){
int l=read();int r=read();
int ans=;
for(int j=;j<=bnum;j++){
int xx=sum[r][j]-sum[l-][j];
if(xx%==&&xx!=) ans=ans^num[j];
}
printf("%d\n",ans);
}
}
}
/*
7
1 0 0 1 1 0 0
5
4 7
4 5
1 3
1 7
1 5
*/

80分暴力

2018.11.7 PION 模拟赛的更多相关文章

  1. 2018.11.6 PION 模拟赛

    期望:100 + 40 + 50 = 190 实际:60 + 10 + 50 = 120 考得好炸啊!!T1数组开小了炸掉40,T2用 int 读入 long long ,int存储 long lon ...

  2. 2018.11.5 PION模拟赛

    期望:30 + 40 + 50 = 120 实际:30 + 50 + 40 = 120 ‘’ 思路:最重要的是发现 是完全没有用的,然后这个题目就可以转成DP来做. /* 期望的分:30 */ #in ...

  3. 2018.11.3 PION模拟赛

    期望:100    实际:100 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  4. 2018 11.2 PION模拟赛

    期望:100 + 50 + 30 = 180 实际:0 + 50 + 30 =80 期望:100   实际:0 数值有负数,边界应该设为-0x7f       此处 gg /* 期望的分:50+ */ ...

  5. 2018 11.1 PION 模拟赛

    期望:250  100+100+50 实际:210   80+100+30 期望:100   实际:80 最后:两个点T了.可能是求逆元的方法太慢了,也可能是闲的又加了一个快速乘的原因. #inclu ...

  6. 11.7 NOIP模拟赛

    目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...

  7. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  8. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  9. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

随机推荐

  1. Leetcode 71 简化路径simplify-path(栈)

    给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如,path = "/home/", => "/home"path = " ...

  2. mycat中间件安装与使用

    前提: 安装JDK版本在7.0及其以上 1.下载: 下载地址在:http://dl.mycat.io/ 选择1.6-release版本下载 2.安装: 直接解压即可: tar -zxf Mycat-s ...

  3. Ubuntu sudo 出现 is not in the sudoers file解决方案

    前言: 自己想额外创建一个Linux账户,但是发现新创建的用户(lgq)并不能使用sudo指令. 但是在安装系统时创建的用户(abc)是可以正常使用的. 原因是新创建的用户并没有被赋予使用sudo指令 ...

  4. C语言实现链表及其操作

    #include <stdio.h> #include <stdlib.h> //定义节点 typedef struct Node { int data; struct Nod ...

  5. Linux内核——进程管理之CFS调度器(基于版本4.x)

    <奔跑吧linux内核>3.2笔记,不足之处还望大家批评指正 建议阅读博文https://www.cnblogs.com/openix/p/3262217.html理解linux cfs调 ...

  6. 使用 HTML5 Geolocation 构建基于地理位置的 Web 应用学习网站分享

    HTML5 中的新功能 HTML5 是最新一代的 HTML 规范,是 W3C 与 WHATWG 合作的结果,目前仍外于开发中.自从上一代 HTML4,Web 世界已经发生了巨大的变化,HTML5 的到 ...

  7. CVS在update时状态status

    cvs update -Ad 时,terminal 会display如下: P xx.v P xx.c ? xx.v ? xx.c A xx.v M xx.v U xx.v C xx.v 第一个字母: ...

  8. php各种主流框架的优缺点总结

    ThinkPHP ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架.它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库 ...

  9. The US in understimating Huawei, says founder Ren zhengfei

    Huawei Founder Ren Zhengfei has downplayed the impact of the US executive order that cripple Huawei' ...

  10. bootstap 折叠

    data-toggle="collapse" 添加到您想要展开或折叠的组件的链接上. href 或 data-target 属性添加到父组件,它的值是子组件的 id