A. A+B Again?
给定一个两位数正整数 $$$n$$$ ,求其位数之和。
将每位数取出相加即可
`#include
include
const int N = 114514;
int a[N];
int n;
int t;
using namespace std;
int main()
{
cin >> t;
while (t--)
{
cin >> n;
int sum = 0;
while (n != 0)
{
sum += n % 10;
n /= 10;
}
cout << sum << endl;
}
}`
B. Card Game
Suneet 和斯拉夫玩纸牌游戏。游戏规则如下
- 每张牌的整数值介于 $$$1$$$ 和 $$$10$$$ 之间。
- 每位玩家收到 $$$2$$$ 张牌,牌面朝下(因此玩家不知道自己的牌)。
- 游戏采用回合制,由个回合组成。在一个回合中,双方随机抽取一张未翻开的牌并翻开。翻开的牌中数字严格意义上更大的一方获胜。如果数字相等,则无人获胜。
- 如果一名玩家赢得的回合数最多(即严格意义上大于另一名玩家),则该玩家赢得游戏。如果相等,则无人获胜。
由于 Suneet 和 Slavic 并不是最好的朋友,您需要计算 Suneet 最终成为赢家的可能性有多少。
枚举双方的所有可能
`#include
include
include
int t;
int a1,a2,b1,b2;
int sum1,sum2;
int sum;
using namespace std;
int main()
{
cin >> t;
while (t--)
{
cin >> a1 >> a2 >> b1 >> b2;
if ((a1 > b1 && a2 >= b2)||a1>=b1&&a2>b2) sum++;
if (a1 > b2 && a2 >= b1||(a1>=b2&&a2>b1)) sum++;
if (a2 > b1 && a1 >= b2||(a2>=b1&&a1>b2))sum++;
if (a2 > b2 && a1 >= b1||(a2>=b2&&a1>b1)) sum++;
cout << sum << endl;
sum = 0;
}
return 0;
}`
C. Showering
作为一名计算机科学专业的学生,亚历克斯面临着一个严峻的挑战--洗澡。他努力每天洗澡,但尽管他尽了最大努力,却总是遇到困难。他需要花 $$$s$$$ 分钟洗澡,而一天只有 $$$m$$$ 分钟!
他已经为一天安排了 $$$n$$$ 项任务。任务 $$$i$$$ 被表示为一个时间间隔 $$$(l _ i$$$ , $$$r _ i)$$$ ,这意味着亚历克斯很忙,不能在这个时间间隔内(严格来说是在 $$$l _ i$$$ 和 $$$r _ i$$$ 之间的任何时间点)洗澡。**没有两项任务重叠。
给定所有 $$$n$$$ 时间间隔,亚历克斯当天能洗澡吗?换句话说,亚历克斯是否有一个长度至少为 $$$s$$$ 的空闲时间间隔?
在第一个测试案例中,亚历克斯可以在一天的前 $$$3$$$ 分钟洗澡,并且不会错过任何任务。
输入
第一行包含一个整数 $$$t$$$ ( $$$1 \leq t \leq 10^4$$$ ) - 测试用例数。
每个测试用例的第一行包含三个整数 $$$n$$$ 、 $$$s$$$ 和 $$$m$$$ ( $$$1 \leq n \leq 2 \cdot 10^5$$$ ; $$$1 \leq s, m \leq 10^9$$$ )。( $$$1 \leq n \leq 2 \cdot 10^5$$$ ; $$$1 \leq s, m \leq 10^9$$$ ) - 亚历克斯已经计划好的时间间隔数、亚历克斯洗澡的时间以及一天的分钟数。
接着是 $$$n$$$ 行,其中的 $$$i$$$ 行包含两个整数 $$$l _ i$$$ 和 $$$r _ i$$$ ( $$$0 \leq l _ i < r _ i \leq m$$$ )-- $$$i$$$ /--任务的时间间隔。没有两个任务重叠
输入的附加限制: 每 $$$i > 1$$$ 为 $$$l _ i > r _ {i-1}$$$ 。
所有测试用例的 $$$n$$$ 之和不超过 $$$2 \cdot 10^5$$$ 。
//本题和贪心有关,和最大不相交区间数相似,对区间右端点排序,比较前一区间左端点和本区间右端点的距离与洗澡用时。
`#include
include
include
int t;
const long long N = 200010;
long long n,s, m;
using namespace std;
struct range
{
long long l, r;
bool operator<(const range& w)const
{
return r < w.r;
}
}range[N];
int main()
{
cin >> t;
while (t--)
{
cin >> n >> s >> m;//间隔,用时,总时间。
for (int i = 1; i <= n; i++)
{
long long l, r;
cin >> l >> r;
range[i] = { l,r };
}
sort(range+1, range + n+1);
if (range[1].l >= s || m - range[n].r >= s)
{
cout << "YES" << endl;
continue;
}
int maxn=0;
for (int i = 1; i < n; i++)
{
if (range[i + 1].l - range[i].r >= s)
{
maxn=1;
cout << "YES" << endl;
break;
}
}
if(maxn==0)
{
cout<<"NO"<<endl;
}
}
return 0;
}
`
D. Slavic's Exam
斯拉夫的考试非常难,他需要您的帮助才能通过考试。下面是他正在苦苦思索的问题:
存在一个字符串 $$$s$$$ ,它由小写英文字母和可能是零个或多个"? "组成。
要求斯拉夫人将每个"? "改成小写英文字母,使字符串 $$$t$$$ 成为字符串 $$$s$$$ 的子序列(不一定连续)。
输出任何这样的字符串,如果没有符合条件的字符串存在,则说不可能。
输入
第一行包含一个整数 $$$T$$$ ( $$$1 \leq T \leq 10^4$$$ )--测试用例数。( $$$1 \leq T \leq 10^4$$$ ) - 测试用例的数量。
每个测试用例的第一行包含一个字符串 $$$s$$$ ( $$$1 \leq |s| \leq 2 \cdot 10^5$$$ 和 $$$s$$$ 仅由小写英文字母和"?
每个测试用例的第二行包含一个字符串 $$$t$$$ ( $$$1 \leq |t| \leq |s|$$$ 和 $$$t$$$ 仅由小写英文字母组成)--该字符串应该是字符串 $$$s$$$ 的子串。
所有测试用例中 $$$|s|$$$ 的总和不超过 $$$2 \cdot 10^5$$$ ,其中 $$$|x|$$$ 表示字符串 $$$x$$$ 的长度。
//////由于本题字符串长度小于等于200000,如果依次比较会tle,所以可以用双指针进行优化
`#include
include
include
include
const int N = 200010;
using namespace std;
int t1;
string s, t;
int main()
{
cin >> t1;
while (t1--)
{
cin >> s >> t;
int len1 = s.size();
int len2 = t.size();
int i = 0, j = 0;
while (i < len1 && j < len2)
{
if (s[i] == t[j] || s[i] == '?')
{
s[i]=t[j];
j++;
}
i++;
}
if (j == len2)
{
cout << "YES" << endl;
for (int i = 0; i < len1; i++)
{
if (s[i] == '?') s[i]='a';
}
cout << s << endl;
}
else
{
cout << "NO" << endl;
}
}
}`
标签:964,10,include,int,leq,b1,b2,div4,round From: https://www.cnblogs.com/lixinran1006/p/18592730