生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #640 (Div. 4)(ABCDE)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Sum of Round Numbers CodeForces - 1352A
思路:按照題意模擬即可。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;string s
;int main()
{int t
;scanf("%d",&t
);vector
<string
> ans
;while(t
--){cin
>>s
;ans
.clear();for(int i
=0;i
<s
.length();){string t
="";t
+=s
[i
];i
++;while(i
<s
.length()&&s
[i
]=='0') t
+=s
[i
++];int j
=s
.length()-i
;while(j
--) t
+='0';ans
.push_back(t
);}cout
<<ans
.size()<<endl
;for(int i
=0;i
<ans
.size();i
++) cout
<<ans
[i
]<<" ";cout
<<endl
;}return 0;
}
Same Parity Summands CodeForces - 1352B
思路:因?yàn)樗械钠媾夹韵嗤D敲次覀兛梢约僭O(shè)所有的都是偶數(shù),如果成立的話就符合條件;如果不成立的話就假設(shè)奇數(shù);如果兩種情況都不符合的話,就無(wú)法構(gòu)造出。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;const int maxx
=1e2+100;
int a
[maxx
];
int n
,k
;int main()
{int t
;scanf("%d",&t
);int flag
;while(t
--){scanf("%d%d",&n
,&k
);flag
=0;if((n
-(k
-1)*2)>0&&(n
-(k
-1)*2)%2==0) flag
=2;else if((n
-(k
-1))>0&&(n
-(k
-1))%2==1) flag
=1;if(flag
==0||n
<k
) cout
<<"NO"<<endl
;else{cout
<<"YES"<<endl
;for(int i
=0;i
<k
-1;i
++) cout
<<flag
<<" ";cout
<<n
-(k
-1)*flag
<<endl
;}}return 0;
}
K-th Not Divisible by n CodeForces - 1352C
思路:滿足單調(diào)性,二分即可。注意邊界條件。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;ll n
,k
;int main()
{int t
;scanf("%d",&t
);while(t
--){scanf("%lld%lld",&n
,&k
);ll l
=0,r
=1e12;ll ans
;while(l
<=r
){ll mid
=l
+r
>>1ll;if(mid
-mid
/n
>k
) r
=mid
-1;else if(mid
-mid
/n
<k
) l
=mid
+1;else {if(mid
%n
==0) mid
-=1;ans
=mid
;break;}}cout
<<ans
<<endl
;}return 0;
}
Alice, Bob and Candies CodeForces - 1352D
思路:根據(jù)題意模擬。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;const int maxx
=1e3+10;
int a
[maxx
];
int n
;int main()
{int t
;scanf("%d",&t
);while(t
--){scanf("%d",&n
);for(int i
=1;i
<=n
;i
++) scanf("%d",&a
[i
]);int sum1
=0,sum2
=0;int pre
;int l
=1,r
=n
;int flag
=-1;int cnt
=0;while(l
<=r
){if(flag
==-1){pre
=a
[1];sum1
=a
[1];flag
=1;l
++;}else if(flag
==1){int sum
=0;while(sum
<=pre
&&l
<=r
) sum
+=a
[r
--];pre
=sum
;flag
=0;sum2
+=sum
;}else if(flag
==0){int sum
=0;while(sum
<=pre
&&l
<=r
) sum
+=a
[l
++];pre
=sum
;flag
=1;sum1
+=sum
;}cnt
++;}cout
<<cnt
<<" "<<sum1
<<" "<<sum2
<<endl
;}return 0;
}
Special Elements CodeForces - 1352E
思路:數(shù)據(jù)量不大,可以直接暴力。正解應(yīng)該是dp。
代碼如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std
;const int maxx
=8e3+100;
int a
[maxx
];
int vis
[maxx
],vis1
[maxx
];
int sum
[maxx
];
int n
;int main()
{int t
;scanf("%d",&t
);while(t
--){scanf("%d",&n
);for(int i
=1;i
<=n
;i
++) vis
[i
]=vis1
[i
]=0;sum
[0]=0;for(int i
=1;i
<=n
;i
++) scanf("%d",&a
[i
]),vis
[a
[i
]]++,sum
[i
]=sum
[i
-1]+a
[i
];int ans
=0;for(int i
=1;i
<=n
;i
++){for(int j
=1;j
<i
;j
++) {if(sum
[i
]-sum
[j
-1]<=n
&&vis1
[sum
[i
]-sum
[j
-1]]==0) ans
+=vis
[sum
[i
]-sum
[j
-1]],vis1
[sum
[i
]-sum
[j
-1]]=1;}}printf("%d\n",ans
);}return 0;
}
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #640 (Div. 4)(ABCDE)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。