1. 程式人生 > >【USACO1.3】解題報告

【USACO1.3】解題報告

前言

這一章主要考察的是一些簡單的數論和思維轉化能力。還是相對來說比較簡單的。
USACO:http://train.usaco.org


1.3.2.Milking Cows

思路:

字首和基礎題。
每次讀到有人在 l l r r

的時間段內工作,就將 a [ l ] + + , a [
r ] a[l]++,a[r]--
,之後用字首和,如果 a [ x
] > 0 a[x]>0
,說明在 x x 的時候有人擠奶,否則沒有。
時間複雜度 O ( t ) O(t) t t 表示時間)
另外,暴力時間複雜度 O ( t n ) O(tn) ,線段樹時間複雜度 O ( t l o g t ) O(tlogt)

程式碼:

/*
ID:ssl_zyc2
TASK:milk2
LANG:C++
*/

#include <cstdio>
#include <iostream>
#define N 1000100
using namespace std;

int a[N],n,x,y,max1,max2,k1,k2,s,t;

int main()
{
	freopen("milk2.in","r",stdin);
	freopen("milk2.out","w",stdout);
	scanf("%d",&n);
	s=1e9;
	for (int i=1;i<=n;i++)
	{
		scanf("%d%d",&x,&y);
		if (t<y) t=y;
		if (s>x) s=x;  //取時間
		a[x]++;
		a[y]--;
	}
	for (int i=s;i<=t;i++)
	{
		a[i]+=a[i-1];  //字首和
	 	if (a[i])
	 	{
	 		if (k2+1>max2) max2=k2;
	 		k2=0;
	 		k1++;
	 	}
	 	else
	 	{
	 		if (k1-1>max1) max1=k1;
	 		k1=0;
	 		k2++;
	 	}
	}
	printf("%d %d\n",max1,max2);
	return 0;
}

1.3.3.Transformations

思路:

模擬啊。。。

  1. 90 ° = a [ i ] [ j ] 90°=a[i][j] 轉換到 a [ j ] [ n i + 1 ] a[j][n-i+1]
  2. 180 ° = a [ i ] [ j ] 180°=a[i][j] 轉換到 a [ n i + 1 ] [ n j + 1 ] a[n-i+1][n-j+1]
  3. 270 ° = 270°= 逆時針轉 90 ° 90°
  4. 反射 = s w a p ( a [ i ] , a [ n i + 1 ] ) =swap(a[i],a[n-i+1])
  5. 反射 + 90 ° / 180 ° / 270 ° +90°/180°/270° = 4 + 1 / 2 / 3 4+1/2/3
  6. 不變 = = 廢話
  7. 無法成立 = ! 1   &amp; &amp;   ! 2   &amp; &amp;   ! 3   &amp; &amp;   ! 4   &amp; &amp;   ! 5   &amp; &amp;   ! 6 =!1\ \&amp;\&amp;\ !2\ \&amp;\&amp;\ !3\ \&amp;\&amp;\ !4\ \&amp;\&amp;\ !5\ \&amp;\&amp;\ !6

程式碼:

/*
ID:ssl_zyc2
TASK:transform
LANG:C++
*/

#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 20
using namespace std;

char a[N][N],b[N][N];
int n;

bool check1()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n;j++)
	  if (a[i][j]!=b[j][n-i+1]) return 0;
	return 1;
}

bool check2()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n;j++)
	  if (a[i][j]!=b[n-i+1][n-j+1]) return 0;
	return 1;
}

bool check3()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n;j++)
	  if (a[j][n-i+1]!=b[i][j]) return 0;
	return 1;
}

bool check4()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n;j++)
	  if (a[i][j]!=b[i][n-j+1]) return 0;
	return 1;
}

bool check5()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n/2;j++)
	  swap(a[i][j],a[i][n-j+1]);
	bool ok=false;
	if (check1()) ok=1;
	if (check2()) ok=1;
	if (check3()) ok=1;
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n/2;j++)
	  swap(a[i][j],a[i][n-j+1]);
	return ok;
}

