zoukankan      html  css  js  c++  java
  • $Codeforces$ $Round$ $739$ $Div.3$ 简要题解

    一时兴起,打了个 (Div3) ,果然是老年退役选手, (Div3) 只能切前三题了。只能说,道阻且长啊。

    (A) (Dislike) (of) (Threes)

    解法

    (1) 开始枚举正整数,筛掉满足 (x equiv 3 (mod 10))(x equiv 0 (mod 3)) 的正整数 (x) ,筛出 (1000) 个即可。

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,k,num,a[1005];
    int main()
    {
    	t=read();
    	for(register int i=1;i<=5000;i++)
    	{
    		if(i%3==0||i%10==3)
    			continue;
    		num++;
    		a[num]=i;
    		if(num==1000)
    			break;
    	}
    	for(register int i=1;i<=t;i++)
    	{
    		k=read();
    		printf("%d
    ",a[k]);
    	}
    	return 0;
    }
    

    (B) (Who's) (Opposite?)

    解法

    (2|a-b|) 为环长(记为 (2r) )。设答案为 (d) ,则合法的 (d=d+r)(d=d-r)(d)([1,2n](d in N_+)) 之间。

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,a,b,c,d,r;
    int main()
    {
    	t=read();
    	for(register int i=1;i<=t;i++)
    	{
    		a=read();
    		b=read();
    		c=read();
    		r=abs(a-b);
    		if(a>2*r||b>2*r||c>2*r)
    		{
    			printf("-1
    ");
    			continue;
    		}
    		d=c-r;
    		if(d>0&&d<=2*r)
    		{
    			printf("%d
    ",d);
    			continue;
    		}
    		d=c+r;
    		if(d>0&&d<=2*r)
    		{
    			printf("%d
    ",d);
    			continue;
    		}
    		printf("-1
    ");
    	}
    	return 0;
    }
    

    (C) (Infinity) (Table)

    解法

    考虑把 (k)拆成 (a^2+b(a,b in N,b in [0,2a])) 的形式。 (b leqslant a+1) 时, (k)((b,a+1)) ; (b>a+1) 时, (k)((a+1,2a-b+2))

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,k,a,b,r,c,x[40005];
    int main()
    {
    	t=read();
    	for(register int i=1;i<=40000;i++)
    		x[i]=i*i;
    	for(register int i=1;i<=t;i++)
    	{
    		k=read();
    		if(k==2)
    		{
    			printf("1 2
    ");
    			continue;
    		}
    		if(k==3)
    		{
    			printf("2 2
    ");
    			continue;
    		}
    		for(register int j=1;j<=40000;j++)
    		{
    			if(k<x[j])
    			{
    				a=j-1;
    				break;
    			}
    		}
    		b=k-x[a];
    		if(b==0)
    		{
    			printf("%d %d
    ",a,1);
    			continue;
    		}
    		if(b<=a+1)
    		{
    			r=b;
    			c=a+1;
    		}
    		else
    		{
    			r=a+1;
    			c=2*a+2-b;
    		}
    		printf("%d %d
    ",r,c);
    	}
    	return 0;
    }
    

    未完待续

  • 相关阅读:
    poj 2186(强连通分量)
    zoj 3602
    STL string常用函数
    poj 2503 (map)
    poj 1161 walls
    poj 1164 dfs 位运算
    搭建Hadoop2.0(一)系统环境基本配置
    一步一个脚印——开启博客
    Javascript动态执行问题浅析
    input输入框的各种样式
  • 原文地址:https://www.cnblogs.com/Peter0701/p/15173998.html
Copyright © 2011-2022 走看看