郑州轻工业学院有一个大赛,把几个有趣的题目分享一下。下面是题目连接,喜欢了就点点。。。

斗破苍穹

礼上往来

统计人数

神の数

炉石传说

Mathematics and Geometry

马拉松后记

斗破苍穹

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 205  Solved: 46
SubmitStatusWeb Board

Description

有一天, 我们帅气的LC来到加玛帝国. 有时候, 缘分就是这么奇怪, LC和加玛帝国的公主一见钟情, 奈何公主的父王不同意, 因为他觉得LC除了长得特别帅之外, 并没有一技之长.

LC对此呵呵一笑, 他说, 我可是创新实验室走出来的学生, 我会的技能可多着呢, 先说个简单的吧, 只要你给我任意一串字符串, 我就能立马算出这串字符串当中最长回文串的长度. 国王很是吃惊, 说要考一考LC.

于是国王想让你帮忙写一个程序, 用来比对LC的答案, 快来帮帮国王吧!

Input

第一行输入一个T(T <= 50), 表示一共有T组测试数据. 接下来T行, 每行为一组由小写字母组成, 长度不超过10^5的字符串.

Output

每行一个整数X, 表示该组字符串中所包含的最长回文长度.

Sample Input

3 aba abc aabaa

Sample Output

3 1 5
题解:manacher算法:
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#define mem(x,y) memset(x,y,sizeof(x))
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const int MAXN = ;
int p[MAXN];
char str[MAXN],s[MAXN];
int Manacher(char *s,int len){
mem(p,);
p[] = p[] = ;
int id = ,mx = ;
int ans=;
for(int i = ;i < len; i++){
if(mx>i)
p[i]=min(p[*id-i],mx-i);
else
p[i]=;
while(s[i-p[i]] == s[i+p[i]])
p[i]++;
if(p[i] + i > mx)mx = p[i] + i,id = i;
ans = max(ans,p[i]);
}
return ans - ;
}
int main(){
int T;
scanf("%d", &T);
while(T--){
scanf("%s",str);
int len = strlen(str);
s[]='@';
for(int i = ; i < len; i++){
s[*i + ] = '#';
s[*i + ] = str[i];
}
s[ * len + ] = '#';
printf("%d\n", Manacher(s, *len + ));
}
return ;
}
/**************************************************************
Problem: 1861
User: handsomecui
Language: C++
Result: Accepted
Time:286 ms
Memory:2500 kb
****************************************************************/

礼上往来

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 225  Solved: 69
SubmitStatusWeb Board

Description

每当节日来临,女友众多的xxx总是能从全国各地的女友那里收到各种礼物。

有礼物收到当然值得高兴,但回礼确是件麻烦的事!

无论多麻烦,总不好意思收礼而不回礼,那也不是xxx的风格。

  

现在,即爱面子又抠门的xxx想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了!

  

假设xxx的n个女友每人送他一个礼物(每个人送的礼物都不相同),现在他需要合理安排,再回送每个女友一份礼物,重点是,回送的礼物不能是这个女友之前送他的那个礼物,不然,xxx可就摊上事了,摊上大事了......

  

现在,xxx想知道总共有多少种满足条件的回送礼物方案呢?

Input

输入数据第一行是个正整数T,表示总共有T组测试数据(T <= 100); 每组数据包含一个正整数n,表示叽叽哥的女友个数为n( 1 <= n <= 100 )。

Output

请输出可能的方案数,因为方案数可能比较大,请将结果对10^9 + 7 取模后再输出。 每组输出占一行。

Sample Input

3 1 2 4

Sample Output

0 1 9
题解:错排公式;
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + ;
typedef long long LL;
LL f[];
int main(){
int T, n;
f[] = ;
f[] = ;
f[] = ;
f[] = ;
for(int i = ; i <= ; i++){
f[i] = (i - ) * f[i - ] % MOD + (i - ) * f[i - ] % MOD;
f[i] %= MOD;
}
scanf("%d",&T);
while(T--){
scanf("%d", &n);
printf("%lld\n", f[n]);
}
return ;
} /**************************************************************
Problem: 1867
User: handsomecui
Language: C++
Result: Accepted
Time:0 ms
Memory:1328 kb
****************************************************************/

