1. 程式人生 > 實用技巧 >【心得體會】11.16-11.22

【心得體會】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見祖宗。