【心得体会】11.16-11.22
作者:互联网
tips
1、最大的回文素数是9989899。
2、注意数据范围,数组不能开太大也不能太开小。(RE警告!)有时候不一定是给的数据的大小,要计算实际数据大小。
3、对于奇怪的WA错误,要注意输出格式(末尾空格),有些OJ没有PE的错误。
改进之处
1、除了训练赛和USCAO系列,题量难度不够,根据队伍内部情况,下周开始加大图论方面的学习,以补足队伍中的图论短板。
2、赛后补题存在拖延现象,原因:1、要补的题目学不会,补不了。2、补题花费时间不够多。
3、链表指针方面掌握不熟练,可以找一部分题目进行训练。
4、USCAO系列还是需要花时间去做一做的。
5、对于答题注意事项,每周心得会写,但是主要还是在另外一个博客里面更新。
https://www.cnblogs.com/Shayndel/p/13983706.html
本周题单
USCAO系列
USACO Training 1.5.1 Number Triangles
数字金字塔,经典入门dp
USACO Training 1.5.2 Prime Palindromes
判回文质数,这题RE好几发,最后发现对回文素数的估计不准确,数组开太大了。(虽然本地编译和洛谷能过,但是这一点还是需要值得注意一下吧,毕竟不知道什么时候评测机卡
USACO Training 1.5.3 Superprime Rib
简单二分+素数吧,比较简单的一道题
USACO Training 1.5.4 Checker Challenge
n皇后问题,用传统回溯法做的,有时间把位运算补上。
总结
以上题目是1.5的内容,都是比较简单的题,但是在一些出锅的细节上,也学到了一些东西把。有时间补1.4。
CF系列
本周算是打了两场CF
一场是周日的div2
题解链接:https://www.cnblogs.com/Shayndel/p/13998829.html
一场是周四的EDU
题解链接:https://www.cnblogs.com/Shayndel/p/14017152.html
训练赛
CCCC训练第三场
本来是想针对这场比赛也写个题解,但是本周有点没时间了,就大概统计一下吧,除了最后几道题,其余算手速水题了。
7-1 求整数均值
从题目得知,是一道水题,算平均值
7-2 矩阵运算
矩阵除副对角线、最后一列和最后一行以外的所有元素之和
7-3 Hello World!
输出Hello World!
7-4 考试座位号
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码
7-5 求1到N的和
题意同标题
7-6 谷歌的招聘
输出 N 中最早出现的 K 位连续数字所组成的素数
特别的是用到了stoi()函数
7-7 整数算术运算
输出两个数的加减乘除取余
7-8 西安距离
哈密顿距离,输出两个坐标绝对值的和
7-9 Maximum Subsequence Sum
经典最大公共子序列
7-10 列车厢调度
栈模拟
7-12 二叉搜索树的2层结点统计
搜索+链表
7-13 畅通工程之局部最小花费问题
克鲁斯卡尔最小生成树
7-15 凑零钱
简单dfs
总结
这套题难度相对来说较为简单,三个小时,15道题,我过了13道。但是从这套题上发现,我在指针链表运用方面比较欠缺(虽然对比赛而言其实用不太到)但也发现是我自己的一个短板所在吧。
华东师范
这套题不太好做,周五的时候身体不舒服,状态也不太行。过了BA之后就罚坐了
B. 辗转相除法
https://acm.ecnu.edu.cn/contest/340/problem/B/
找一个数据,是所给代码的反例。由题意我们可以得到 30 70 105 这个反例。(但是我还是想了很久很久,30分钟签到)
A. 选择题
https://acm.ecnu.edu.cn/contest/340/problem/A/
看了一年的中文题目,思路:每个年份肯定是有一些是正确答案有一些是错误答案,那么这个年份能出的题就确定了,只要然后哪些人可以作为答案也是确定的
组合数搞一下就行了,一个年能出的题数是C错误答案取3*正确答案,对于一个年份,找到第一个大于等于当前重要年,找到第一个在这之后出生的人
代码:
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define Mid ((l + r) >> 1)
#define lson (rt << 1)
#define rson (rt << 1 | 1)
using namespace std;
const int mod = 114514;
int read(){
char c; int num, f = 1;
while(c = getchar(),!isdigit(c)) if(c == '-') f = -1; num = c - '0';
while(c = getchar(), isdigit(c)) num = num * 10 + c - '0';;
return f * num;
}
int n, m, a[100009], b[100009], d[100009];
main()
{
n = read(); m = read();
for(int i = 1; i <= n; i++)a[i] = read();
for(int i = 1; i <= n; i++)b[i] = read();
for(int i = 1; i <= m; i++)d[i] = read();
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + n);
sort(d + 1, d + 1 + m);
int fans = 0;
for(int i = 1; i <= m; i++){
int l, r, p1, p2;
ll ans;
l = 1; r = n;
while(l <= r){
if(b[Mid] > d[i]) r = Mid - 1;
else l = Mid + 1;
}
p1 = r;
//n - p1个错误选项
//p1个正确选项
l = 1; r = n;
while(l <= r){
if(a[Mid] >= d[i]) r = Mid - 1;
else l = Mid + 1;
}
p2 = r;
//p2个正确人
if(n - p1 < 3)continue;
if(p1 < 1) continue;
ans = (n - p1) * (n - p1 - 1) * (n - p1 - 2) / 3 / 2;
ans %= mod;
ans = ans * (p1) % mod * (p2) % mod;
fans = (fans + ans) % mod;
}
printf("%lld\n", fans);
return 0;
}
WA了一发,这题告诉我,不开ll见祖宗。
标签:1.5,p1,心得体会,11.16,11.22,long,https,ans,define 来源: https://www.cnblogs.com/Shayndel/p/14019906.html