eg:感觉题目很简单,但是下午有课,打了俩小时多就去上课了,最后七题结尾。
比赛传送门
题意:找出十个数里是否有17和18
题解:签到
#include
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
ll read(){
ll f=1,x=0;char ch;
do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
return f*x;
}
int a[11];
int main(){
int T;
scanf("%d",&T);
while(T--){
int zack=0,mack=0;
for(int i=1;i<=10;i++){
scanf("%d",&a[i]);
if(a[i]==17)zack=1;
if(a[i]==18)mack=1;
}
for(int i=1;i<10;i++)printf("%d ",a[i]);
printf("%d\n",a[10]);
if(zack && mack)puts("both");
else if(zack)puts("zack");
else if(mack)puts("mack");
else puts("none");
printf("\n");
}
return 0;
}
题意:给出两个国家的金牌,银牌,铜牌数量。有两种排序方法,第一种是奖牌的总数,第二种是每个牌的数量按照优先级比较。
看A国家是否都能赢B国家。
题解:签到题
#include
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
ll read(){
ll f=1,x=0;char ch;
do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
return f*x;
}
struct arr{
int sum,no,g,s,m;
}a[3];
int main(){
int T;
scanf("%d",&T);
while(T--){
int count=0,color=0;
for(int i=1;i<=2;i++){
scanf("%d%d%d",&a[i].g,&a[i].s,&a[i].m);
a[i].sum=a[i].g+a[i].s+a[i].m;a[i].no=i;
}
printf("%d %d %d %d %d %d\n",a[1].g,a[1].s,a[1].m,a[2].g,a[2].s,a[2].m);
if(a[1].sum>a[2].sum)count=1;
if(a[1].g>a[2].g)color=1;
else if(a[1].g==a[2].g){
if(a[1].s>a[2].s)color=1;
else if(a[1].s==a[2].s){
if(a[1].m>a[2].m)color=1;
}
}
if(count && color)puts("both");
else if(count)puts("count");
else if(color)puts("color");
else puts("none");
puts("");
}
return 0;
}
题意:给出n组人和m个饼干,若m个饼干小于等于当前的人,那么m可以翻倍。
题解:模拟即可。
#include
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
ll read(){
ll f=1,x=0;char ch;
do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
return f*x;
}
int n,m,k,x;
int main(){
int T;
scanf("%d",&T);
for(int ttt=1;ttt<=T;ttt++){
scanf("%d%d",&n,&m);
printf("Practice #%d: %d %d\n",ttt,n,m);
scanf("%d",&k);
for(int i=1;i<=k;i++){
scanf("%d",&x);
if(m>x)printf("%d %d\n",x,m-x),m-=x;
else {
while(m<=x)m*=2;
printf("%d %d\n",x,m-x),m-=x;
}
}
puts("");
}
return 0;
}
题意:做一杯奶茶需要x个柠檬和y份糖,经营n天,每天需要做ai份奶茶,当天一个柠檬的价格是bi,80份糖的价格是ci,只能80份80份的买糖。 题意:算出同心的圆和正方形的面积交 题意:给出平衡字符串的定义:任意偶数长度的连续子串的元音字母和辅音字母个数相同。现在各出一个只含小写字母和?的字符串,?可以安排任意字母,问有多少种方法使得其为一个平衡字符串。 题意:二维汉诺塔,问最少步数。
题解:贪心,如果在第i天柠檬不够了,那么一直买到第j天的需要,保证bj#include
E-Rain Gauge
题解:几何题,三种情况分类讨论即可。#include
F-Balanced Strings
题解:统一考虑整个字符串,假设第一个为元音,那么第一个?就有20种,之后类推。假设第一个为辅音,那么第一个?为元音,之后类推。最后答案为两种之和。#include
G-Towers of Hanoi Grid
题解:一个盘子的最少步数为 2 ∗ ( m − 1 ) 2*(m-1) 2∗(m−1),n个盘子就是 n ∗ 2 ∗ ( m − 1 ) n*2*(m-1) n∗2∗(m−1),不成立的情况就是 n > ( m − 1 ) ∗ ( m − 1 ) + 1 n>(m-1)*(m-1)+1 n>(m−1)∗(m−1)+1#include