问题 A: 马克的字符串

时间限制: 1 Sec  内存限制: 256 MB

题目描述

定义一个字符串满足'MK'性质当且仅当它修改其中不超过k个字符后是回文串。给你一个字符串,问它有多少非空子串满足'MK'性质。

输入

输入的第一行包含一个字符串s

输入的第二行包含一个整数k

输出

输出的第一行包含一个整数,为满足'MK'性质的字串数量。

样例输入

Aab
1

样例输出

6

提示

【样例说明】

每一个字串都是回文串或修改一个字母后是回文串

【数据规模与约定】

对于30%的数据:k=0

对于100% 的数据:字符串长度 1<=l<=100,0<=k<=50

题解:n^3暴力,开始跑了个manacher,结果WA了,至今迷

#include<bits/stdc++.h>
using namespace std;
char str[208];
int k;
bool check(int i, int j){int cnt = 0;while(i <= j){if(str[i]  != str[j])cnt ++;if(cnt > k)return 0;i++, j--;}return 1;
}
int main(){scanf("%s", str);scanf("%d", &k);int ans = 0;int len = strlen(str); for(int i = 0; i < len; i++)for(int j = i; j < len; j++)ans += check(i, j); printf("%d",ans);
}

View Code

问题 B: 马克家的书

时间限制: 1 Sec  内存限制: 256 MB

题目描述

马克家收藏了一套书,这套书叫《OIER故事集》,这套书有n本,每本书有一个编号,从1号到n号。

马克把这些书按照编号从小到大,从上往下摞成一摞。马克对这套书很珍视,不允许其他人动。

有一天一格到马克家玩,马克因为和妹子约会,就让一格自己呆在家里。一格因为对这套书非常好奇,偷偷的看了一下,结果发现书中竟然有ljs和commonc的故事。一格看的入了迷,结果把一摞书的顺序弄乱了。

眼看着马克就要回来了,一格需要把书恢复到原状,由于每本书都比较重,所以一格能做的操作是把一本书从书堆中抽出来,然后把这本书放到书堆的顶部。

给你打乱的书的顺序,你能帮一格算算最少需要几次上述操作,才能恢复书的顺序。

输入

第一行包含一格正整数T(T<=10),表示数据组数。

对于每组数据,第一行为一格整数n。

接下来的一行有n个用空格分开的正整数,表示一格打乱后的书的顺序,从上到下。

输出

对于每组数据,输出一行一个整数,表示一格最少经过几次操作才能恢复书的顺序。

样例输入

2
4
4 1 2 3
5
1 2 3 4 5

样例输出

3
0

提示

【样例说明】

样对于第一组数据,我们先把3号书放在最上面,接着操作2号书,最后操作1号书,(4,1,2,3)—(3,4,1,2)—(2,3,4,1)—(1,2,3,4)这样就有序了。

对于第二组数据,已经有序就不需要挪了。

【数据规模与约定】

对于 50% 的数据满足 n<=10

对于 80%的数据满足 n<=1000

对于 100% 的数据满足 n<=100000

题解:智力题,从后往前扫,递减序列,其他的最少移动一次

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int a[maxn];
int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &a[i]);int p = n, cnt = 0;for(int i = n; i >= 1; i--)if(a[i] == p)p--, cnt++;printf("%d\n",n - cnt);}}

View Code

问题 C: 马克的幸运数

时间限制: 1 Sec  内存限制: 256 MB

题目描述

马克和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运数为这k张卡牌上数的异或和。马克想知道所有选取方案的幸运数之和除以998244353的余数。

输入

第一行有两个整数n和k。

第二行有n个整数,表示序列A。

输出

一行,一个整数,表示答案。

样例输入

3 2
1 2 3

样例输出

6

提示

【样例说明】

样例1幸运值之和为(1 ⊕ 2) + (1 ⊕ 3) + (2 ⊕ 3) = 6

【样例输入2】

10 5

123 456 789 987 654 321 101 202 303 404

【样例输出2】

130776

【数据规模与约定】

对于30%的数据满足,1<=n<=20

对于另30%的数据满足,1<=n<=100,0<Ai<=1024

对于80%的数据满足,1<=n<=2000

对于100%的数据满足,1<=n<=100000,0<Ai<2^31,1<=k<=n

