CodeForces 572A,B,C
生活随笔
收集整理的這篇文章主要介紹了
CodeForces 572A,B,C
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CodeForces 572A
題意:給定兩個序列,問能否從第一個序列取出k個數,從第二個序列取出m個數,使得第一個序列取出來的所有數都小于第二個序列取出來的數。
思路:水。因為問的是存在,所以只要在第一個序列中取最小的k個和第二個序列中最大的m個,然后比較第一取出來最大是否小于第二取出來最小。
code:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <sstream> #include <string> #include <vector> #include <list> #include <queue> #include <stack> #include <map> #include <set> #include <bitset>using namespace std;typedef long long ll; typedef unsigned long long ull; typedef long double ld;const int INF=0x3fffffff; const int inf=-INF; const int N=1e5+5; const int M=2005; const int mod=1000000007; const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x)) #define cpy(x,a) memcpy(x,a,sizeof(a)) #define ft(i,s,n) for (int i=s;i<=n;i++) #define frt(i,s,n) for (int i=s;i>=n;i--) #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define lrt rt<<1 #define rrt rt<<1|1 #define middle int m=(r+l)>>1 #define lowbit(x) (x&-x) #define pii pair<int,int> #define mk make_pair #define IN freopen("in.txt","r",stdin); #define OUT freopen("out.txt","w",stdout);int v1[N],v2[N]; int main() {int n1,n2,k,m;scanf("%d%d",&n1,&n2);scanf("%d%d",&k,&m);ft(i,1,n1) scanf("%d",&v1[i]);ft(i,1,n2) scanf("%d",&v2[i]);if (v1[k]<v2[n2-m+1]) puts("YES");else puts("NO"); }
題意:給定一些股票的買賣情況,然后買高賣低,然后按價格從大到小輸出買賣的股票的序列。
思路:直接開兩個數組,一個存取買的,一個存取賣的。輸出的時候從100000向下(從0到上)遍歷即可。
code:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <sstream> #include <string> #include <vector> #include <list> #include <queue> #include <stack> #include <map> #include <set> #include <bitset>using namespace std;typedef long long ll; typedef unsigned long long ull; typedef long double ld;const int INF=0x3fffffff; const int inf=-INF; const int N=100005; const int M=2005; const int mod=1000000007; const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x)) #define cpy(x,a) memcpy(x,a,sizeof(a)) #define ft(i,s,n) for (int i=s;i<=n;i++) #define frt(i,s,n) for (int i=s;i>=n;i--) #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define lrt rt<<1 #define rrt rt<<1|1 #define middle int m=(r+l)>>1 #define lowbit(x) (x&-x) #define pii pair<int,int> #define mk make_pair #define IN freopen("in.txt","r",stdin); #define OUT freopen("out.txt","w",stdout);int mp1[N],mp2[N]; int main() {int n,m;int d,p;char s[2];scanf("%d %d",&n,&m);cls(mp1,0);cls(mp2,0);ft(i,1,n){scanf("%s %d %d",&s,&p,&d);if (s[0]=='S') mp1[p]+=d;else mp2[p]+=d;}int k=0,t=0;for(int it=0;it<N&&t<m;it++){//if (it%100==0)printf("%d\n",it);//if (it>100000) break;if (mp1[it]>0) t++,k=it;}for (int j=k;j>=0;j--) if (mp1[j]>0) printf("S %d %d\n",j,mp1[j]);t=0;for(int it=N;it>=0&&t<m;it--){if (mp2[it]>0) printf("B %d %d\n",it,mp2[it]),t++;} }CodeForces 572C
題意:給定一個三角形的三邊a,b,c和要延長的長度l,問有多少種方法可以使得延長后的圖形為三角形。
思路:先找所有的情況,然后減去不滿足的情況。當l為i時,情況為c(i+2,2)(i可以去0-l,一路累加即可)。減去分別以a,b,c作為最長邊枚舉就算把剩下邊加上也無法滿足三角形的情況。
code:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <sstream> #include <string> #include <vector> #include <list> #include <queue> #include <stack> #include <map> #include <set> #include <bitset>using namespace std;typedef long long ll; typedef unsigned long long ull; typedef long double ld;const int INF=0x3fffffff; const int inf=-INF; const int N=1000000; const int M=2005; const int mod=1000000007; const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x)) #define cpy(x,a) memcpy(x,a,sizeof(a)) #define ft(i,s,n) for (int i=s;i<=n;i++) #define frt(i,s,n) for (int i=s;i>=n;i--) #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define lrt rt<<1 #define rrt rt<<1|1 #define middle int m=(r+l)>>1 #define lowbit(x) (x&-x) #define pii pair<int,int> #define mk make_pair #define IN freopen("in.txt","r",stdin); #define OUT freopen("out.txt","w",stdout);ll sol(ll a,ll b,ll c,ll l){ll t=0;for(ll i=max(b+c-a,0ll);i<=l;i++){ll x=min(l-i,a+i-b-c);t+=(x+1)*(x+2)/2;}return t; } int main() {ll a,b,c,l,ans=0;cin>>a>>b>>c>>l;for(ll i=0;i<=l;i++) ans+=(i+1)*(i+2)/2;ans-=sol(a,b,c,l);ans-=sol(b,c,a,l);ans-=sol(c,a,b,l);cout<<ans<<endl; }
總結
以上是生活随笔為你收集整理的CodeForces 572A,B,C的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uva 11012——Cosmic Ca
- 下一篇: CodeForces 570B,C