题目大意:
思想:
n > 10
时不存在可以满足条件的数。代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define re register
#define fi first
#define se second
#define endl '\n'
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
const int N = 1e6 + 3;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6, PI = acos(-1);
int a[] = {1, 0, 2, 3, 4, 5, 6, 7, 8, 9};
void solve(){
int n; cin >> n;
if(n > 10) cout << -1 << endl; //大于10不存在满足条件的数
else{
for(int i = 0 ; i < n; i ++) cout << a[i]; //注意交换1和0的顺序
}
return ;
}
int main(){
IOS;
int _ = 1;
// cin >> _;
while(_ --){
solve();
}
return 0;
}
题目大意:
none
。思想:
,统计满足的
,若可以找到满足的子序列,则将上面标记的直接输出即可。
n < 17
时或者没有找到存在可以满足条件的子序列,则输出 none
。代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define re register
#define fi first
#define se second
#define endl '\n'
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
const int N = 200;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6, PI = acos(-1);
void solve(){
int n; cin >> n;
if(n < 17){ //长度不够,不可能找到
cout << "none" << endl;
return ;
}
string s; cin >> s;
int vis1[N] = {0}; //统计相同的前5个字符
for(int i = 0; i < s.size(); i ++){
vis1[s[i]] ++;
if(vis1[s[i]] == 5){
char op1 = s[i]; //标记前5个字符
int vis2[N] = {0}; //统计相同的中间7个字符
for(int j = i + 1; j < s.size(); j ++){
vis2[s[j]] ++;
if(vis2[s[j]] == 7){
char op2 = s[j]; //标记中间7个字符
int vis3[N] = {0}; //统计相同的后5个字符
for(int k = j + 1; k < s.size(); k ++){
vis3[s[k]] ++;
if(vis3[s[k]] == 5){ //找到最后5个字符,直接输出
for(int u = 0; u < 5; u ++) cout << op1;
for(int u = 0; u < 7; u ++) cout << op2;
for(int u = 0; u < 5; u ++) cout << s[k];
return ;
}
}
}
}
}
}
//找不到满足条件的序列
cout << "none" << endl;
return ;
}
int main(){
IOS;
int _ = 1;
// cin >> _;
while(_ --){
solve();
}
return 0;
}
题目大意:
思想:
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define re register
#define fi first
#define se second
#define endl '\n'
typedef long long LL;
typedef pair<int, string> PII;
typedef pair<LL, LL> PLL;
const int N = 1e6 + 3;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6, PI = acos(-1);
int n;
void solve(){
cin >> n;
if(n == 2 || n == 4){
cout << -1 << endl;
return ;
}
if(n % 2 != 0){ //奇数构造0, 1, 2, 3,...,(n - 1) / 2
cout << (n - 1) / 2 + 1 << endl;
for(int i = 0; i <= (n - 1) / 2; i ++) cout << i << ' ';
}
else{ //偶数构造 0, 2, 3,..., n / 2
cout << n / 2 << endl;
cout << 0 << ' ';
for(int i = 2; i <= n / 2; i ++) cout << i << ' ';
}
}
int main(){
IOS;
int _ = 1;
while(_ --){
solve();
}
return 0;
}
题目大意:
思想:
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define re register
#define fi first
#define se second
#define endl '\n'
typedef long long LL;
typedef pair<int, string> PII;
typedef pair<LL, LL> PLL;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6, PI = acos(-1);
const int N = 1010;
char a[N][4 * N];
int n, m;
void solve(){
int res = 0;
cin >> n >> m;
for(int i = 0; i < n; i ++) cin >> a[i];
int q; cin >> q;
while(q --){
for(int i = 0; i < 5; i ++){
int op; cin >> op;
}
}
for(int i = 0; i < m; i ++){
int cnt = 1;
for(int j = 0; j < n; j ++){
if(a[j][i] == '0') cnt = 0; //存在某一列为0时
}
res += cnt;
}
cout << res << endl;
}
int main(){
IOS;
int _ = 1;
while(_ --){
solve();
}
return 0;
}
题目大意:
思想:
DFS
搜索。代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define re register
#define fi first
#define se second
#define endl '\n'
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
const int N = 1e6 + 10;
const int INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6, PI = acos(-1);
char mp[2][N];
bool vis[2][N];
int m, sl, el;
bool flag = 0;
void dfs(int l, int r, int st){
if(flag == 1) return ; //满足条件直接返回
if(l == 2 && r == el - 1){ //越界只有到达出口的情况合法
flag = 1; //标记答案
return ;
}
if(l < 0 || l >= 2 || r < 0 || r >= m) return ; //越界直接返回
if(vis[l][r]) return ; //走过该点返回
vis[l][r] = 1; //标记走过
if(l >= 0 && l < 2 && r >= 0 && r < m){
if(mp[l][r] == 'I'){ //进入状态和流出状态相同
if(st == 0) dfs(l + 1, r, 0);
if(st == 1) dfs(l, r + 1, 1);
if(st == 2) dfs(l - 1, r, 2);
if(st == 3) dfs(l, r - 1, 3);
}
else{
if(st == 0 || st == 2){ //从下面或上面流入的状态
dfs(l, r + 1, 1);
dfs(l, r - 1, 3);
}
if(st == 1 || st == 3){ //从左边或右边流入的状态
dfs(l + 1, r, 0);
dfs(l - 1, r, 2);
}
}
}
vis[l][r] = 0; //搜过返回恢复现场
return ;
}
bool solve(){
cin >> m >> sl >> el;
for(int i = 0; i < 2; i ++) cin >> mp[i];
flag = 0; //多实例,初始化
for(int i = 0; i < 2; i ++){
for(int j = 0; j <= m; j ++) vis[i][j] = 0;
}
dfs(0, sl - 1, 0);
return flag;
}
int main(){
IOS;
int _ = 1;
cin >> _;
while(_ --){
if(solve()) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
生涯第一次参加 CCPC,先贴一张战绩:
铜尾巴是 188,我们队伍 191 喜提铁牌 (bushi) 啊吧啊吧。。。
赛程回顾
赛后总结:
PS:
TMD
加训。VP
,训练团队合作。