题解:亦或和拆位,统计每位有1的个数,只有选奇数个才有贡献,然后方枚举选1多少个,选0多少个,乘法原理,注意特判不要超过k

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
#define ll long long
ll a[maxn], fac[maxn], infac[maxn];
const ll p = 998244353;
ll exgcd(ll a, ll b, ll &x, ll &y){if(b == 0){x = 1; y = 0; return a;}ll x0, y0;ll d = exgcd(b, a % b, x0, y0);x = y0;y = x0 - (a / b ) * y0; return d;
}
ll inv(ll a){ll x, y;exgcd(a, p, x, y);return (x % p + p) % p;
}
int main(){int n, k;fac[0] = 1;infac[0]= 1;ll ans = 0;scanf("%d%d", &n, &k);for(int i = 1; i <= n; i++){scanf("%lld", &a[i]);fac[i] = fac[i-1] * i % p;infac[i] = inv(fac[i]);}long long an=1;for(int i = 0; i <= 31; i++){int sum = 0;for(int j = 1; j <= n; j++)if(a[j] & (1<<i) )sum++;  int siz = min(k, sum);for(int j = 1; j <= siz; j+=2)if (k - j <= n-sum )ans = ( ans +  ( (1ll<<i) % p * (fac[sum] * infac[j] % p * infac[sum-j] % p ) % p * (fac[n - sum] * infac[n - sum - k + j] % p * infac[k - j] % p) ) )% p;}printf("%lld\n", ans);
}

View Code

问题 D: 马克的达人秀

时间限制: 1 Sec  内存限制: 256 MB

题目描述

马克要带着他的N个oier,方便起见编号为1…N,到oi展览会上去,参加每年的达人秀!他的第i个oier体重为wi,才艺水平为ti,两者都是整数。在到达时,马克就被今年达人秀的新规则吓到了:

(一)参加比赛的一组oier必须总重量至少为W(这是为了确保是强大的队伍在比赛,而不仅是强大的某个oier),并且

(二)总才艺值与总重量的比值最大的一组获得胜利。

马克注意到他的所有oier的总重量不小于W,所以他能够派出符合规则(一)的队伍。帮助他确定这样的队伍中能够达到的最佳的才艺与重量的比值。

输入

输入的第一行包含N和W。下面N行,每行用两个整数wi和ti描述了一个oier。

输出

请求出马克用一组总重量最少为W的oier最大可能达到的总才艺值与总重量的比值。

如果你的答案是A,输出1000*A向下取整的值,以使得输出是整数

(当问题中的数不是一个整数的时候,向下取整操作在向下舍入到整数的时候去除所有小数部分)。

样例输入

3 15
20 21
10 11
30 31

样例输出

1066

提示

在这个例子中,总体来看最佳的才艺与重量的比值应该是仅用一个才艺值为11、重量为10的oier,但是由于我们需要至少15单位的重量,最优解最终为使用这头奶牛加上才艺值为21、重量为20的oier。这样的话才艺与重量的比值为(11+21)/(10+20)=32/30=1.0666666…,乘以1000向下取整之后得到1066。

【数据规模与约定】

对于20%的数据满足,1<=n<=20

对于40%的数据满足,1<=n<=50,输出答案保证小于23333

对于100%的数据满足,1≤N≤250,1≤W≤1000,1≤wi≤10^6,1≤ti≤10^3

保证数据有梯度

题解:dp,01背包, f[i][j]表示达到才艺值为i最少花的体力, 答案就在dp[0~sum][w] (w >W)中

#include<bits/stdc++.h>
using namespace std;
const int maxn = 300, maxm = 300005, inf = 1000000008;
int N, W;
const double eps = 1e-6;
struct cow{int t, w; double val;
}c[maxn];
int dp[2][maxm];
int main(){scanf("%d%d", &N, &W);int sum = 0; double ans = 0;for(int i = 1; i <= N; i++)scanf("%d%d", &c[i].w, &c[i].t), sum += c[i].t;int u = 0;for(int i = 1; i <= sum; i++) dp[u][i] = inf;dp[0][0] = 0;for(int i = 1; i <= N; i++){u ^= 1;for(int j = 0; j <= sum; j++)dp[u][j] = dp[u^1][j];for(int j = c[i].t; j <= sum; j++)dp[u][j] = min(dp[u][j], dp[u^1][j - c[i].t] + c[i].w);/*for(int j = 0; j <= sum; j++)if(dp[u][j] != inf){printf("i = %d j = %d dp = %d\n",i,j,dp[u][j]);}*/}for(int i = 0; i <= sum; i++)if(dp[u][i] >= W) ans = max(ans, 1.0 * i / dp[u][i]);printf("%d\n", (int) floor(ans*1000));
}

View Code

第一天考崩了,差距巨大,后面怎么也追不上去,奠定我在联训悲惨的基调

转载于:https://www.cnblogs.com/EdSheeran/p/9166158.html

