problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::b::b1089 命名空间参考

1089 狼人杀-简单版 更多...

函数

bool is_true (const vector< int > &vec, int wolf1, int wolf2)
 
int main (istream &cin, ostream &cout)
 
 TEST (b1089, case1)
 
 TEST (b1089, case2)
 
 TEST (b1089, case3)
 

详细描述

1089 狼人杀-简单版

函数说明

◆ is_true()

bool pat::b::b1089::is_true ( const vector< int > &  vec,
int  wolf1,
int  wolf2 
)

在文件 pat.cpp3129 行定义.

3129 {
3130 int lie_count = 0;
3131 bool wolf_lie = false;
3132 for(int i = 0; i < vec.size(); i++) {
3133 const bool is_wolf = vec[i] < 0;
3134 const int target = abs(vec[i]) - 1;
3135 if(is_wolf && !(target == wolf1 || target == wolf2) || !is_wolf && (target == wolf1 || target == wolf2)) {
3136 lie_count++;
3137 if(i == wolf1 || i == wolf2) {
3138 if(wolf_lie) {
3139 return false;
3140 }
3141 wolf_lie = true;
3142 }
3143 }
3144 if(lie_count > 2) {
3145 return false;
3146 }
3147 }
3148 return wolf_lie;
3149 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 main().

◆ main()

int pat::b::b1089::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp3110 行定义.

3110 {
3111 int n;
3112 cin >> n;
3113 vector<int> vec(n);
3114 for(int i = 0; i < n; i++) {
3115 cin >> vec[i];
3116 }
3117 for(int i = 0; i + 1 < n; i++) {
3118 for(int j = i + 1; j < n; j++) {
3119 if(is_true(vec, i, j)) {
3120 cout << i + 1 << ' ' << j + 1;
3121 return 0;
3122 }
3123 }
3124 }
3125 cout << "No Solution";
3126 return 0;
3127 }
bool is_true(const vector< int > &vec, int wolf1, int wolf2)
Definition: pat.cpp:3129

引用了 is_true() , 以及 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST() [1/3]

pat::b::b1089::TEST ( b1089  ,
case1   
)

在文件 pat_test.cpp1532 行定义.

1532 {
1533 istringstream in("5\n"
1534 "-2\n"
1535 "+3\n"
1536 "-4\n"
1537 "+5\n"
1538 "+4");
1539 auto out = ostringstream();
1540 main(in, out);
1541 const auto ans = out.str();
1542 ASSERT_EQ("1 4", out.str());
1543 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/3]

pat::b::b1089::TEST ( b1089  ,
case2   
)

在文件 pat_test.cpp1545 行定义.

1545 {
1546 istringstream in("6\n"
1547 "+6\n"
1548 "+3\n"
1549 "+1\n"
1550 "-5\n"
1551 "-2\n"
1552 "+4");
1553 auto out = ostringstream();
1554 main(in, out);
1555 const auto ans = out.str();
1556 ASSERT_EQ("1 5", out.str());
1557 }

引用了 main().

◆ TEST() [3/3]

pat::b::b1089::TEST ( b1089  ,
case3   
)

在文件 pat_test.cpp1559 行定义.

1559 {
1560 istringstream in("5\n"
1561 "-2\n"
1562 "-3\n"
1563 "-4\n"
1564 "-5\n"
1565 "-1");
1566 auto out = ostringstream();
1567 main(in, out);
1568 const auto ans = out.str();
1569 ASSERT_EQ("No Solution", out.str());
1570 }

引用了 main().