统计人数

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 303  Solved: 77
SubmitStatusWeb Board

Description

HS想要统计镇上总共有多少人,但是他并不想一个一个的去数有多少个人,他想了一个其他的方法,他在镇上找了N个人,然后问每一个人“你知道 除你之外 镇上和你姓氏相同的人有多少个吗?”,现在HS想要知道,镇上最少有多少人?我们保证HS不会问同一个人两次。

Input

第一行一个正整数T(T <= 100),表示T组测试样例; 每组样例有两行, 第一行一个正整数N(N <= 50),表示被问到的人数, 第二行N个数(在0 ~ 1000000之间),表示每个人的回答。

Output

每行输出一个正整数,表示镇上最少人数。

Sample Input

2 4 1 1 2 2 1 0

Sample Output

Case 1: 5 Case 2: 1
题解:其实就是相同数字的个数不能大于x+1;模拟下就好了;
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
int a[];
int main(){
int T, N, kase = ;
scanf("%d", &T);
while(T--){
scanf("%d", &N);
for(int i = ; i < N; i++){
scanf("%d", a + i);
}
sort(a, a + N);
int cnt = , ans = a[] + ;
for(int i = ; i < N; i++){
if(a[i] == a[i - ]){
cnt++;
if(cnt > a[i] + ){
cnt = ;
ans += a[i] + ; }
}
else{
cnt = ;
ans += a[i] + ;
}
}
printf("Case %d: %d\n", ++kase, ans);
}
return ;
}
/**************************************************************
Problem: 1865
User: handsomecui
Language: C++
Result: Accepted
Time:0 ms
Memory:1328 kb
****************************************************************/

神の数

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 204  Solved: 36
SubmitStatusWeb Board

Description

有一天,有一个小朋友送给萌萌的韬韬一本书,书的名字叫做《数》,韬韬对于数字有着无比的狂热,一拿到这本书就沉迷于数的世界无法自拔,不久韬韬看到一个数字被称为神の数字——36,觉得很好奇,从未听说过,又继续往下看,发现原来36好厉害呢,有好多神奇的性质。

36 = (1 + 3 + 5 +7) + (2 + 4 + 6 + 8) 是前4个奇数与前4个偶数的和

36 = 1^3+2^3+3^3 还是前3个自然数的立方和

《三十六计》是一个神奇的东西,可以解决好多神奇的问题,是杰出的军事家孙子大大写就的一篇传世巨擘。

人体能承受的安全电压是36V,好巧耶。

… …

韬韬看到了这么多36的神奇性质,想到了一个问题,给定区间范围[l, r]内有多少跟36相关的数呢,韬韬在想什么样的数是和36相关的呢,换句话说,韬韬在思考如何给“36相关的数”一个定义。

一个“36相关的数”,首先它的十进制表示中必须得有36吧,嘛,相关度还得够,一定不能有单个的3或者6,单个的3或6不是真的36呀。36036是一个“36相关的数”,而36633不是呢。好像漏掉了什么东西,“这还不够”,韬韬说道。

一个“36相关的数”,它必须能被36整除,这才是真的和36相关嘛,韬韬发现在[1, 36]区间中只有36这个数满足这些要求。韬韬想知道第二个这样的数是多少呢,很遗憾,貌似100以内找不到这样的数了呢。

韬韬非常沮丧,他热切地想知道区间[l, r]中“36相关的数”有多少。好像又漏掉了点什么呢,韬韬还想知道[l, r]区间中这些36相关数中有多少“36”存在,毕竟是36嘛。

既然韬韬现在很沮丧,一点算数的心情都没有了,但是他很想知道上面提到的这些数呢,亲爱的小伙伴你可以帮帮他嘛?

