1. 程式人生 > >Codeforces Round #524 (Div. 2) A 模擬 B數學 C 模擬 ,細節

Codeforces Round #524 (Div. 2) A 模擬 B數學 C 模擬 ,細節

A

Code:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
int main(){
	int n , k ;  // 2 5 8 
	cin >> n >> k ; 
	LL k1 = 2 * n ; 
	LL k2 = 5 * n ; 
	LL k3 = 8 * n ;

	k1 = k1 / k + ( k1 % k != 0 ) ; 
	k2 = k2 / k + ( k2 % k != 0 ) ; 
	k3 = k3 / k + ( k3 % k != 0 ) ; 
	cout <<
k1 + k2 + k3 << endl; return 0 ; }

B
思路:觀察得sn 的規律是 -1 , 1 , -2 ,2 …這樣。直接求就行了
Code:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
int main(){
	int q;
	cin >> q ;
	int l , r ;
	while( q-- ){
		cin >> l >> r ;
		l -- ; 
		LL ll = l / 2 + ( l % 2 != 0
) ; if( l % 2 ) ll = 0 - ll ; if( !l ) ll = 0 ; LL rr = r / 2 + ( r % 2 != 0 ) ; if( r % 2 ) rr = 0 - rr ; //cout << ll << ' ' << rr << endl; cout << rr - ll << endl ; } return 0 ; }

C
題意:給你一個m*n的矩陣黑白相間,然後給兩個小矩陣的左下和右上的座標,第一個矩陣範圍內的顏色都變成白,第二個都變成黑(按順序)。問最後多少黑多少白。
思路:
先計算最初的黑白個數。
然後計算第一個,第二個矩陣改變的情況,不考慮相交區域,這個容易計算。
最後將相交區域求出左下與右上座標,計算黑->黑的改變情況即可。因為剛才沒有考慮相交區域,只是簡單的將這塊區域由最初形態轉化為黑色,因此只是將白色轉為黑,第一個矩形將這塊區域的黑轉為白的那塊並沒有計算,所以是將最初的黑->黑。

Code:

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
int main(){
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);  
	int T ; 
	cin >> T ;
	while( T-- ){
		LL W , B ;
		LL n , m ; 
		cin >> n >> m ; //y x 
		LL x1 , y1 , x2 , y2 ; 
		LL x3 , y3 , x4 , y4 ; 
		W = n * m / 2 ; 
		B = W ; 
		if( ( ( n * m ) % 2 ) ) W ++ ;
		cin >> x1 >> y1 >> x2 >> y2 ; 
		cin >> x3 >> y3 >> x4 >> y4 ; 
		
		n = y2 - y1 + 1 ; 
		m = x2 - x1 + 1 ; 
		W += n * m / 2 ; 
		B -= n * m / 2 ; 
		if( ( ( n * m ) % 2 ) && ( ( x1 + y1 ) % 2 ) ) { B -- ; W ++ ;}

		n = y4 - y3 + 1 ; 
		m = x4 - x3 + 1 ; 
		W -= n * m / 2 ;
		B += n * m / 2 ; 
		if( ( ( n * m ) % 2 ) && ( ( x3 + y3 ) % 2 ) == 0 ) { W -- ; B ++ ;}

		LL x5 = max( x1 , x3 ) ; 
		LL x6 = min( x2 , x4 ) ; 
		LL y5 = max( y1 , y3 ) ; 
		LL y6 = min( y2 , y4 ) ;
		if( x6 >= x5 && y6 >= y5 ){
			n = y6 - y5 + 1; 
			m = x6 - x5 + 1; 
			W -= n * m / 2 ; 
			B += n * m / 2 ; 
			if( ( ( n * m ) % 2 ) && ( ( x5 + y5 ) % 2 ) ) {  B ++ ; W -- ; }
		}

		cout << W << ' ' << B << endl;
	}
	return 0 ; 
}

相關推薦

Codeforces Round #511 (Div. 2) A 構造B 數學C素數篩

A 題意:構造a+b+c == n 且 a , b , c 都不為3的倍數。 思路:用1,2去構造即可。 Code: #include <bits/stdc++.h> using names

Codeforces Round #444 (Div. 2) ABC

題目連結 A: #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <vector&g

Codeforces Round #524 (Div. 2) A 模擬 B數學 C 模擬 ,細節

A Code: #include <bits/stdc++.h> #define LL long long using namespace std; int main(){ int n ,

Codeforces Round #524 (Div. 2) A. Petya and Origami

A. Petya and Origami time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

Codeforces Round #515 (Div. 3) ABC、D

A. Vova and Train time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vo

Codeforces Round #515 (Div. 3) ABC、D

A. Vova and Train time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vova

Codeforces Round #510 (Div. 2) A 模擬 B列舉 C D離散化+樹狀陣列(逆序對)

A Code: #include <bits/stdc++.h> #define LL long long #define INF 0x3f3f3f3f using namespace s

Codeforces Round #416 (Div. 2) A+B

src separate not sum redo swe tput output depend A. Vladik and Courtesy 2 seconds 256 megabytes At regular competition Vl

Codeforces Round #417 (Div. 2) A. Sagheer and Crossroads 模擬 枚舉

ces color 一次 name exit main cst space amp Codeforces Round #417 (Div. 2) A. Sagheer and Crossroads 模擬 枚舉 題意 一個紅綠燈 按逆時針方向一次給出各個路口的左轉,

Codeforces Round #426 (Div. 2)A B C題+賽後小結

ase com || namespace inf exp test 鏈接 %d   最近比賽有點多,可是好像每場比賽都是被虐,單純磨礪心態的作用。最近講的內容也有點多,即便是點到為止很淺顯的版塊,刷了專題之後的狀態還是~"咦,能做,可是並沒有把握能A啊"。每場網絡賽,我似乎

Educational Codeforces Round 37 (Rated for Div. 2)ABC,F

fine 暴力模擬 需要 lose sort codeforce 結構 分享圖片 線段樹 A Water The Garden 數據不大,暴力模擬下直至把每個花床都遍歷過的過程即可 1 #include <bits/stdc++.h> 2 us

Codeforces Round #475 Div. 2 A B C D

rac sca 節點 spa AR 並且 split -s using A - Splits 題意 將一個正整數拆分成若幹個正整數的和,從大到小排下來,與第一個數字相同的數字的個數為這個拆分的權重。 問\(n\)的所有拆分的不同權重可能個數。 思路 全拆成1,然後每次將2個

Educational Codeforces Round 53 (Rated for Div. 2) ABC,D,E題解

A. Diverse Substring 題意:找一個子串滿足任何一個字元的出現次數小於 n/2 n是子串的長度, 顯然兩個不相同的字元組成的子串就是滿足情況的; #include<bits/stdc++.h> using namespace std; #d

Codeforces Round #524 (Div. 2) B. Margarite and the best present 規律題

B. Margarite and the best present time limit per test 1 second memory limit per test 256 megabytes input standard input output stand

CodeforcesRound #524 (Div. 2) A-F

傳送門:CF524Div2 A. Petya and Origami 上取整 #include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m,k;ll a,b,c; i

Codeforces Round #520 (Div. 2) A B C D

A. A Prank 題目連結:http://codeforces.com/contest/1062/problem/A 題目大意:n個數,輸入n個數,然後對於這些數,看最多能夠擦除多少個數,還能還原出原陣列。 這些數範圍:1~1000。 方法:下標相減==裡面的元素值相減則是能夠刪

Codeforces Round #520 (Div. 2)A,B

A.Prank 大意就是: 給你一個序列,讓你從這個序列中扣一段連續的數,如果你看到餘下的數仍能還原原來的序列就是對的,求最大可以扣多少個數. 思路: 首先我們扣掉的數是個連續的序列,那麼如果是1.3.5不連續任意扣掉一個不能還原,如果是連續的話比如 2.3.4就可以保留開頭結尾扣掉中間

Codeforces Round #514 (Div. 2) A. Cashier (模擬)

題意:一個收銀員每天上L個小時的班,為了緩解壓力當他閒的時候,他每過a分鐘需要想要抽一次煙,但是在顧客來的時候不能抽菸,他知道顧客啥時候來,並且來幾分鐘,問他能抽多少次煙。 題解:一開始沒什麼思路

Educational Codeforces Round 53 (Rated for Div. 2) ABC,D,E題解

A. Diverse Substring 題意:找一個子串滿足任何一個字元的出現次數小於 n/2 n是子串的長度, 顯然兩個不相同的字元組成的子串就是滿足情況的; #include<bits

Codeforces Round #259 (Div. 2) A B C 三連發

Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she kept losing. Having returned to the castle, Twilight