另附:
另一份题解,更加详细
A
又是好玩的游戏,手玩一下 就发现规律了,简单判一下奇偶就行了
B
两个字母不一样可以消,保留前一个。
考虑最后的状态,肯定只有一个字母,而且这个字母还是第一个字母,所以直接遍历,遇到和第一字母不相同的就跳出,反之ans++
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
ll ans;
string str;
int main(int argc, char const *argv[])
{
ans = 0;
cin>>str;
int n = str.size();
rep(i,0,n)
{
if(str[i] != str[0])
break;
else
ans++;
}
cout<<ans<<endl;
return 0;
}
c
假如你熟悉普通的24点的话,你就会知道4个7是不行的,手推一下发现5个7也不行。这个时候就要看样例的解释了
n = 6 :
(
7
∗
7
∗
7
−
7
)
/
(
7
+
7
)
=
24
(7*7*7-7)/(7+7)=24
(7∗7∗7−7)/(7+7)=24
依照这个解释很容易想到n=7时的构造方法
n = 7:
(
7
+
7
+
7
)
/
7
∗
(
7
+
7
/
7
)
=
24
(7+7+7)/7*(7+7/7)=24
(7+7+7)/7∗(7+7/7)=24
然后通过
+
7
,
−
7
+7,-7
+7,−7操作,n>=6后都能凑出24点
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
int n;
int main(int argc, char const *argv[])
{
cin>>n;
if(n < 6)
printf("NO\n");
else
printf("YES\n");
return 0;
}
d
贪心,最后肯定只有两种情况
01010
10101
对于 1010101 如果奇数的地方不是1就 s1++, 如果偶数的地方不是0就 s2++,
ans = max(s1, s2);
min(ans0, ans1)次交换, ans - min(ans0, ans1) 次改变好坏
两种情况取小
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
int n;
string a;
int s1,s2;
int ans1,ans2;
int main(int argc, char const *argv[])
{
cin>>n;
cin>>a;
s1 = 0;
s2 = 0;
ans1 = 0;
ans2 = 0;
rep(i,0,n)
{
if(i%2 && a[i] != '0')
s1++;
if(i % 2 == 0 && a[i] != '1')
s2++;
}
ans1 = max(s1,s2);
s1 = 0;
s2 = 0;
rep(i,0,n)
{
if(i%2 && a[i] != '1')
s1++;
if(i % 2 == 0 && a[i] != '0')
s2++;
}
ans2 = max(s1,s2);
cout<<min(ans1,ans2)<<endl;
return 0;
}
E
模拟,要讨论的情况有点多,具体看代码(题目已经排序了,请忽略我的排序,打acm不需要视力)
容易wa的点是z有两张牌的时候且最大的没有c大的情况,z肯定先出小的那张。然后z手上只剩下一张牌了,则c肯定从大的往小的出,因此判断c手上是否有两张牌比z剩下的那张牌小,如果存在则z胜,不存在则c胜。
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
string str1;
string str2;
int a[20];
int b[20];
int zh(char c)
{
if(c == 'T')
return 10;
if(c == 'J')
return 11;
if(c == 'Q')
return 12;
if(c == 'K')
return 13;
if(c == 'A')
return 14;
if(c == '2')
return 15;
return c-'0';
}
// bool cmp(int a,int b)
// {
// return a > b;
// }
int main(int argc, char const *argv[])
{
cin>>str1;
cin>>str2;
int len1 = str1.size();
int len2 = str2.size();
rep(i,0,len1)
{
a[i] = zh(str1[i]);
}
rep(i,0,len2)
{
b[i] = zh(str2[i]);
}
// sort(a,a+len1+1,cmp);
// sort(b,b+len2+1,cmp);
if(len1 == 1)
{
printf("zhong_wang\n");
}
else
{
if(a[1] >= b[len2-1])
printf("zhong_wang\n");
else if(len2 >= 2 && a[1] > b[0] && a[1] > b[1])
printf("zhong_wang\n");
else
printf("cfeitong\n");
}
return 0;
}
抢了个第二还是很开心的