Input

第一行是测试样例数 t (1 <= t <= 10^5) 接下来t行每行包括两个正整数 l, r (1  <=  l <=  r  <=  10^5).

Output

输出包括t行,每行对应一次询问,每行包括2个数 — 区间[l, r]中36相关数的数量, 36相关数中“36”的数量。

Sample Input

2 1 36 1 3636

Sample Output

1 1 8 9

HINT

[1, 3636]中36相关数有36, 360, 936,1368, 1836, 2736, 3600, 3636这8个, “36”出现了9次

题解:
这个水题。。。木啥说的;
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5 + ;
int d1[MAXN],d2[MAXN];
void find(int x, int &n1, int &n2){
n1 = ; n2 = ;
// int p = x;
while(x){
if(x % == ){
n1++;
n2++;
x /= ;
continue;
}
else if(x % == || x % == ){
n1 = ;n2 = ;
return;
}
x /= ;
}
if(n1 > )n1 = ;
//if(n1)printf("%d\n",p);
}
int main(){
int T, l, r;
memset(d1,,sizeof(d1));
memset(d2,,sizeof(d2));
for(int i = ;i < MAXN; i++){
int n1 = ,n2 = ;
if(i % == )find(i,n1,n2);
d1[i] = d1[i - ] + n1;
d2[i] = d2[i - ] + n2;
}
scanf("%d",&T);
while(T--){
scanf("%d%d",&l,&r);
printf("%d %d\n",d1[r] - d1[l - ], d2[r] - d2[l - ]);
}
return ;
}
/**************************************************************
Problem: 1863
User: handsomecui
Language: C++
Result: Accepted
Time:99 ms
Memory:2108 kb
****************************************************************/

炉石传说

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 228  Solved: 71
SubmitStatusWeb Board

Description

最近韬韬周围的小伙伴们都在玩炉石传说, 感觉好厉害的样子, 可是韬韬早都不玩游戏了呢, 自从入坑ACM之后。“不能没有我的蜡烛”, 韬韬天天都能听到这样的句子 - -

听说炉石传说开放了新冒险模式——探险者协会!开放了一种新的技能:“发现”!

它的效果是提供三张卡牌(随从卡 / 法术卡), 你可以获得任意一张, 并丢掉另外两张。

现在你可以使用 n 次“发现”技能, 当然到最后你会得到 n 张卡牌, 如今已经给出每次使用技能后可以选择的三张卡的属性, 韬韬很想知道能否获得至少 a 张随从卡以及 b 张法术卡。

亲爱的小伙伴你可以帮帮韬韬嘛?

Input

第一行是测试样例数t (1 <= t <= 1000) 每组输入数据的第一行是三个正整数 n, a, b含义见上述 数据范围1 <= n <= 1000 , 1 <= a, b <= n 接下来 n 行, 每行三个数(0或1), 0代表随从卡, 1代表法术卡

Output

对于每组数据, 输出一行 YES 或者 NO

Sample Input

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

Sample Output

NO YES

HINT

对于第一组样例, n=1,a=1, b=0, 使用1次“发现”技能, 至少获得1张随从卡.由于提供的3张都是法术卡(3个1), 所以不能达到要求

对于第二组样例, n=3,a=1, b=2, 使用3次“发现”技能, 至少获得1张随从卡, 2张法术卡. 那么只要在第一次和第三次选法术卡, 第二次选随从卡即可

题解:又是水题。。。
代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
int main(){
int T, n, a, b;
scanf("%d",&T);
while(T--){
int na = ,nb = ,nc = ;
scanf("%d%d%d",&n, &a, &b);
int x,y,z;
for(int i = ; i < n; i++){
scanf("%d%d%d",&x,&y,&z);
if(x == y && x == z && x == )
na++;
else if(x == y && x == z && x == )
nb++;
else
nc++;
}
if(na < a){
nc -= (a - na);
}
if(nb < b){
nc -= (b - nb);
}
if(nc < )puts("NO");
else puts("YES");
}
return ;
}
/**************************************************************
Problem: 1864
User: handsomecui
Language: C++
Result: Accepted
Time:313 ms
Memory:1328 kb
****************************************************************/

