青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

POJ 1478 Island of Logic 枚舉

思路:
由于數據量比較小,可以枚舉ABCDE的所有身份和時間(白天或者晚上),不會超時。
判斷deducible、impossible的部分很難寫,基本上是照著數據改的。。
1. 如果沒有任何狀態是符合要求的,輸出 impossible。
2. 在符合要求的狀態中,如果對于某個人的身份或者時間,存在分歧,那該條就不能輸出。
3. 在(2)的情況下,如果沒有任何輸出,就輸出 deducible。

快被這玩意整瘋了。要是沒有數據肯定搞不出來。


#include <stdio.h>

#define MAX_N 6

enum kind_t {
    NONE, 
    
    ROLE_START, 
    DIVINE 
= ROLE_START, HUMAN, EVIL, 
    ROLE_END 
= EVIL,
    ANY_ROLE,

    LYING, 
    
    TIME_START, 
    DAY 
= TIME_START, 
    NIGHT, 
    TIME_END 
= NIGHT,
    ANY_TIME
}
;

char *str_tbl[] = 
    
"none"
    
"divine""human""evil""any_role"
    
"lying"
    
"day""night""any_time"
}
;

struct node {
    
int x, y, not, type;
}
;
struct node in[64];

struct stat {
    
int role[MAX_N], time;
}
;
struct stat ans, cur;

int N;

