IG !

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statisti

Problem Description

作为一名 lol 老玩家,lxw 听到 IG 夺冠后激动地不知道如何庆祝,想来想去决定让你分别用' N '和 ' B '两个字符打印"IG"。

用' N '来打印' I ',用' B ' 来打印 ' G '。

给定' I '和' G '的高度、宽度以及间隔。

Input

输入包括三个正整数h,w,x分别表示'I'和'G'单词的高度、宽度以及间隔。

7 <= h , l <= 29

1 <= x <= 10

输入保证h和l均为奇数(为了方便确定' I '中的竖线位置和' G '中短横线的位置 )。

Output

打印的 IG 图形。

Sample Input

9 9 3

Sample Output

NNNNNNNNN   BBBBBBBBBN       BN       BN       BN       B    BBBBN       B       BN       B       BN       B       B
NNNNNNNNN   BBBBBBBBB

Hint

注意:

1.'G' 中短线的长度为w/2(向下取整)。

2.行末不要输出任何多余的空格,样例输出中每一行的字符数并不相等。

Source

lxw

【分析】:这是一类图形打印的题,找规律,逐行打印;

Result: Accepted
Take time: 0ms
Take Memory: 248KB#include <iostream>
#include <bits/stdc++.h>
using namespace std;int main()
{int n,m,h;while(cin>>n>>m>>h){for(int k=0; k<n; k++){if(k==0||k==n-1)   //第一行与最后一行相同;{for(int i=0; i<m; i++){printf("N");}for(int i=0; i<h; i++){printf(" ");}for(int i=0; i<m; i++){printf("B");}}else if(k<n-1)   //{for(int i=0;i<m+h;i++){if(i==m/2){printf("N");}else{printf(" ");}}printf("B");if(k==n/2){for(int i=0;i<m/2;i++){printf(" ");}for(int i=0;i<m/2;i++){printf("B");}}else if(k>n/2){for(int i=0;i<m-2;i++){printf(" ");}printf("B");}}printf("\n");}}return 0;
}

竹鼠养殖

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

众所周知,华农兄弟喜欢养殖竹鼠。他们的养殖厂里总共有n只竹鼠,他们非常疼爱自己家的竹鼠。

华农兄弟总共贮存了m个竹片,每根竹片有他们所属的种类。
竹鼠为了避免因吃的太多,被华农兄弟做成烤竹鼠,所以每天只吃一个竹片。

同时,为了防止自己吃坏肚子,所以每只竹鼠只吃同一类竹子。(不同的竹鼠可以吃相同类别的竹子)
现在华农兄弟想知道,自己贮存的竹片最多能够同时喂养这n只竹鼠多少天。他们觉得你很" 漂亮 ",所以决定请你帮忙解决这个问题。

Input

第一行包含两个整数 n 和 m(1 ≤ n ≤ 100,1 ≤ m ≤ 100)——竹鼠的数目和竹片数量。

第二行包含整数序列 a1、a2、…、am ( 1 ≤ ai ≤ 100 ) ,其中 ai 是第i个竹片的类型。

Output

输出贮存的竹片最多能够同时喂养n只竹鼠多少天,假设一天都不可能,输出0。

Sample Input

4 10
1 5 2 1 1 1 2 5 7 2

Sample Output

2

Hint

有4只竹鼠,10个竹片。

其中' 1 '类竹片共4个, ' 2 ' 类竹片共3个,' 5 '类竹片共2个,' 7 '类竹片共1个。

一种最优的方案是:让第一只和第二只竹鼠吃' 1 '类竹片,让第三只竹鼠吃' 2 '类竹片,让第四只竹鼠吃' 5 '类竹片,这样最多能够同时喂养这n只竹鼠2天。

Source

lxw

【分析】:这是一个枚举题?,该题分两步:第一步,统计每种竹片的总数,第二步,从每天所有竹鼠都吃一个开始,依次增加,循环判断是否可提供给n只竹鼠;枚举的时候可以向下二分优化(?),后期我会附上(优化代码)代码;

Result: Accepted
Take time: 0ms
Take Memory: 196KB#include <bits/stdc++.h>
using namespace std;
int A[110];
int main()
{int n,m;int x;while(~scanf("%d %d",&n,&m)){int ans=0,tmp;memset(A,0,sizeof(A));//累加计数要清零;for(int i=0;i<m;i++)  //统计每种鼠片的总数;{scanf("%d",&x);A[x]++;                     }for(int i=1;;i++)  //枚举这些鼠片够n只竹鼠吃多少天,{tmp=0;for(int j=0;j<=100;j++){tmp+=A[j]/i;}if(tmp>=n){ans=i;}else{break;}}printf("%d\n",ans);}return 0;
}

EL PSY CONGROON

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

我是疯狂科学家——凤凰院凶真!欺骗世界这种事情,简直是小菜一碟!哇哈哈哈哈哈哈哈!让我再宣布一次吧!我是疯狂科学家——凤凰院凶真!你的AC就在我掌中。

冈部伦太郎(自称“凤凰院凶真”)有一个伟大的发明——“微波炉(待定)”,就是一个可以向过去发送邮件的“时间机器”,可是最多只能向过去三天发送邮件。这一天动漫“命运石之门”开播了,可是红莉牺(冈部伦太郎的好友)不小心错过了“命运石之门”的首映,于是红莉牺希望向过去的自己发送邮件,提醒自己千万别错过首映。已知红莉牺现在处在y年m月n日a时b分,她将向过去k小时发送邮件,她希望知道她的邮件发往了哪个时间点。如果你能告诉她正确的答案,那么红莉牺就会让冈部伦太郎送你一个AC。

Input

第一行包含一个数字 t,代表输入组数。(0 <  t < 100 )

第二行包含 5 个数字y、m、n、a、b,分别代表年、月、日、小时、分钟(本题采用24小时进制)。

(2000 < y < 4000, 1 <= m <= 12, 1 <= n <= 31,0 <= a <= 23,0 <= b <= 59)

从第三行输入一个数字 k,代表 k 小时后。( 0 <= k <= 72)

输入保证结果都在 int 范围内。

Output

对于每组数据,输出五个整数代表k小时前是几年几月几日几时几分,年保证都是四位数,月日时分为两位数,不足两位在前面补零。

输出格式为:年/*^*\月/*^*\日/*^*\时/*^*\分,详情见下方样例。

Sample Input

2
2018 01 01 00 00
2
2008 03 01 00 00
3

Sample Output

2017/*^*\12/*^*\31/*^*\22/*^*\00
2008/*^*\02/*^*\29/*^*\21/*^*\00

Hint

Source

幸不敷衍笑与哭

【分析】这是一道时间逻辑题,建议把n个小时分成多少天+多少小时的i形式,便于逻辑推理倒叙时间;

Result: Accepted
Take time: 0ms
Take Memory: 188KB#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int rn(int y)     //判断闰年
{if(y%400==0||y%100!=0&&y%4==0)return 1;return 0;
}
int ts(int y,int m)  //返回y年m月的天数;
{if(m==2&&rn(y))return 29;if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)return 31;if(m==2)return 28;return 30;}
int main()
{//24小时制,00:00~23:59;时间与月天的进制分别对应清楚//假设该题要求12小时制,不妨先以24小时制算出答案后在进行转化int t;int y,m,d,hour,Min;int x;int day,s;scanf("%d",&t);while(t--){scanf("%d %d %d %d %d",&y,&m,&d,&hour,&Min);scanf("%d",&x);day=x/24;s=x%24;if(day){if(d>day){d-=day;}else if(m>1){m--;d+=ts(y,m);d-=day;}else{y--;m=12;d+=31;d-=day;}}if(s){if(hour>=s){hour-=s;}else if(d>1){d--;hour=hour+24-s;}else if(m>1){m--;d=ts(y,m);hour=hour+24-s;}else{y--;m = 12;d=31;hour=hour+24-s;}}printf("%d/*^*\\",y);if(m/10==0)printf("0");printf("%d/*^*\\",m);if(d/10==0)printf("0");printf("%d/*^*\\",d);if(hour/10==0)printf("0");printf("%d/*^*\\",hour);if(Min/10==0)printf("0");printf("%d\n",Min);}return 0;
}

初级桥牌入门

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

(纸质版题目样例有误,请以OJ上的为准)

桥牌是一种高雅、文明、竞技性很强的智力性游戏。

它是一种是两人对两人的四人牌戏,种类繁多,都是从旧时傀儡惠斯特等牌戏逐渐发展形成的。

在山东理工大学,有这样一门选修课,叫做初级桥牌入门,出题人悄悄告诉你如果你有幸选对老师,那么你将可以享受到老师小班制的辅导,而这也将会给你带来跟其他任何一门课都不一样的体验。(ps:大部人可以轻松拿到学分)

由于桥牌的规则和打牌技巧非常复杂,因此仅仅通过这几个小时就让一个人了解桥牌的规则是不现实的。但是,

通过桥牌打法中的一小部分来使一个人初步认识桥牌还是可以做到的。

类似于打麻将,四个人中对着坐的两个人是搭档,他们两个人会得到一个得分。一副扑克牌有54张,去掉大小王,每个人都会分到13张扑克牌。分完牌之后,四个人根据牌力叫牌(这个操作在本题中忽略),根据叫牌结果会将双方分成攻方和守方。在叫牌时,双方会根据自己手上的扑克牌进行一次 数大牌点 的操作。本题目要做的就是只需让你帮忙数出攻方和守方的大牌点

如图所示,打牌的四个人分为北家(N),东家(E),南家(S)和西家(W)。本题假定南家和北家永远为攻方,东家和西家永远为守方。每一门花色都有

A  K Q J 10 9 8 7 6 5 4 3 2 13张牌

其中A K Q J分别代表 4 3 2 1 个大牌点,因此四门花色共有40个大牌点。

特别的如果你某一门花色你一张也没有(专业术语称为缺门)额外 加5个大牌点,某一门花色你只有一张(专业术语称为单张)额外 加3个大牌点,某一门花色你只有两张(专业术语称为双张)额外 加1个大牌点,因此一副牌最后总共产生的大牌点是大于40的。

值得注意的是,在桥牌当中,黑桃(Spade)用S表示,红心(Heart)用H表示,方块(Di a m ond)用D表示,梅花(Club)用C表示。因此,在本题当中,一张扑克牌是通过 一个表示花色的英文字母 + 一个或两个表示数值的字符来表示的,特别的,为了简化输入,本题中A ,K  , Q ,  J 分别用 1,13,12,11 表示。

例如你现在有这样一手牌: S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1

即代表你有黑桃1-13,那么你首先数出你已有的S1,S13,S12,S11 一共是10个大牌点,而红心,方块,梅花这三门花色你一张也没有(即缺门),那么你需要再额外加上3*5=15个大牌点。你一共有的大牌点数就是10+15=25个大牌点。

现在请你判断出攻方(即南家和北家)和守方(即东家和西家)谁的大牌点比较多,并计算出两方的大牌点总和。

Input

输入数据有多组,首先输入一个整数 T,代表数据组数。

每组数据输入有4行,每行输入13张牌。两张扑克牌之间由一个空格隔开。

其中一二三四行分别输入的是北家,南家,东家和西家手上的扑克牌。

题目保证输入数据合法,即输入的是一副去掉大小王的完整扑克牌。

Output

对于每组输入,输出一行,包括判断结果和双方的大牌点总和,二者间用空格隔开。

如果攻方的大牌点大于防守方的大牌点,判断结果为“MORE”,

如果二者大牌点相同,判断结果为“TIE”,

如果攻方的大牌点小于防守方的大牌点,判断结果为“LESS”。

Sample Input

1
H1 H13 H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2
C1 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2
D1 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2
S1 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2

Sample Output

TIE 100

Hint

样例中北家拿了13张红心,南家拿了13张梅花,东家拿了13张方块,西家拿了13张黑桃。

因此他们每个人都有25个大牌点,攻方和守方就同时有50个大牌点,因此两家打平。

输出TIE,同时输出四家大牌点总和100。

Source

axuhongbo

【分析】:感觉这题因该属于模拟吧,简单干错利落,照题意要求写就可以,没有比较难处理的地方

Result: Accepted
Take time: 0ms
Take Memory: 212KB#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int s[130][20];
int A[5];
int sz(char c)
{int ans=0;for(int i=1;i<=13;i++){ans+=s[c][i];}return ans;
}
int judge(int x)
{if(x==0)return 5;if(x==1)return 3;if(x==2)return 1;return 0;
}
int cal()   //返回该拍的可获得的最大点数;
{int tmp,ans=0;tmp=sz('H');ans+=judge(tmp);tmp=sz('C');ans+=judge(tmp);tmp=sz('D');ans+=judge(tmp);tmp=sz('S');ans+=judge(tmp);return ans;
}
int tj(char *str)
{int ans=0;for(int i=1;str[i];i++){ans=ans*10+str[i]-'0';}return ans;
}
int main()
{int t;scanf("%d",&t);char str[5];int num;while(t--){for(int j=0; j<4; j++){int ans=0;memset(s,0,sizeof(s));for(int i=0;i<13;i++){scanf("%s",str);num=tj(str);s[str[0]][num]++;if(num==1)ans+=4;else if(num==13)ans+=3;else if(num==12)ans+=2;else if(num==11)ans+=1;}ans+=cal();A[j]=ans;}if(A[0]+A[1]>A[2]+A[3])printf("MORE %d\n",A[0]+A[1]+A[2]+A[3]);else if((A[0]+A[1]==A[2]+A[3]))printf("TIE %d\n",A[0]+A[1]+A[2]+A[3]);elseprintf("LESS %d\n",A[0]+A[1]+A[2]+A[3]);}return 0;
}

Wait in line

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

众所周知,某游戏公司每次新游公测都会有很多玩家挤不进服务器,与数百万人一起在队列中等待。

近期,该游戏公司又公测了一款氪金生存类手游。尽管已经有大量玩家无法挤进服务器,但是某公司为了让这款游戏显得更加火爆,决定在服务器的排队序列中加入一堆虚假的机器人(yinbing)。

已知该游戏共有 n 个服务器(编号从1开始),游戏公司总共添加了 m 次机器人。

每次添加用三个整数l,r,x表示:从第 l 个服务器到第 r 个服务器每个服务器均添加 x 个机器人。

请问最终每个服务器中分别有多少个机器人。

Input

第一行输入两个整数n , m ( 1 <= n , m <= 100000)

接下来m行,每行输入三个整数l , r , x 。

( 1 <= l <= r  <= n , 1 <= x <= 100 )

Output

输出一行,包括n个数,用空格隔开。

第i个数表示i号服务器排队序列中的机器人个数。

Sample Input

5 3
1 3 2
2 3 1
3 5 10

Sample Output

2 3 13 10 10

Hint

共有5个服务器,添加了3次机器人。

服务器排队序列中的机器人数量变化如下所示

初始为( 0 , 0 , 0 , 0 , 0 )

第一次添加机器人后为( 2 , 2 , 2 , 0 , 0 )

第二次添加机器人后为( 2 , 3 , 3 , 0 , 0 )

最后一次添加机器人后为( 2 , 3 , 13 , 10 , 10 )

Source

lxw

【分析】:可以 用nlog的线段树建树,nlogn的查找,因该可以过,(后期我试试),因为该题是在所有区间都加完之后在进行提问区间之和,故可以采用离线方式,即l和r都加x    那么A【l】+k,A【r+1】-k;最后1-n顺序累加,那么l到r的区间和位A【r】-A【k-1】;

Result: Accepted
Take time: 64ms
Take Memory: 596KB#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 1e5+10;
int A[N];int main()
{int n,m,l,r,x;while(~scanf("%d%d",&n,&m)){memset(A,0,sizeof(A));for(int i=0;i<m;i++){scanf("%d %d %d",&l,&r,&x);A[l]+=x;A[r+1]-=x;}for(int i=1;i<=n;i++){A[i]+=A[i-1];}for(int i=1;i<=n;i++){if(i!=1)printf(" ");printf("%d",A[i]);}printf("\n");}return 0;
}

阎小罗的Minimax

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

《阎王不高兴》中的阎小罗可谓人见人爱,花见花开。他的一贯开场就是:“说出来你可能不相信,我是新上任的阎王,我现在……” 自从ln看了之后,就开始在各种场合模仿,在看题的时候也不忘记来上一段,于是就有了这样的题目描述:“说出来你可能不相信,我是阎小罗,现在正在看题,题目意思是这样的,给你一个 n * m 的矩阵,每个小方格都有一个整数 num,矩阵的行编号从上到下为 1 ~ n,列编号从左到右为 1 ~ m,定义 ( x,y ) 表示第 x 行第 y 列的方格。现在你可以删去第 x ( 1 < x < n ) 行和第 y (1 < y < m ) 列,让原来的矩阵变成四个小矩阵,每个小的矩阵都有一个 AC 值,AC 值是当前矩阵的所有数之和。现在阎小罗想知道怎么去删除第 x 行和第 y 列,让分成的四个部分的矩阵的 AC 值中,最大值减去最小值的差值最小,阎小罗将它称作 Minimax,也就是现在的 AC 值集合中有四个小矩阵的值,AC = { AC1,AC2,AC3,AC4 },假设 AC1 是 AC 中的最大值,AC3 是 AC 中最小值,那么我们定义 M = AC1 - AC3,在所有的分割方案中,最小的那个 M 就是 Minimax,快来帮助阎小罗找到 Minimax 吧。

Input

第一行一个整数 T ,代表阎小罗矩阵的个数。( 1 <= T <= 10 )

第一行包括两个整数 n 和 m,代表阎小罗的矩阵的大小。( 3 <= n <= 300,3 <= m <= 300 )

接下来有 n 行,每一行有 m 个数,保证每个数的范围在 int 内。( 0 <= num <= 1000000000 )

Output

对于每个矩阵输出一个数,代表阎小罗想要的Minimax,占一行,行末没有多余空格。

Sample Input

2
3 3
5 3 9
1 2 4
7 6 8
4 4
1 2 3 4
5 6 7 8
8 6 7 5
5 6 8 4

Sample Output

4
10

Hint

Source

Mercury_Lc

【分析】:去掉第i行,第j列,分成四个小矩阵,所以第一步是确定可行解,第二部计算分出来的每个小矩阵的和,求和的时候,可以借助上体的思路,减少累加次数;

Result: Accepted
Take time: 0ms
Take Memory: 572KB#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N = 310;
const int INF = 1e9+7;
int sum[N][N];
int ans[4];
int n,m;
int MaxMin()   //计算小矩阵中最大和与最小个和的差值;
{int Max,Min;Max=Min=ans[0];for(int i=1;i<4;i++){Max=max(Max,ans[i]);Min=min(Min,ans[i]);}return Max-Min;
}
int zs(int x,int y)//左上小矩阵
{int  tmp=0;for(int i=1;i<x;i++){tmp+=sum[i][y-1];}return tmp;
}
int ys(int x,int y)//右上小矩阵;
{int tmp=0;for(int i=1;i<x;i++){tmp+=sum[i][m]-sum[i][y];}return tmp;
}
int zx(int x,int y)//左下小矩阵;
{int tmp=0;for(int i=x+1;i<=n;i++){tmp+=sum[i][y-1];}return tmp;
}
int yx(int x,int y)//右下小矩阵
{int tmp=0;for(int i=x+1;i<=n;i++){tmp+=sum[i][m]-sum[i][y];}return tmp;
}
int solve(int x,int y)
{ans[0]=zs(x,y);ans[1]=ys(x,y);ans[2]=zx(x,y);ans[3]=yx(x,y);return MaxMin();
}
int main()
{//int n,m;int t;int tmp;int x;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(sum,0,sizeof(sum));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&x);sum[i][j]=x+sum[i][j-1];}}tmp=INF;for(int i=2;i<n;i++){for(int j=2;j<m;j++)//枚举可行域;{tmp=min(solve(i,j),tmp);}}printf("%d\n",tmp);}return 0;
}

奇怪的纸币

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

大家都知道人民币的面值有1元,2元,5元。这是因为1、2、5三个都是质数,可以合理地组合成其他数字。其中除了8和9需要3个数字才能组合成功外, 10以内的其他数字都可以由1、2、5中的1个或者2个组合。另外,人民币因为配备了10,所以10-2=8,10-1=9,这就完美解决了8和9的问题。由此一来,10以内所有的数字都在2张人民币以内就可以得到解决。

小明忽然想到1、5、7也同样都是质数,那么用这些面值的纸币组成某个数最小需要多少张纸币呢?

Input

一个数字 n(1 <= n <= 100000)

Output

一个数字,代表最少需要多少张面值 1 或 5 或 7 的纸币构成。

Sample Input

10

Sample Output

2

Hint

Source

7989

【分析】:这是一道简单的动态规划的题;关键是找状态转移方程;

 A[i]=min(A[i-B[j]]+1,A[i]);  
 A[i-B[j]]=min(A[i]+1,A[i-B[j]]);
Result: Accepted
Take time: 0ms
Take Memory: 592KB#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N= 1e5+10;
int A[N];
int B[3]= {1,5,7};
void init()
{for(int i=1; i<N; i++){A[i]=N;}A[0]=0;for(int i=1; i<N; i++){for(int j=0; j<3; j++){if(i-B[j]>=0){A[i]=min(A[i-B[j]]+1,A[i]);}A[i-B[j]]=min(A[i]+1,A[i-B[j]]);}}
}
int main()
{init();int n;while(cin>>n){cout<<A[n]<<endl;}return 0;
}

“斐波那契”串

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

通过一个学期的学习,哈士奇知道了斐波那契这种有趣的数列,这种数列由1,1开始,之后的斐波那契数就由之前的两数相加。用数学公式定义斐波那契数列可以看成如下形式:

F( 1 ) = F( 2 ) = 1

F( n ) = F( n - 1 ) + F( n - 2 )  ( n >= 3 )

现在哈士奇定义了这样一种“斐波那契”串:

11235813213455891442…

不难看出这个串是这样构造的:

将 F( 1 ) , F( 2 ),F(3)… 放入串中,产生的新串即“斐波那契”串。

现在哈士奇想知道,“斐波那契”串的第 N 个数字是什么?你能编程解决这个问题吗?

Input

输入包含一个正整数 N ( 1 <= N <= 100000)。

Output

对于每个正整数 N ,输出“斐波那契”串中第 N 个数字。

Sample Input

8

Sample Output

3

Hint

Source

Miracle_QSH

【分析】:这道题应该属于大数题,注意  进位==0&&A【i】==0&&B【i】==0不能作为结束条件;两个数相加和的位数最多增加1位,

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N = 2e4+10000;//10550
int A[N];
int B[N];
int main()
{//freopen("out.txt","w",stdout);//init();int n;int tmp,ans;int jinwei;int M=N-1;int sum;while(cin>>n){for(int i=0;i<N;i++){A[i]=B[i]=0;}ans=2;if(n<3){printf("1\n");continue;}A[M]=1;B[M]=1;while(n>ans){int i,j=0;jinwei=0;for(i=M;i>=0;i--){sum=A[i]+B[i]+jinwei;tmp=B[i];B[i]=sum%10;jinwei=(sum/10);A[i]=tmp;}for(j=0;j<M;j++){if(B[j]){break;}}j=N-j;if(ans+j>=n){printf("%d\n",B[M-(ans+j-n)]);break;}
//             if(ans+j>n)
//             {
//                 printf("%d\n",B[ans+j-n])
//             }ans+=j;}}return 0;
}

记单词

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

英语考试就要到了,哈士奇决定在考试前的这段时间里每天背一些单词,他找到来一本乱序的单词书,为了方便记忆,哈士奇决定先给这本单词书重新按照字典序排序,然后把单词分成若干组,每天背诵一组,但是单词的数量实在是太多了,于是他决定编程解决这个问题。

已知书中共有 N 个单词,哈士奇每天计划背诵 M 个单词,请根据所给单词列出详细的学习计划。

Input

第一行包含两个正整数 N,M(1 <= N <= 1000,1 <= M <= N),表示书中共有 N 个单词,哈士奇每天计划背 M 个,且 N 为 M 的整数倍。

第二行包含 N 个 用空格隔开的只包含小写字母的字符串,每个单词不超过10个字符,表示 N 个单词。

Output

第一行包含一个正整数 T,表示分成 T 组。

接下来 T 行每行包含 M 个字符串,表示该组需要记忆的单词。

Sample Input

10 5
apple boy city tree girl orange pink red banana blue

Sample Output

2
apple banana blue boy city
girl orange pink red tree

Hint

Source

Miracle_QSH

【分析】:找到排序规则,排序,按要求输出即可

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct node
{char s[12];bool operator <(const node &x)const{return strcmp(s,x.s)<0;}
}que[1100];
int main()
{int n,m;while(cin>>n>>m){for(int i=0;i<n;i++){cin>>que[i].s;}sort(que,que+n);cout<<n/m<<endl;for(int i=0;i<n;i++){if(i%m!=0){cout<<" ";}cout<<que[i].s;if(i%m==m-1){cout<<endl;}}}return 0;
}

sisters

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

学园都市正在利用御坂美琴(RAILGUN)的体细胞在设施中生产sisters来进行不人道的实验,御坂美琴为了解救sisters,准备攻击制造妹妹们的设施。

现在已知有n个设施,御坂美琴(超电磁炮)每秒可以攻击一个设施,攻击第i个设施需要ai的体力,每秒可以恢复一个体力。现在御坂美琴马上就要出发了,她想知道自己在t秒内最多可以攻击掉多少设施?

Input

第一行包含三个数字 n, m, t 分别代表设施的数量,御坂美琴所拥有的体力值和时间。( 0<=n<=1000 )

第二行包含 n 个数字,第 i 个数字代表攻击第 i 个设施所需要的体力。

所有数据保证在 int 范围内。

Output

输出一个正整数代表在t秒内最多可以攻击掉的设施数。

Sample Input

5 5 5
1 2 3 4 5

Sample Output

3

Hint

Source

行走的二叉树

【分析】:对目标排序,依次枚举,注意,做多能攻击掉那个目标;

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int A[10100];
int main()
{int n,m,t;while(cin>>n>>m>>t){for(int i=0;i<n;i++){cin>>A[i];}int ans=0;sort(A,A+n);for(int i=0;i<t;i++){if(m>=A[ans]){m-=A[ans++];if(ans>=n){break;}}m++;}cout<<ans<<endl;}return 0;
}

Simple question

Time Limit: 4000 ms Memory Limit: 125536 KiB

Submit Statistic

Problem Description

Winter is too boring.
Lin wants to lie on the bed in the dormitory to watch the mobile phone, and is not willing to go out to study. But his teammates disliked his level and thought he should try to learn the algorithm. Lin took an algorithm book from his bed and started to look at it. After seeing a question, he thought it was too simple, just as proof of his study. But he is lazy to write, so he gave you this question. Now give you an integer n, you need to find a minimum positive integer m, so that m can be divisible by in all 1~n numbers. Since m may be large, it is output after modulo 100000007.

Input

There are no more than 20 test cases.

For each test case:

The line contains one integer n. ( 1 <= n <= 100000000 )

Output

For each test case, print one integer m.

Sample Input

1
5

Sample Output

1
60

Hint

Source

Mercury_Lc

【题意】:找出:1-n的最小公倍数;一定和质数有关,用到素数筛,问题等价于找出指数的最大方次小于n的乘积;

列如  5    =>          2^2*3^1*5*1;               11          ==>  2^3*3^2*5^1*7^1*11^1;

#include <bits/stdc++.h>using namespace std;
const int N=1e8+7;
const int M=1e7+7;
#define LL long long
const LL MOD = 100000007;
bool flag[N];
int prime[M];
int k;
void init()
{memset(flag,0,sizeof(flag));k=0;//int sum;for(int i=2;i<N;i++){if(!flag[i]){prime[k++]=i;}for(int j=0;j<k&&prime[j]*i<N;j++){flag[prime[j]*i]=1;if(!i%prime[j]){break;}}}
}
LL power(LL x,LL n)
{LL ans=1;for(int i=0;i<n;i++){ans*=x;}return ans;
}
int main()
{init();//cout<<"1";LL n,ans,now;while(cin>>n){ans=1;for(LL i=0;i<k;i++){if(prime[i]>n){break;}now=1;while(now*prime[i]<=n){now*=prime[i];}ans=(ans*now)%MOD;}cout<<ans<<endl;}return 0;
}

珂朵莉的烦恼

Time Limit: 500 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

身为黄金妖精族的珂朵莉(クトリ・ノタ・セニオリス)因为受到前世记忆的侵蚀,每天都在失去属于自己的记忆,而且珂朵莉并不能知道自己失去了多少宝贵的记忆,这让珂朵莉很是烦恼。

现在我们有幸知道了珂朵莉每天失去的记忆的数量,珂朵莉希望你告诉她自第l天到第r天自己一共失去了多少记忆,由于失忆无时无刻不在进行,珂朵莉可能会问你很多次。你能正确的回答珂朵莉的问题么?

Input

第一行包含一个数字 n,代表失忆发生的天数。( 0 <= n <= 1e6 )

第二行包含 n 个数字,第 i 个数字代表珂朵莉在第 i 天丢失的记忆数。

从第三行开始每行有两个由空格隔开的正整数 l , r 代表珂朵莉希望知道第 l 天到第 r 天自己丢失了多少记忆,输入以两个零结束。( 0 <= l <= r <= n )

输入保证结果都在 int 范围内。

Output

对于每次询问,输出一个非负整数代表在第 l 天到第 r 天里珂朵莉丢失了多少记忆。

Sample Input

5
1 2 3 2 1
1 1
1 5
0 0

Sample Output

1
9

Hint

本题时间限制严格,请使用scanf与printf进行输入输出。

Source

行走的二叉树

[分析]:问题与Wait in line  这道题类似,可参考

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+7;
int A[N];
int main()
{int n,l,r;while(cin>>n){for(int i=1;i<=n;i++){cin>>A[i];A[i]+=A[i-1];}while(cin>>l>>r){if(l==0&&r==0){break;}cout<<A[r]-A[l-1]<<endl;}}return 0;
}

PINK!

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

哈士奇和小粉是好朋友,这一天,她们一起去山上摘果子。小粉只顾着玩,再看哈士奇,一颗接一颗,不一会篮子里就装满了。太阳下山了,哈士奇拎着慢慢一篮子果子对小粉说:“你瞧,我今天摘了很多果子,我们一起吃吧!”小粉很高兴,说:“光吃没什么意思,不如我们用这些果子摆一个图案吧!”

于是两人决定摆一个大大的爱心!但怎么摆是个问题,现在给出爱心的大小,你能帮忙想出一个摆放的方案吗?

Input

输入有多组,每组输入包含一个正整数 N(2 <= N <= 10 且 N 为偶数)。

Output

对于每个 N,输出一个大小为 N 的心形图案, 图案由 “ * ” 组成。

Sample Input

2
6

Sample Output

  **  **
************************      ******************************************************
******************************
******************************
******************************************************************************************************************************

Hint

Source

Miracle_QSH

【分析】:图形打印:不在赘述:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;int main()
{int n,now,tmp,l,ans;while(cin>>n){now=n*5;tmp=n*3;l=n;for(int i=n;i>0;i-=2){for(int j=0;j<l;j++){cout<<" ";}if(i==n){for(int j=0;j<n;j++){cout<<"*";}for(int j=0;j<n;j++){cout<<" ";}for(int j=0;j<n;j++){cout<<"*";}}else{for(int j=0;j<tmp;j++){cout<<"*";}}cout<<endl;tmp+=4;l-=2;}ans=n>>1;for(int i=0;i<ans;i++){for(int j=0;j<now;j++)cout<<"*";cout<<endl;}tmp-=4;l+=2;for(int i=0;i<n*4;i+=4){for(int j=0;j<l;j++){cout<<" ";}for(int j=0;j<tmp;j++){cout<<"*";}cout<<endl;tmp-=4;l+=2;}}return 0;
}

家里有矿

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

作为ACM队里的女装大佬,小P家里非常有钱,不仅有矿,还有好多个,这不小P正在为矿场的事烦恼,事情是这样的:小P想给矿场围着围栏,可他不知道需要多长的围栏才能把所有的矿场围在一起(注意,围栏为平行于坐标轴的正方形)。如果你能帮他解决这个问题,他会送你一件女装作为感谢。

Input

第一行为 N ,表示矿场数目

下面为 N 行 每行两个数字 xi,yi,表示第ii行表示第 i 个矿场的坐标

2 <= N <= 100

0 ≤ xi, yi ≤100000

Output

围栏所需最小长度 。

Sample Input

2
0 0
2 2

Sample Output

8

Hint

Source

7989

【分析】:找出行最小,最大,列最小,最大,差值大为边长;

#include <iostream>
#include <bits/stdc++.h>
using namespace std;int main()
{int zmin,ymax,smax,xmin;int n;int l,r;while(cin>>n){zmin=100000;xmin=100000;ymax=0;smax=0;for(int i=0;i<n;i++){cin>>l>>r;zmin=min(zmin,l);xmin=min(xmin,r);ymax=max(ymax,l);smax=max(smax,r);}int ans;if(smax-xmin>ymax-zmin){ans=smax-xmin;}else{ans=ymax-zmin;}cout<<ans*4<<endl;}return 0;
}

3*8=24?

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

今天 Xh 和 ldq 讨论题目时,提到了如何算 24 的问题,众所周知,3*8=24,于是 Xh 就和 ldq 玩了一个游戏,ldq 说一个数字 n,代表有 n 个 3,Xh 说一个数字 m,代表有 m 个 8,如果这 n 个 3 和 m 个 8 能通过加减乘除四则运算计算出 24 这个数字,那么 Xh 获胜,否则 ldq 获胜。

Input

输入数据有多组。对于每组数据,输入两个非负整数 n 和 m (0 <= n, m <= 10),其中 n 表示 3 的个数,m 表示 8 的个数。

Output

对于每组数据,如果能用 n 个 3 和 m 个 8 计算出 24,输出一行 "Xh is the winner!",否则输出一行 "ldq is the winner!"(输出不包括引号)。

Sample Input

1 1
3 0
0 3

Sample Output

Xh is the winner!
ldq is the winner!
Xh is the winner!

Hint

Source

玄黄

【分析】:如果n个3,m个8可以的话,那么n+2个3,m个8,或者n个3,m+2个8也可以;

第一,只有 3,

一个两个三个显然不行;

4个  =>  3*3*3-3=24;

5个  =>((3+3)*3++3+3)=24;

第二,只有8

1个2个4个不行;

3个  :8+8+8=24;

5个  8+8+8+8-8=24;

6个  8*8/(8+8)*8-8=24;

第三

一个8一个3可以

两个8一个3,两个3 一个8,不行

两个3,两个8:8/(3-8/3)=24;

我说明白了吗?

#include <iostream>
#include <bits/stdc++.h>
using namespace std;int main()
{int n,m;while(cin>>n>>m){if(n+m>=4){if(n==0&&m==4){cout<<"ldq is the winner!"<<endl;}else{cout<<"Xh is the winner!"<<endl;}}else{if(n==1&&m==1||m==3&&n==0){cout<<"Xh is the winner!"<<endl;}else{cout<<"ldq is the winner!"<<endl;}}}return 0;
}

第十届山东理工大学ACM网络编程擂台赛 重现相关推荐

  1. F 阎小罗的Minimax (第十届山东理工大学ACM网络编程擂台赛 正式赛 )

    题解:by Mercury_Lc 阎小罗的矩阵给的n和m都不超过300,枚举一下所有情况就可以了,用前缀和来储存.数组a[x][y]代表前x行前y列的和是多少,那么枚举每一种切割的方式就可以.注意一下 ...

  2. 第九届山东理工大学ACM网络编程擂台赛 热身赛 sdut4087 ldq's Sons

    题目链接 Time Limit: 1000MS Memory Limit: 65536KB Problem Description Xuanhuang: Wow, three cute boys. A ...

  3. 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4074博弈 - ldq的吃瓜比赛

    题目链接 ldq的吃瓜比赛 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description ldq 和 他的 ...

  4. 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4075GCD - ldq的黑心啤酒厂

    题目链接 ldq's brewery Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description LDQ ...

  5. 第十四章:Qt网络编程

    回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...

  6. 第十届蓝桥杯c语言试题,第十届蓝桥杯真题编程题1-7解析(高级组).pdf

    scratch 少儿编程第十届蓝桥杯真题 7 大家好 ~今天我们来讲解 scratch 蓝桥杯第十届编程大题的第七道题. 同样,这道题也是非常有难度的一道题.一起来看一下吧 解析: 女孩的程序 1.在 ...

  7. 第十四章:Java_网络编程

    网络编程概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节 ...

  8. 【linux高级程序设计】(第十五章)UDP网络编程应用 2

    UDP广播通信 单播:一对一,TCP和UDP均可完成 广播:只能UDP完成.广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口.路由器默认不转发任何广播数据包.故广播在局域网 ...

  9. 山东理工大学ACM平台题答案关于C语言 2098 识别浮点常量问题

    识别浮点常量问题 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 编译器在对程序进行编译之前,首先要进行语法分析.通常,程序被分解 ...

  10. 山东理工大学ACM平台题答案 2561 九九乘法表

    九九乘法表 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 九九乘法表是数学学习的基础,今天我们就来看看乘法表的相关问题.< ...

最新文章

  1. webElement.text()获取到内容为空
  2. ubuntu下查看IP Gateway DNS信息
  3. centos telnet 安装 配置
  4. 【luogu P2919 [USACO08NOV]守护农场Guarding the Farm】 题解
  5. 网易云信七鱼被推选为“2016企业创服联盟合作伙伴”
  6. 斐波那契数列 C++ 实现代码
  7. ?php $postsperpage=9;?,php – 如何在自定义WP_Query Ajax上实现分页
  8. javascript简易缓动插件
  9. linux然后防止ip欺骗,linux – 如何在iptables中防止ip欺骗?
  10. linux启动exe程序命令行参数,Linux可执行文件的启动及命令行参数和环境变量的传递...
  11. pycaret 2 1新增功能
  12. 怀旧服服务器怎么调整显卡性能,魔兽世界怀旧服排队显卡问题太高怎么回事 显卡温度高解决办法...
  13. BaseMultiItemQuickAdapter 条目position获取
  14. 英语基础太差,到底能不能学好编程?
  15. RGB 色度空间转换
  16. 安全帽识别系统的应用鹰眸视频分析
  17. 20211219 小信号建模——状态空间法
  18. iOS app已经上架可供销售,但是在AppStore上搜不到的解决办法
  19. html旅游门票源代码,票务网站整套静态模板 HTML模板
  20. SAP Other 技巧--通过报错信息找到程序对应的事务代码

热门文章

  1. Python for s60[1_pys60简介]
  2. Android日历阴阳历转换的实现(包括日期选择器)
  3. Matlab故障树的最小割集的求解
  4. 移动接入身份认证技术
  5. RGB-D相机原理与选型
  6. 心上莲花:佛教简介(上)
  7. 小程序微信支付errcode:40163问题
  8. 《Revisiting Pre-trained Models for Chinese Natural Language Processing》(MacBERT)阅读记录
  9. android mediaplayer单曲循环播放,android mediaplayer永远在ICS上循环播放
  10. xul转换html,ExportHTMLFolderMod.uc.xul