• Codeforces Round #525 (Div. 2)


    Codeforces Round #525 (Div. 2)

    glhf

    T1:

    题意:求两个数(a,b)使(1<=a,b<=n)(a\%b==0),(a/b<n)(a*b>n)

    (n<=100)

    当时直接打了暴力

    #include<map>
    #include<queue>
    #include<cmath>
    #include<bitset>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    int n;
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=i;j++){
    			if(i%j==0&&i*j>n&&i/j<n){
    				printf("%d %d
    ",i,j);
    				return 0;
    			}
    		}
    	printf("-1
    ");
    	return 0;
    }
    
    
    
    
    
    

    后来hack人的时候发现还可以这么写(我是sb

    #include<map>
    #include<queue>
    #include<cmath>
    #include<bitset>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    int n;
    int main(){
    	scanf("%d",&n);
    	if(n>1) printf("%d %d
    ",n,n);
    	else printf("-1
    ");
    	return 0;
    }
    

    T2:

    直接sort去重,从小到大减,记着减了多少

    #include<map>
    #include<queue>
    #include<cmath>
    #include<bitset>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+100;
    int n,k,a[maxn],b[maxn],num,cnt;
    int main(){
    	//freopen(".out","w",stdout);
    	scanf("%d%d",&n,&k);
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	sort(a+1,a+n+1);
    	a[0]=-1;
    	for(int i=1;i<=n;i++)
    		if(a[i]!=a[i-1])
    			b[++num]=a[i];
    	for(int i=1;i<=num;i++){
    		int x=b[i]-cnt;
    		if(x>0){
    			printf("%d
    ",x);
    			cnt+=x;
    			k--;
    			if(k==0) return 0;
    		}
    	}
    	for(int i=1;i<=k;i++) printf("0
    ");
    	return 0;
    }
    

    T3:

    模拟...?!

    题目给了(n+1)次机会,我们先用前(n)次机会做加法,把(a)数组的值变为膜n意义下为(0,1,2,3...n-1)(因为是膜意义下,你从后往前考虑每个元素,一直加就是了)

    最后所有元素对(n)取膜,(a)数组就真的变成了(0,1,2,3...n-1)

    #include<map>
    #include<queue>
    #include<cmath>
    #include<bitset>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    const int maxn=1e4+100;
    int n,a[maxn],y;
    int main(){
    	freopen("1.in","r",stdin);
    	//freopen(".out","w",stdout);
    	scanf("%d",&n);
    	printf("%d
    ",n+1);
    	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    	for(int i=n;i>=1;i--){
    		int x=0;
    		y%=n;
    		while(1){
    			if((y+a[i])%n==n-(n-i+1)) break;
    			x++;
    			y++;
    		}
    		printf("1 %d %d
    ",i,x);
    	}
    	printf("2 %d %d",n,n);
    	return 0;
    }
    
    

    T4:

    交互题啊。。。mmp

    根本不知道怎么测试对错,硬着头皮提交,竟然1A??!

    思路是从高位向低位去试探,一开始先问(0,0),得到大小关系

    第一次用二进制的100000 (29个0)去亦或两个数,读取结果

    如果两个数大小关系变了,说明两个数的这一位不一样,讨论一下,得到哪个是1哪个是0,同时记(ny,my)加上1或0,这个(ny,my)就是前面位已经确定的

    如果大小关系没变,用100000(29个0)去亦或第一个数,0去亦或第二个数,如果第一个数小,说明两个数的这一位都是1,要不就都是0。

    第二次用二进制的100000(28个0)+ny,100000(28个0)+my,去亦或两个数...和上面一样...

    最后得到了结果...其实就是(ny,my),请无视(n,m)

    #include<map>
    #include<queue>
    #include<cmath>
    #include<bitset>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    int n,m,an,ny,my,bn;
    int main(){
    	freopen("1.in","r",stdin);
    	//freopen(".out","w",stdout);
    	printf("? 0 0
    ");
    	fflush(stdout);
    	scanf("%d",&an);
    	for(int i=29;i>=0;i--){
    		int x=1<<i;
    		ny+=x,my+=x;
    		printf("? %d %d
    ",ny,my);
    		fflush(stdout);
    		ny-=x,my-=x;
    		scanf("%d",&bn);
    		if(an*bn<0){
    			if(an==1) n+=x,ny+=x;
    			else m+=x,my+=x;
    			printf("? %d %d
    ",ny,my);
    			fflush(stdout);	
    			scanf("%d",&an);
    		}
    		else{
    			ny+=x;
    			printf("? %d %d
    ",ny,my);
    			fflush(stdout);
    			ny-=x;
    			scanf("%d",&bn);
    			if(bn==-1){
    				ny+=x,my+=x;
    				n+=x,m+=x;
    			}
    		}
    	} 
    	printf("! %d %d
    ",n,m);
    	fflush(stdout);
    	return 0;
    }
    
    

    T5:

    应该是一道01分数规划题,感觉像是最大密度子图??

    然而我并不会打

    GG

  • 相关阅读:
    VS2015安装水晶报表
    C# 通过java生成的RSA公钥加密和解密
    T4代码生成器
    产品开发- DFX
    读《31天学会CRM项目开发》记录3
    读《31天学会CRM项目开发》记录2
    读《31天学会CRM项目开发》记录1
    产品开发
    产品开发
    机器视觉
  • 原文地址:https://www.cnblogs.com/nianheng/p/10068556.html
Copyright © 2020-2023  润新知