要求從三個陣列中每個位置取乙個數字,構成乙個相同長度的陣列,要求相鄰的不相等(環形),那麼我們直接暴力選,記錄當前不能取的值就可以了,然後要記得特判一下首位的兩個元素。
首先通過模擬樣例我們發現相同的元素其實是一點用都沒有的,所以我們先去重了再說,然後我們的做法就是貪心的取四個不同的元素一直到取完為止。
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define rep(i,f_start,f_end) for (int i=f_start;i<=f_end;++i)
#define per(i,n,a) for (int i=n;i>=a;i--)
#define mt(x,i) memset(x,i,sizeof(x) )
#define rev(i,start,end) for (int i=start;ivi;
typedef pairpii;
typedef pairpiii;
ll gcd(ll a,ll b)
ll lcm(ll a,ll b);
void check_max (int &a,int b)
void check_min (int &a,int b)
const int maxn=3e5+10;
int t;
void solve ()
else if (len<=k)
int ans;
if ((len-k)%(k-1)==0) ans=(len-k)/(k-1)+1;
else ans=(len-k)/(k-1)+2;
printf ("%d\n",ans);
}int main ()
return 0;
}
考慮二分時間,然後check函式模擬行程並判斷。**在第四個樣例的時候會t掉出不來,不知道為什麼,大概思路就是這個,大佬可以找找看bug。
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define rep(i,f_start,f_end) for (int i=f_start;i<=f_end;++i)
#define per(i,n,a) for (int i=n;i>=a;i--)
#define mt(x,i) memset(x,i,sizeof(x) )
#define rev(i,start,end) for (int i=start;ivi;
typedef pairpii;
typedef pairpiii;
ll gcd(ll a,ll b)
ll lcm(ll a,ll b);
void check_max (int &a,int b)
void check_min (int &a,int b)
int t,n,m;
inline bool check (double time,vector&now)
break;
}x+=res*v;
total+=x;
x=m,res=time,v=1;
for (int i=n-1;i>=0;i--)
break;
}x-=res*v;
total+=m-x;
return total>=m;
}void solve ()
printf ("%.10lf\n",ans);
}int main ()
return 0;
}
本來的想法是找橫縱座標的最小值,但是顯然是錯的。所以我們可以考慮一下dp,這題我們很明顯如果要所以的小偷都不看見,那麼一定是一部分在右邊,一部分在上面,所以我們肯定是在這些狀態裡面取乙個最小值作為答案,我們很容易就可以把對應移動多少橫座標最少需要的縱座標給算出來,然後列舉一下橫座標移動的值,維護乙個dp的最大字首和對答案取min就好了。
#include#include#include#include#include#include#include#includeusing namespace std;
#define rep(i,f_start,f_end) for (int i=f_start;i<=f_end;++i)
#define per(i,n,a) for (int i=n;i>=a;i--)
#define mt(x,i) memset(x,i,sizeof(x) )
#define rev(i,start,end) for (int i=start;ivi;
typedef pairpii;
typedef pairpiii;
ll gcd(ll a,ll b)
ll lcm(ll a,ll b);
void check_max (int &a,int b)
void check_min (int &a,int b)
inline int read() while('0'<=ch&&ch<='9') return x*f;
}const int maxn=1e6+10;
int main ()
}int ans=2*maxn;
int mx=0;
per (i,maxn-1,0)
printf ("%d\n",ans);
}
模擬 2020加油
描述 傳說中的2020年到啦,大家來畫個圖迎接新年的到來吧。輸入輸入n 15 n 5,且為奇數 分別為2和0的邊長 輸出其實只是列印2和0這兩個數字而已,每個數字之間用乙個空格隔開。樣例輸入 樣例輸出 提示 2在水平方向為三根橫線 長度為n 豎直方向為兩個豎線 長度應該是 n 1 2 0就是列印乙個...
2020讀書有感
保持正念,專注當下,這些都是生活經歷,都是修行。要知行合一,是我們的分別心賦予了什麼是痛苦什麼是歡樂。人聲最大的痛苦是 認為自己不該有的痛苦而痛苦。人為什麼產生焦慮情緒?當你在做一件事時,卻無法忠於這件事,就會變得焦慮。有人說,居於廟堂,身處佛寺才是修行。但其實生活本身就是修行。修煉正念,可以在任何...
2020考研總結
數學上犯的錯誤 四月以前看的同濟教材於考研而言意義不大。8月初完成基礎階段複習後,我低估了自己的能力,認為此時看提高篇看不懂,又在基礎複習上加了乙個月的重新回顧,此階段意義不大。沒有規劃好自己的複習進度,在九月底完成了提高端段的複習後,還想把660做完,雖然可行,但沒有貫徹執行。概率論沒有打好基礎,...