Mathematics and Geometry

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 193  Solved: 50
SubmitStatusWeb Board

Description

给你一个n,求方程 2x + y + 2z = n 解的个数,其中x, y, z, n 都是非负整数

Input

第一行一个整数T(T<=1000),表示测试数据组数,接着T行,每行一个整数n(n<=1000000)

Output

每组数据输出一行Case #x: ans 其中x表示样例组数,ans表示解的个数

Sample Input

3 1 2 3

Sample Output

Case #1: 1 Case #2: 3 Case #3: 3
题解:规律挺好找,但是会超时,所以要进一步推规律,注意奇数偶数有区别;
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<map>
#include<stack>
#include<algorithm>
#include<iostream>
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define ll long long
#define IN __int64
#define N 1010
#define M 1000000007
using namespace std;
const int MAXN = ;
int main()
{
int T=,t,n,m,i,j,x,y;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(n&)
j=;
else
j=;
ll sum=;
if(n&){
ll k = (n - j) / + ;
// printf("k=%lld\n",k); sum = (k * n- k * k )/;
sum += k;
printf("Case #%d: %lld\n",T++,sum );
}
else{
ll k = (n - j) / + ;
// printf("k=%lld\n",k); sum = (k * n - k*(k-))/;
sum += k;
printf("Case #%d: %lld\n",T++,sum);
}
}
return ;
}
/**************************************************************
Problem: 1869
User: handsomecui
Language: C++
Result: Accepted
Time:0 ms
Memory:1328 kb
****************************************************************/

马拉松后记

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 54  Solved: 21
SubmitStatusWeb Board

Description

毛毛雨学姐跑完了半程马拉松,接下来决定去参加山地越野赛了,主办方听说毛毛雨学姐是一位ACMer,就想让她来帮忙解决一下
赛场问题:已知在山地越野场地有N座土坡(1<=N<=1000),每座土坡都有一个在0到100之间的整数海拔,考虑到参赛选手
大多都是业余选手,所以主办方决定将土坡的高度差限定在17米(即最高和最低相差不超过17米),然而想改变一座土坡x米需
要花费x^2元(改变只能是整数x米),请你们帮助毛毛雨学姐来计算出主办方最少的支出。

Input

第一行:一个整数N
第二行至第N+1行:每座土坡的高度
多组测试样例

Output

主办方的最少支出

Sample Input

5 4 20 1 21 24

Sample Output

18

HINT

 

Source

题解:暴力就行。。。注意是每个数字的暴力。。。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN = ;
typedef long long LL;
int num[MAXN]; int main(){
int N;
while(~scanf("%d",&N)){
for(int i = ; i < N; i++){
scanf("%d",num + i);
}
sort(num, num + N);
LL ans = (LL)0x3f3f3f3f3f3f3f3f;
for(int i = num[]; i < num[N - ]; i++){
LL temp = ;
for(int j = ; j < N; j++){
if(num[j] < i){
temp += (i - num[j]) * (i - num[j]);
}
else if(num[j] > i + ){
temp += (num[j] - i - ) * (num[j] - i -);
}
}
ans = min(ans, temp);
}
printf("%lld\n",ans);
}
return ;
}
/**************************************************************
Problem: 1870
User: handsomecui
Language: C++
Result: Accepted
Time:6 ms
Memory:1332 kb
****************************************************************/