bool check6()
{
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=n;j++)
	  if (a[i][j]!=b[i][j]) return 0;
	return 1;
}

int main()
{
	freopen("transform.in","r",stdin);
	freopen("transform.out","w",stdout);
	cin>>n;
	for (int i=1;i<=n;i++) 
	 cin>>a[i]+1;
	for (int i=1;i<=n;i++)
	 cin>>b[i]+1;
	if (check1()) cout<<1;
	else if (check2()) cout<<2;
	else if (check3()) cout<<3;
	else if (check4()) cout<<4;
	else if (check5()) cout<<5;`
	else if (check6()) cout<<6;
	else cout<<7;
	printf("\n");
	return 0;
	
}


1.3.4.Name That Number

思路:

這道題題目看懂了就很簡單。
d i c t . t x t dict.txt 裡面的字串全部轉化成數字,與讀入的 n n 看看是否一樣,一樣的額話就輸出。
要用 l o n g   l o n g long\ long

程式碼:

/*
ID:ssl_zyc2
TASK:namenum
LANG:C++
*/

#include <cstdio>
#include <iostream>
#include <string>
#include <queue>
#define MAXN 1001000
#define ll long long
using namespace std;

string s;
ll n;
bool ok;

ll change(string s)
{
	ll ss=0;
	for (int i=0;i<s.size();i++)
	 if (s[i]>='A'&&s[i]<='C') ss=ss*10+2;  //依次判斷
	 else if (s[i]>='D'&&s[i]<='F') ss=ss*10+3;
	 else if (s[i]>='G'&&s[i]<='I') ss=ss*10+4;
	 else if (s[i]>='J'&&s[i]<='L') ss=ss*10+5;
	 else if (s[i]>='M'&&s[i]<='O') ss=ss*10+6;
	 else if (s[i]>='P'&&s[i]<='S') ss=ss*10+7;
	 else if (s[i]>='T'&&s[i]<='V') ss=ss*10+8;
	 else if (s[i]>='W'&&s[i]<='Z') ss=ss*10+9;
	return ss
            
           

相關推薦

USACO1.3解題報告

前言 這一章主要考察的是一些簡單的數論和思維轉化能力。還是相對來說比較簡單的。 USACO:http://train.usaco.org 1.3.2.Milking Cows 思路: 字首和基礎題。 每次讀到有人在

USACO1.4解題報告

前言 本章主要考的是貪心和一些比較麻煩的模擬。難度相比上一章有很明顯的提升。但是稍微想一下還是可以想出來的(第五題除外,看了一下題解的思路)。 USACO:http://train.usaco.org 1.4.2.Mixing Milk 思路: 很明顯是一道貪心基礎

USACO1.2解題報告

前言 以後將會不定期刷USACO的題目。每做完一小章會寫一份解題報告。這一小章裡面較簡單或者並不是很重要的題目就會直接放在裡面。而比較重要的題目就會單獨寫部落格,在這裡面放連結。 這一章很簡單,全部都是很基礎的題目。就直接在這裡面一筆帶過。 USACO:http://train.us

USACO1.5解題報告

前言 這章只有兩道題,但是質量都不比上一章低。 第一題正解肯定很難,但是資料神奇般的把 O (

USACO1.6解題報告

前言: 這章的三道題目中有兩道是可以用 D F S

USACO2.3解題報告

前言 本章主要是動態規劃,但是其中幾道題的方法比較多,我採用了其他的方法。 題目已經開始變難,有幾道題還特別值得思考。已經達到普及 T 3

USACO2.1解題報告

前言 USACO2.1主要內容是圖論。其中有幾道題是要用深搜做的。而另外幾道題則是利用模擬的方法來完成簡單圖論。 總體來說難度還是比較小的,算是最基礎的演算法吧。 UASCO:http://train.usaco.org 2.1.3.The Castle 題解

USACO2.2解題報告

前言 然而只有一道動態規劃的題目。。。 其他三道題都是模擬。。。 難度還是有所增加的。至少在洛谷中又有一道藍題了。 USACO:http://train.usaco.org USACO2.2.3.Preface Numbering 思路: 我們會發現羅馬數字中每一位都

2018.3.28 AtCoder beginner092-C 解題報告(線性處理)

C - Traveling PlanTime limit : 2sec / Memory limit : 256MBScore : 300 pointsProblem StatementThere are N sightseeing spots on the x-axis,

洛谷 T28312 相對分子質量2018 6月月賽 T2 解題報告

字符 pac ... 給定 substr ++ 錯誤 如果 題目 T28312 「化學」相對分子質量 題目描述 做化學題時,小\(F\)總是裏算錯相對分子質量,這讓他非常苦惱。 小\(F\)找到了你,請你來幫他算一算給定物質的相對分子質量。 如果你沒有學過相關內容也沒有關系

校內賽 codeforces 827D最小生成樹樹鏈剖分 解題報告

找不到題面!! 題意 給出一張n(<=2e5)個點 m(<=2e5)條邊無向圖,保證有生成樹。對於每條邊,給出一個最大值maxLength,咦即能夠保證這條邊能夠出現在所有的最小生成樹中,邊權的最大值為maxLength(同時,其他所有邊長度不變

線上筆試題解題報告系列網易2017校招內推筆試之程式設計題持續更新

網易今年把內推筆試放在牛客網上辦,然後出了一批程式設計題。 題目在: 一共18個,好多(不同崗位抽3個不同的題的樣子)…… 慢慢寫吧,做一題寫一題。 以下題解將假定讀者有下列知識,對下面所列舉的細節不再贅述。 (如果有必要對此進行教學的,請站內信我) C/C++的基本

Google Kickstart Round_H解題報告

序 Problem A. Big Buttons 題意 一個長度為 nnn 的 01串,該字串有 mmm 個不能出現的字首,問這樣的字串有多少種? 題解 由於 n,mn,mn,m 的範圍很小,直接建

Zhou Ping 's 解題報告為了有資格參加亞洲區ACM而奮鬥

 C  字串轉換 Accept:78     Submit:471 Time Limit:1000MS     Memory Limit:65536KB Description 我們將僅由若干個同一小寫字母構成的字串稱之為簡單串,例如"aaaa

題解 P1208 [USACO1.3]混合牛奶 Mixing Milk

位置 using amp 即將 現在 加強 分享圖片 clas 移動 其實根本沒有一樓dalao描述的那麽麻煩...... 一樓dalao其實吧,采用了一種純屬模擬的方式。 下面是我的大躍進思想 但是一個個地做減法是不是太慢了?(大躍進思想) 於是我們是不是可以直接進行一個

leetcode 5040. 邊框著色解題報告

posit 整數 d+ perf src check 網格 orm poi 給出一個二維整數網格 grid,網格中的每個值表示該位置處的網格塊的顏色。 只有當兩個網格塊的顏色相同,而且在四個方向中任意一個方向上相鄰時,它們屬於同一連通分量。 連通分量的邊界是指連通分量中

leetcode 94. 二叉樹的中序遍歷解題報告

stack traversal roo tree order targe blank span etc 前往二叉樹的:前序,中序,後序 遍歷算法 方法一:遞歸 vector<int> res; vector<int>

leetcode 145. 二叉樹的後序遍歷解題報告

中序 stack mage blank res tor tac 前序 top 前往二叉樹的:前序,中序,後序 遍歷算法 方法一:遞歸 vector<int> res; vector<int> postorderTrave

leetcode 968. 監控二叉樹解題報告[待完善...]

由於 camera 需要 spa alt img 狀態 數量 turn 方法一:遞歸 // 0:該節點安裝了監視器 1:該節點可觀,但沒有安裝監視器 2:該節點不可觀 int monitor = 0; int state(TreeNod

leetcode 106. 從中序與後序遍歷序列構造二叉樹解題報告

++ amp src 圖片 ima 遍歷序列 tree cto 建立 前往 中序,後序遍歷構造二叉樹, 中序,前序遍歷構造二叉樹 TreeNode* build(vector<int>& inorder, int l1, int r1,