zoukankan      html  css  js  c++  java
  • BZOJ1258 [CQOI2007]三角形tri 模拟

    欢迎访问~原文出处——博客园-zhouzhendong

    去博客园看该题解


    题目传送门 - BZOJ1258


    题意概括

       

      这种图中,一个三角形的三边如果被其他某一个三角形的一条边包括,那么我们说该三角形和那个三角形相邻。

      给出一个三角形,问与它相邻的三角形编号。


    题解

      我们发现,如果结尾是4,那么很简单,答案就是把结尾改一改,改成1~3.

      如果不是4,那么我们只需要从n~1扫一遍,然后各种判断就可以了。


    代码

    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    const int N=50+5;
    char str[N];
    int n,f[4];
    void print(){
    	for (int i=0;i<n;i++)
    		putchar(str[i]);
    	putchar('4');
    	puts("");
    }
    int main(){
    	scanf("%s",str);
    	n=strlen(str)-1;
    	if (str[n]=='4'){
    		for (int x=1;x<=3;x++){
    			for (int j=0;j<n;j++)
    				putchar(str[j]);
    			putchar(x+48);
    			puts("");
    		}
    		return 0;
    	}
    	memset(f,0,sizeof f);
    	if (str[n]=='1')
    		f[1]=f[3]=1;
    	if (str[n]=='2')
    		f[2]=f[1]=1;
    	if (str[n]=='3')
    		f[3]=f[2]=1;
    	print();
    	while (--n){
    		int v=str[n]-'0';
    		if (v==1)
    			if (f[2])
    				f[2]=0,print();
    		if (v==2)
    			if (f[3])
    				f[3]=0,print();
    		if (v==3)
    			if (f[1])
    				f[1]=0,print();
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    2.2 整数表示
    2.1 信息存储
    c++ string.erase()函数的使用
    classmethod修饰符
    27. 序列化
    26. 操作文件目录
    Java 内部类
    ConcurrentHashMap 源码解析 -- Java 容器
    Storm中的LocalState 代码解析
    Java中 return 和finally
  • 原文地址:https://www.cnblogs.com/zhouzhendong/p/BZOJ1258.html
Copyright © 2011-2022 走看看