郑州网站建设品牌好,做箱包关注哪个网站,crm系统开发,律师行业网站建设目录 A. Rook
问题分析:
B. YetnotherrokenKeoard
问题分析:
C. Removal of Unattractive Pairs
问题分析:
D. Jumping Through Segments
问题分析:
E. Good Triples
问题分析: A. Rook 问题分析:
给一个棋子将其同行同列的位置输出
#includebits/s…目录 A. Rook
问题分析:
B. YetnotherrokenKeoard
问题分析:
C. Removal of Unattractive Pairs
问题分析:
D. Jumping Through Segments
问题分析:
E. Good Triples
问题分析: A. Rook 问题分析:
给一个棋子将其同行同列的位置输出
#includebits/stdc.h
#pragma GCC optimize(Ofast)
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cinT;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
templateclass T bool mmax(T u, T v) { return u v ? (u v, 1) : 0; }
templateclass T bool mmin(T u, T v) { return u v ? (u v, 1) : 0; }
#define lowbit(x) (x(-x))
#define yes coutYESendl
#define no coutNOendl
using namespace std;
typedef pairint,intpii;
const int N 1e57;
signed main()
{IOS
use{string a;cina;char xa[0];int numa[1]-0;for(int i1;i8;i){if(i!num)coutxiendl;}for(int i0;i7;i){if(ai!x){cout(char)(ai)numendl;}}}return 0;
}B. YetnotherrokenKeoard 问题分析:
一个字符串当当前字符为b时删除新字符串最右边的 小写字符当当前字符为B时删除新字符串最右边的大写字符没有则不删除除去b和B的其他字符添加到新字符串当中然后输出。
可以通过栈来存储新字符串当中的大小写字符的位置然后遇到相应的b or B,将栈顶的位置标记最后按照标记输出原字符串的字符即可
#includebits/stdc.h
#pragma GCC optimize(Ofast)
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cinT;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
templateclass T bool mmax(T u, T v) { return u v ? (u v, 1) : 0; }
templateclass T bool mmin(T u, T v) { return u v ? (u v, 1) : 0; }
#define lowbit(x) (x(-x))
#define yes coutYESendl
#define no coutNOendl
using namespace std;
typedef pairint,intpii;
const int N 1e57;
signed main()
{IOS
use{string a;cina;stackintlowi,upi;vctboolst(a.LEN);for(int i0;ia.LEN;i){if(a[i]b){st[i]1;if(lowi.empty())continue;else st[lowi.top()]1,lowi.pop();}else if(a[i]B){st[i]1;if(upi.empty())continue;else st[upi.top()]1,upi.pop();}else {if(islower(a[i])){lowi.push(i);}else {upi.push(i);}}}for(int i0;ia.LEN;i){if(!st[i])couta[i];}cout\n;
}return 0;
}
C. Removal of Unattractive Pairs 问题分析: 给定字符串如果相邻两个字符不同可以删除这两个字符求出最终可以剩下几个字符
我们统计每个字符的数量为了保证最后剩下的字符个数最少我们贪心地用个数次大的字符与个数最大的字符相抵消因为需要维护数量的降序排序我们选择使用大根堆来维护我们每次弹出堆顶的两个元素将他们互相抵消也就是都减一如果大于零就再放回堆当中最终堆内会只剩下一个数也就是最短的字符串长度
#includebits/stdc.h
#pragma GCC optimize(Ofast)
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cinT;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
templateclass T bool mmax(T u, T v) { return u v ? (u v, 1) : 0; }
templateclass T bool mmin(T u, T v) { return u v ? (u v, 1) : 0; }
#define lowbit(x) (x(-x))
#define yes coutYESendl
#define no coutNOendl
using namespace std;
typedef pairint,intpii;
const int N 1e57;
signed main()
{IOS
use{int n;cinn;string a;cina;vctintcnt(26);for(int i0;ia.LEN;i){cnt[a[i]-a];}priority_queueintq;for(int i0;i26;i){if(cnt[i]!0)q.push(cnt[i]);}while(q.size()1){int xq.top();q.pop();int yq.top();q.pop();x--;y--;if(x0)q.push(x);if(y0)q.push(y);}if(q.empty())cout0endl;else coutq.top()endl;
}return 0;
}
D. Jumping Through Segments 问题分析: n个线段每次可以选择走0~k格第次一定要落在第个线段内部要求在满足条件的情况下使得k最小.
对于k来说k的大小对于结果的影响是单调的故可以用二分答案,我们只需要确定第步走出的范围能够与第个线段有交集即可
#includebits/stdc.h
#pragma GCC optimize(Ofast)
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cinT;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
templateclass T bool mmax(T u, T v) { return u v ? (u v, 1) : 0; }
templateclass T bool mmin(T u, T v) { return u v ? (u v, 1) : 0; }
#define lowbit(x) (x(-x))
#define yes coutYESendl
#define no coutNOendl
using namespace std;
typedef pairint,intpii;
const int N 1e57;
signed main()
{IOSuse{int n;cin n;int ans;vctint l(n 1);vctint r(n 1);for (int i 1; i n; i) cin l[i] r[i];int L 0, R 1e9;int mid;auto check [](int mid) - bool {int dis1 0, dis2 0;for (int i 1; i n; i) {dis1 - mid, dis2 mid;if (dis1 r[i] || dis2 l[i]) return false;mmax(dis1, l[i]), mmin(dis2, r[i]);}return true;};while (L R) {mid (L R) 1;if (check(mid)) {R mid - 1;ans mid;} else L mid 1;}cout ans endl;}return 0;
}
E. Good Triples 问题分析:
给定整数n求出有多少个三元组满足题目条件且若三元组的元素相同但排序不同则 算是不同的三元组。
我们通过样例以及向下推导可知: 故满足的公式且为n各位数字得到结果的乘积
#includebits/stdc.h
#pragma GCC optimize(Ofast)
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cinT;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
templateclass T bool mmax(T u, T v) { return u v ? (u v, 1) : 0; }
templateclass T bool mmin(T u, T v) { return u v ? (u v, 1) : 0; }
#define lowbit(x) (x(-x))
#define yes coutYESendl
#define no coutNOendl
using namespace std;
typedef pairint,intpii;
const int N 1e57;
signed main()
{IOSuse{string a;cina;int ans1;for(int i0;ia.LEN;i){ans*(a[i]-02)*(a[i]-01)/2;}coutansendl;}return 0;
}