__inline 
void input(struct node *t)
{
    
char a[32], b[32];

    scanf(
"%s%s", a, b);
    t
->= a[0- 'A';
    
if (b[0== 'I')
        t
->= t->x;
    
else
        t
->= b[0- 'A';
    scanf(
"%s%s", a, b);
    
if (b[0== 'n' && b[1== 'o'{
        t
->not = 1;
        scanf(
"%s", b);
    }
 else 
        t
->not = 0;
    
if (b[0== 'd')
        t
->type = (b[1== 'a'? DAY : DIVINE;
    
else if (b[0== 'h')
        t
->type = HUMAN;
    
else if (b[0== 'e')
        t
->type = EVIL;
    
else if (b[0== 'l')
        t
->type = LYING;
    
else 
        t
->type = NIGHT;
}


__inline 
int lies(int x)
{
    
return (cur.role[x] == EVIL) || (cur.role[x] == HUMAN && cur.time == NIGHT);
}


__inline 
int check_one(struct node *t)
{
    
int right;

    
if (t->type >= ROLE_START && t->type <= ROLE_END)
        right 
= t->not ^ (cur.role[t->y] == t->type);
    
else if (t->type == LYING)
        right 
= t->not ^ lies(t->y);
    
else {
        
if (t->type == DAY)
            right 
= (cur.time == DAY);
        
else
            right 
= (cur.time == NIGHT);
    }


    
return lies(t->x) ? !right : right;
}


__inline 
void check()
{
    
int i;

    
for (i = 0; i < N; i++
        
if (!check_one(&in[i]))
            
return ;

    
for (i = 0; i < MAX_N; i++{
        
if (ans.role[i] == NONE)
            ans.role[i] 
= cur.role[i];
        
else if (ans.role[i] != cur.role[i])
            ans.role[i] 
= ANY_ROLE;
    }

    
if (ans.time == NONE)
        ans.time 
= cur.time;
    
else if (ans.time != cur.time)
        ans.time 
= ANY_TIME;
}


__inline 
void solve()
{
    
int i, mask, cnt, *arr[MAX_N];

    mask 
= 0;
    
for (i = 0; i < N; i++{
        mask 
|= 1 << in[i].x;
        mask 
|= 1 << in[i].y;
    }


    
for (cnt = i = 0; i < MAX_N; i++{
        
if (mask & (1 << i)) {
            arr[cnt
++= &cur.role[i];
            cur.role[i] 
= ROLE_START;
        }
 else
            cur.role[i] 
= NONE;
        ans.role[i] 
= NONE;
    }

    ans.time 
= NONE;

    
while (1{
        cur.time 
= DAY;
        check();
        cur.time 
= NIGHT;
        check();
        
for (i = 0; i < cnt && *arr[i] == ROLE_END; i++)
            
*arr[i] = ROLE_START;
        
if (i == cnt)
            
break;
        (
*arr[i])++;
    }

}


__inline 
void dump()
{
    
int i, cnt;

    
for (i = 0; i < MAX_N && ans.role[i] == NONE; i++);
    
if (i == MAX_N && ans.time == NONE) {
        printf(
"This is impossible.\n\n");
        
return ;
    }


    
for (cnt = i = 0; i < MAX_N; i++{
        
if (ans.role[i] >= ROLE_START && ans.role[i] <= ROLE_END) {
            cnt
++;
            printf(
"%c is %s.\n", i + 'A', str_tbl[ans.role[i]]);
        }

    }
    
    
if (ans.time >= TIME_START && ans.time <= TIME_END) {
        printf(
"It is %s.\n", str_tbl[ans.time]);
        cnt
++;
    }


    
if (!cnt) {
        printf(
"No facts are deducible.\n\n");
        
return ;
    }


    putchar(
'\n');
}


int main()
{
    
int i, t;

    freopen(
"e:\\test\\in.txt""r", stdin);

    
for (t = 1; scanf("%d"&N), N; t++{
        
for (i = 0; i < N; i++)
            input(
&in[i]);
        printf(
"Conversation #%d\n", t);
        solve();
        dump();
    }


    
return 0;
}

posted on 2010-03-30 16:42 糯米 閱讀(556) 評論(0)  編輯 收藏 引用 所屬分類: POJ

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美综合国产精品一区| 亚洲天堂网站在线观看视频| 亚洲福利视频三区| 国产伦精品一区二区三| 欧美日韩在线高清| 国产精品久久久久久久久久尿 | 韩国三级在线一区| 亚洲第一精品福利| 亚洲毛片一区二区| 午夜精品福利一区二区三区av | 亚洲欧洲一区二区在线播放| 亚洲高清毛片| 一区二区三区免费在线观看| 欧美一区二区成人6969| 蜜臀av国产精品久久久久| 欧美日本成人| 国产欧美一级| 亚洲精品欧美极品| 亚洲欧美综合v| 免费看精品久久片| 99视频+国产日韩欧美| 久久精品30| 欧美无乱码久久久免费午夜一区 | 伊人一区二区三区久久精品| 亚洲图片欧美午夜| 欧美1区2区3区| 亚洲欧美日韩综合一区| 欧美a级在线| 欧美日韩在线免费| 亚洲精品久久久蜜桃| 午夜精品久久久久久久99黑人| 巨胸喷奶水www久久久免费动漫| 亚洲精品日本| 久久婷婷麻豆| 99v久久综合狠狠综合久久| 亚洲欧美色婷婷| 亚洲成色www8888| 亚洲乱码国产乱码精品精天堂 | 久久激情婷婷| 亚洲视频免费观看| 美女被久久久| 日韩视频免费在线观看| 久久精品国产亚洲a| 欧美日本一区二区视频在线观看 | 欧美一区二区三区在| 欧美激情在线播放| 亚洲第一偷拍| 欧美在线亚洲| 亚洲线精品一区二区三区八戒| 欧美福利一区二区| 亚洲国产欧美另类丝袜| 久久嫩草精品久久久精品一| 亚洲一区二区三区中文字幕在线| 欧美国产精品日韩| 亚洲精品美女| 亚洲第一狼人社区| 久久米奇亚洲| 亚洲国产精品ⅴa在线观看| 久久亚洲一区二区| 欧美一区激情| 国产综合色在线| 久久久久久国产精品一区| 亚洲在线视频观看| 国产精品一区二区三区久久久| 亚洲一区二区三区777| 9l国产精品久久久久麻豆| 欧美日韩亚洲一区二区三区在线观看 | 久久国产精品一区二区三区四区 | 欧美jizzhd精品欧美巨大免费| 一本一本a久久| 国产精品九九| 久久国产加勒比精品无码| 亚洲一区二区网站| 欧美电影在线播放| 久久福利毛片| 亚洲激情偷拍| 国产最新精品精品你懂的| 久久婷婷av| 欧美日韩在线观看视频| 久久久久这里只有精品| 欧美日韩免费一区二区三区| 久久久久久久综合色一本| 免费不卡在线视频| 国产精品天美传媒入口| 亚洲乱码国产乱码精品精可以看 | 欧美激情小视频| 一区二区三区.www| 亚洲欧美一区二区三区久久| 一区在线视频| 亚洲乱码国产乱码精品精| 国产欧美亚洲精品| 欧美激情精品久久久六区热门 | 欧美激情久久久| 欧美在线观看视频一区二区三区| 久久亚洲精品网站| 亚洲香蕉伊综合在人在线视看| 欧美一区二区三区四区在线| 亚洲欧洲日韩在线| 亚洲欧美日本伦理| 亚洲三级电影在线观看| 午夜精品成人在线视频| 亚洲黄色性网站| 午夜精品久久久99热福利| 日韩午夜免费| 久久久91精品国产| 亚洲欧美久久| 欧美精品一区二区蜜臀亚洲| 欧美一区二区三区喷汁尤物| 欧美激情第3页| 欧美+日本+国产+在线a∨观看| 国产精品美女黄网| 亚洲人成在线影院| 在线观看不卡av| 性亚洲最疯狂xxxx高清| 午夜视频在线观看一区二区| 欧美精品aa| 欧美国产一区二区三区激情无套| 国产综合香蕉五月婷在线| 99精品视频免费全部在线| 激情婷婷久久| 欧美一级二区| 亚洲一区国产精品| 欧美日韩亚洲国产精品| 欧美一区二区三区四区视频| 黑人一区二区三区四区五区| 欧美三级不卡| 国产精品国产三级国产普通话99| 欧美在线播放高清精品| 日韩亚洲国产欧美| 免费在线观看一区二区| 久久精品二区亚洲w码| 亚洲精品免费在线播放| 国产欧美一区二区三区沐欲| 欧美乱大交xxxxx| 国产精品亚洲产品| 亚洲一区二区黄色| 亚洲国产精品va在看黑人| 性伦欧美刺激片在线观看| 欧美亚洲综合在线| 国产精品丝袜白浆摸在线| 亚洲一区二区av电影| 亚洲永久在线观看| 国产精品亚洲а∨天堂免在线| 亚洲一区三区电影在线观看| 午夜久久福利| 国产亚洲综合精品| 久久久国产精品一区二区中文| 美女精品国产| 亚洲国产成人一区| 欧美电影免费观看| 亚洲精品一二| 欧美一区二区三区四区高清| 国产亚洲一区二区三区在线观看 | 亚洲午夜视频| 欧美在线播放一区| 国内外成人免费激情在线视频网站| 欧美在线一区二区三区| 久久午夜国产精品| 99精品视频免费观看| 欧美性猛交xxxx乱大交蜜桃| 亚洲欧美一区二区精品久久久| 美女任你摸久久| 99精品国产在热久久下载| 欧美体内谢she精2性欧美| 亚洲一区二区三区精品在线观看| 久久久久久久激情视频| 亚洲欧洲精品一区| 国产精品嫩草影院av蜜臀| 午夜久久久久久| 亚洲高清av在线| 亚洲欧美日韩在线不卡| 激情丁香综合| 欧美手机在线视频| 久久激情五月激情| 国产一区二区三区在线观看视频 | av成人老司机| 91久久在线观看| 亚洲综合视频在线| 久久九九免费视频| 亚洲在线中文字幕| 欧美日韩一区在线观看| 亚洲国产天堂久久综合网| 午夜欧美视频| 午夜精品短视频| 国产日韩av高清| 欧美在线一级视频| 亚洲欧美日韩区| 国产一区二区中文字幕免费看| 久久免费高清视频| 国产欧美视频一区二区| 欧美激情按摩| 久久国产精品久久久久久久久久| 亚洲人成欧美中文字幕| 免费av成人在线| 午夜精品国产更新| 夜夜精品视频| 日韩视频在线免费观看| 1024成人网色www| 国自产拍偷拍福利精品免费一| 欧美日韩精品国产|