当前位置:编程学习 > C/C++ >>

Codeforces Round #189 (Div. 2)

第一题:基本题,判断mod 1000,mod 100.,mod 10是不是等于144、14、1,直到为0

代码如下:


[cpp] 
#include <iostream>  
#include <cstdio>  
#include <cstdlib>  
#include <cmath>  
#include <cstring>  
#include <string>  
#include <vector>  
#include <list>  
#include <deque>  
#include <queue>  
#include <iterator>  
#include <stack>  
#include <map>  
#include <set>  
#include <algorithm>  
#include <cctype>  
using namespace std; 
 
const int N=10001; 
typedef long long LL; 
 
int main() 

    int i,j,t,T,n; 
    int a[3]={144,14,1}; 
    while(cin>>n) 
    { 
        int flag=0; 
        while(n) 
        { 
            if(n%1000==144) 
                n/=1000; 
            else if(n%100==14) 
                n/=100; 
            else if(n%10==1) 
                n/=10; 
            else{ 
            flag=1; 
            break; 
            } 
        } 
        if(flag==0) 
            printf("YES\n"); 
        else 
            printf("NO\n"); 
    } 
    return 0; 

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <deque>
#include <queue>
#include <iterator>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <cctype>
using namespace std;

const int N=10001;
typedef long long LL;

int main()
{
    int i,j,t,T,n;
    int a[3]={144,14,1};
    while(cin>>n)
    {
        int flag=0;
        while(n)
        {
            if(n%1000==144)
                n/=1000;
            else if(n%100==14)
                n/=100;
            else if(n%10==1)
                n/=10;
            else{
            flag=1;
            break;
            }
        }
        if(flag==0)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

 

 


第二题:给你一些单向路径。

"1 x y"-----插入

"2 a b"----判断


让你判断能否从a到b。

用深搜,开始的时候vis标记每次做完回溯都修改标记,结果超时了,最后有人说回溯的时候不需要修改,

自己想了想,好像是这样的,因为是单向的,到达一个点了之后不管后面怎样都还是可以到这个点。

代码如下:


[cpp] 
#include <iostream>  
#include <cstdio>  
#include <cstdlib>  
#include <cmath>  
#include <cstring>  
#include <string>  
#include <vector>  
#include <list>  
#include <deque>  
#include <queue>  
#include <iterator>  
#include <stack>  
#include <map>  
#include <set>  
#include <algorithm>  
#include <cctype>  
using namespace std; 
 
typedef long long LL; 
const int N=105; 
 
int parent[N]; 
 
int x[N],y[N]; 
int m,flag; 
int a,b,c; 
int vis[N]; 
 
void dfs(int t) 

    vis[t]=1; 
    if(flag==1) 
        return ; 
    if(t==c) 
    { 
        flag=1; 
        return ; 
    } 
    for(int i=1;i<=m;i++) 
    { 
        if(vis[i]==1) 
            continue; 
        if(x[t]>x[i]&&x[t]<y[i]||y[t]>x[i]&&y[t]<y[i]) 
        { 
            dfs(i);//这个地方不能要 vis[i]=0; 要了就TLE  
        } 
    } 

 
int main() 

    int i,j,t,T,n,xx; 
    scanf("%d",&T); 
    m=0; 
    while(T--) 
    { 
 
        scanf("%d%d%d",&a,&b,&c); 
        if(a==1) 
        { 
    

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,