第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛的更多相关文章

  1. “玲珑杯”第七届郑州轻工业学院ACM程序设计大赛 ------- D:社交网络

    题目链接: http://acm.zzuli.edu.cn/problem.php?cid=1099&pid=3 题目大意: 国语题目,题意显而易见, 解题思路: 只需要对每一个节点进行假设, ...

  2. Contest - 第10届“新秀杯”ACM程序设计大赛网络预选赛 赛后信息(晋级名单)

    经过比赛结果以及综合评定,以下42名同学暂定出现.下为出现名单(打*为 友情参赛 或为 有重大作弊嫌疑的选手). 在即日24时之前,若有异议,仍可申诉,申诉邮箱:desgard_duan@foxmai ...

  3. 西南科技大学第十一届ACM程序设计大赛发言稿

    西南科技大学第十一届ACM程序设计大赛发言稿 各位老师.志愿者及参赛选手: 大家好,我是来自计科学院卓软1301的哈特13,很荣幸今天能站在这里代表参赛选手发言. 回想起来,我参加ACM比赛已经快两年 ...

  4. 第13届 广东工业大学ACM程序设计大赛 C题 平分游戏

    第13届 广东工业大学ACM程序设计大赛 C题 平分游戏 题目描述 转眼间又过了一年,又有一届的师兄师姐要毕业了. ​ 有些师兄师姐就去了景驰科技实习. 在景驰,员工是他们最宝贵的财富.只有把每一个人 ...

  5. nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

    题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...

  6. nyoj 1239 引水project (河南省第八届acm程序设计大赛)

    题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="col ...

  7. nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)

    题目1237 pid=1237" style="color:rgb(55,119,188)">题目信息 执行结果 本题排行 讨论区 最大岛屿 时间限制:1000 m ...

  8. “玲珑杯”郑州轻工业学院第八届ACM程序设计大赛暨河南高校邀请赛-正式赛(总结)

    这次轻院校赛,我们去了五个队,怀着打酱油的心态早早爬起来坐上校车出发了,由于昨晚室友打游戏,以及看视频大笑...没睡好,快1点才睡着,感觉特别困,车上没地方,睡不着,就在车上闭目养神,由于在新校区,不 ...

  9. 河南省第八届ACM程序设计大赛

    A:挑战密室 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...

随机推荐

  1. linux下部署svn服务器

    系统Linux debian 2.6.32-5-686 先安装svn工具:apt-get install subversion,耐心等待安装完成.安装完成后svn客户端.服务器都有了. 接者建立svn ...

  2. jquery.validate详解一

    jQuery校验 官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库 <script src=&q ...

  3. 利用PHP/MYSQL实现的简易微型博客(转)

    数据库:ly_php_base 表:ly_micro_blog(仅仅有一个表)字段:id,title,date,content,hits 文件: 文件 描述 default.php 默认主页.显示博文 ...

  4. FlexSlider是一个非常出色的jQuery滑动切换插件

    FlexSlider是一个非常出色的jQuery滑动切换插件,它支持所有主流浏览器,并有淡入淡出效果.适合所有初级和高级网页设计师使用.不过很多人都只是使用默认的参数,今天来说说具体的参数来给大家看看 ...

  5. 无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集

    在做winform程序发布时遇到了这个问题,在我的机子上是可以正常运行的,但到别人的机子上就出现了这个错误.为此问题头疼了一上午终于搞定! 遇到这个问题一定是配置环境的原因, 1.你可以在程序  发布 ...

  6. UILable文本常见属性说明

    1.text:设置标签显示文本. 2.attributedText:设置标签属性文本. NSString *text = @"first"; NSMutableAttributed ...

  7. 火狐浏览器,hostadmin hosts文件访问权限不足

    开始->附件->以管理员身份运行. cacls %windir%\system32\drivers\etc\hosts /E /G Users:W

  8. Velocity浅析及与Jsp、Freemarker对比

    转载自:http://www.cnblogs.com/petermsdn/archive/2011/05/06/2039178.html Velocity 是一个基于java 的模板引擎(templa ...

  9. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  10. HTML5简单入门系列(三)

    前言 本篇介绍HTML5支持的Web存储(Web Storage)和HTML 5 应用程序缓存. 客户端存储数据介绍 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没 ...