2018沈阳集训day1相关推荐

  1. 2018暑假集训Day1

    这几天的训练对我来说真是前所未有的高强度. 然后,几乎都是垫底吧.(被列入危险名单 觉得今年的普及一等很悬,很悬.. 今天值得写写blog的T2:(其实对大部分人来说很水 一天狼需要从二维平面上的(0 ...

  2. ACM-ICPC 2018 沈阳赛区网络预赛 Spare Tire(容斥+公式推)

    A sequence of integer \lbrace a_n \rbrace{an​} can be expressed as: \displaystyle a_n = \left\{ \beg ...

  3. ACM-ICPC 2018 沈阳赛区网络预赛(E F G J K)

    ACM-ICPC 2018 沈阳赛区网络预赛(E F G J K) 复杂的模拟题懒癌患者表示写不动 D. Made In Heaven (K短路) 略 int head[MAXN]; int cure ...

  4. 2018沈阳网络预选赛 kachang

    Ka Chang 问答问题反馈 只看题面 19.64% 1000ms 131072K Given a rooted tree ( the root is node 11) of NN nodes. I ...

  5. 寒假2018培训:DAY1

    全新一刻: 经过8小时的车程,我终于来到了福州,因为刚还奉上了自2002年来的第一场雪,气温就跟浙江差不多了,很舒服--前水: 第一天上课: 上午,我们老师讲了枚举和深搜,虽然我都有基础,但依旧有很多 ...

  6. 【总结】2019.8.19南海中学暑假集训Day1

    今天是来南中集训的第一天,虽然以往都来集训过几次,可这次不太一样,这次是以一名新高一同学的身份正式加入到南中信息学的队伍中,和各位大佬一起学习,挺好! 又是一个人住一间宿舍,大晚上的外面有只青蛙在不停 ...

  7. 雅礼集训 Day1 T1 养花

    养花 题目描述 小\(C\)在家种了\(n\)盆花,每盆花有一个艳丽度\(a_i\). 在接下来的\(m\)天中,每天早晨他会从一段编号连续的花中选择一盆摆放在客厅, 并在晚上放回. 同时每天有特定的 ...

  8. ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph(有源上下界最大流 模板)

    关于有源上下界最大流: https://blog.csdn.net/regina8023/article/details/45815023 #include<cstdio> #includ ...

  9. 【2018北京集训(六)】Lcm

    Portal --> 出错啦qwq(好吧其实是没有) Description 给定两个正整数\(n,k\),选择一些互不相同的正整数,满足这些数的最小公倍数恰好为\(n\),并且这些数的和为\( ...

最新文章

  1. 网络国际治理系列 | WTO电子商务谈判合并文本数据跨境流动部分
  2. 第一次参加学校的ACM比赛所学及感想
  3. SwipeRefreshLayout里面需要注意的Api
  4. 程序员常见的坏习惯,你躺枪了吗?
  5. C语言字符输出格式化
  6. oracle数据管理员常用词语,总结Oracle数据库管理员的常用命令
  7. 修改本地数据库root权限密码
  8. 并发控制技术手段之时间戳(二)
  9. 置换选择排序算法详解(C语言实现)
  10. 手机游戏连接计算机屏幕,手机怎么投屏到电脑?简单几个步骤就能实现,看电影玩游戏爽爆了...
  11. jmeter的吞吐量控制器
  12. 【预测模型-ELM分类】基于鲸鱼算法优化核极限学习机实现数据分类附matlab代码
  13. RK3288开发板PopMetal上的GPIO驱动实例
  14. word里添加加行号可编辑的代码方式,超级方便简单
  15. Ubuntu上遇到Failed to construct device ‘usb-ehci‘ instance #0
  16. PowerQuery的数据获取界面(Excel及PowerBI)的异同-PowerQuery系列文章之二
  17. 广州番禺翠湖山庄小区规划图
  18. P3964 松鼠聚会(切比雪夫距离模板)
  19. c#file过滤多种格式_C# 文件过滤器filter
  20. zabbix5.0使用问题解决步骤 2021-3-19

热门文章

  1. 不平衡样本的分类实践---Credit-Card-Fraud-Detection
  2. IPFS - 可快速索引的版本化的点对点文件系统(草稿3)
  3. 苹果屏幕尺寸_搭载 mini LED 屏幕的 iPad Pro 要来了?!
  4. 移动开发:Android数据连接浅析
  5. virtualbox折腾记
  6. threejs学习网址记录
  7. iphone UI 界面尺寸
  8. SSM根据上传文件获取视频文件时长
  9. 基于NDK编译Android平台的FFmpeg动态库
  10. smtp java 抓包_[Wireshark]_003_电子邮件抓包分析