題意:給你m組二元組(x,y),問你是否可以找到兩個點,使得每個二元組裡都含有這連個點之一。
思路:首先,我們先分析下題意。
讓找兩個點,使得每個二元組都含有這兩個之一,那麼任意乙個二元組中都含有這兩個點之一。
我們不妨列舉第乙個二元組。
下面分類討論,
1、這個二元組的兩個點恰好是要找的那兩個點。
2、這個二元組可能只含有乙個要找的點
2、1 可能是第乙個點
2、2可能是第二個點
我們就按照上述的思路模擬就行了。
ac code:
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define read(x) scanf("%d",&x)
#define read(x,y) scanf("%d%d",&x,&y)
#define sread(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define gc(x) scanf(" %c",&x);
#define mmt(x,y) memset(x,y,sizeof x)
#define fast ios::sync_with_stdio(false);cin.tie(0);
#define inf 0x3f3f3f3f
#define ll long long
#define mod 998244353
#define pdd pairll maxn = (1ll<<32) - 1ll;
const int n = 3e5+5;
const int m = 4e6+5;
int x[n],y[n];
int val[n];
int main()
if(sum == 0) return puts("yes"),0;//滿足第一種情況
int max = 0;
for(int i =1 ;i <= m;++i)
if(max >= s1 ) return puts("yes"),0;//出現最多的點大於s1,故滿足條件,否則在下面模擬第二個點
max = 0;
mmt(val,0);
for(int i = 1;i <= m;++i)
if(max >= s2) return puts("yes"),0;
else puts("no");
}
D Equal Cut 思維 列舉
題意 將長為n的序列分成連續的4個非空區間,求出每個區間的和,使得max 區間和 min 區間和 最小 思路 割3刀,很自然想到列舉第二刀i,正常做法o n 3 注定要涼。我們將區間 1,i 1 劃分成2個非空區間l1,l2,為了劃分後,使得有 最大值盡可能小,最小值盡可能大,則有l1和l2的差距越...
貪心 思維 列舉
題目大意 左括號和右括號數量相等的個數 思路 從開始列舉,用兩個標記指標,乙個記錄左括號和右括號的數量,出現乙個左括號 出現乙個右括號 出現乙個?號的話我們先把它當成右括號 所以 左括號 但是問號也要記錄下來 所以問號 當 左括號的數量為零的時候說明左括號和右括號的數量相等,所以答案加1,但是如果左...
Maximum Value (二分 思維列舉)
you are given a sequence a consisting of n integers.find the maximum possible value of i divided by a j where 1 i,j n and a i a j.input the first line...