Codeforces Round 504
(交互題真神奇,,,我自己瞎寫了一發目測樣例都沒過去就AC了。。。)
(只出了兩題的竟然沒掉下藍名真是可怕)
A:我的代碼太不美觀了,放個同學的(因為我是c++63分的蒟蒻所以根本不知道那些函數怎么用只能手寫被hack)
這個題本身不難,坑點太多了,很囍的是我在2:13分的時候被hack了,,GG
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<climits> #include<vector> #include<set> #include<cmath> #include<queue> #include<algorithm> using namespace std; int n,m; signed main() {cin>>n>>m;if (n > m + 1) return puts("NO"), 0;std::string s, t; std::cin >> s >> t;int star = 0;for (auto i : s) if (i == '*') star = 1;if (!star && s != t) return puts("NO");std::string pre = s.substr(0, s.find('*')), suf = s.substr(s.find('*') + 1);int pres = pre.size(), sufs = suf.size();if (t.substr(0, pres) == pre && t.substr(m - sufs) == suf) puts("YES");else puts("NO"); }
B:自認非常優雅
1 #include <bits/stdc++.h> 2 typedef long long ll; 3 using namespace std; 4 ll n,k; 5 int main(){ 6 scanf("%lld%lld",&n,&k); 7 ll ans = 0; 8 if(k>n){ 9 ll tmp = k-n; 10 ans = (n-tmp+1)/2; 11 } else{ 12 ll tmp = k-1; 13 ans = (tmp-1+1)/2; 14 } 15 ans =ans>0?ans:0; 16 printf("%lld\n",ans); 17 }
C:
太困了又剛補了幾話狐妖又吸了冰毒?喝了冷藏的維他檸檬茶 導致一開始的思路是錯的,,,還wa了兩發。。。其實是個大水題
#include <bits/stdc++.h> typedef long long ll; using namespace std; int n,k; char s[200005]; int main() {scanf("%d%d", &n, &k);scanf("%s", s + 1);k/=2;int cnt = 0,cnt2=0;for(int i=1;i<=n;i++){if(s[i]=='(')cnt++;elsecnt2++;printf("%c",s[i]);if(cnt==k)break;}cnt2 = cnt-cnt2;while (cnt2--){printf(")");} } View Code
?
D:旁邊哥們吐槽沒讀懂題,,其實我也沒讀懂,我是交了兩發wa了之后才勉強猜對的題意,GG
題意:我語文不好啊?
???? 給你n個數,q次操作,每次操作按照從1到q的順序 對 任意區間賦值成 那個數,第一次賦值1,第二次賦值2, n個數中為0的數可以自由變成任意數,其他數不能改變, 問 q次操作后能否得到 給定 序列,并輸出序列。 自己結合樣例好好讀讀吧,,真的挺難懂的。。
想了很多騷操作還是直接線段樹好。。
我覺著只要做了這個題代碼是非常好懂的,我就不細說了
#include <bits/stdc++.h>typedef long long ll; using namespace std; const int N = 2e5 + 5; int n, q; int a[N], vis[N],l[N],r[N],flag[N]; int minn[4*N];void build(int k, int l, int r) {if (l == r) {minn[k] = a[l];return;}int mid = (l + r) >> 1;build(k << 1, l, mid);build(k << 1 | 1, mid + 1, r);minn[k] = min(minn[k*2],minn[k*2+1]); }void update(int k, int l, int r) {}int query(int k, int lef, int rig, int l, int r) {if (l <= lef && r >= rig)return minn[k];int mid = (lef + rig) / 2;int ans = 1e9;if (l <= mid)ans = min(ans, query(k * 2, lef, mid, l, r));if (r > mid)ans = min(ans, query(k << 1 | 1, mid + 1, rig, l, r));return ans; }int main() {scanf("%d%d", &n, &q);for (int i = 1; i <= n; i++)scanf("%d", &a[i]);for (int i = 1; i <= n; i++) {int j = i + 1;while (j <= n && (a[j] == a[i] || a[j] == 0)) {if (a[j] == 0) {a[j] = a[i];flag[j]=1;}j++;}vis[a[i]] = 1;i = j - 1;}int temp = 0;if(a[1]!=0&&!vis[q]){for(int i=1;i<=n;i++){if(flag[i]){a[i]=q;vis[q]=1;break;}}if(!vis[q]) {printf("NO\n");return 0;}}if (a[1] == 0) {if (!vis[q]) {temp = q;} else {for (int i = 1; i <= n; i++) {if (a[i] != 0) {temp = a[i];break;}}}for (int i = 1; i <= n; i++) {if (a[i] == 0)a[i] = temp;}}for(int i=1;i<=n;i++){if(l[a[i]]==0)l[a[i]]=i;r[a[i]]=i;}build(1,1,n);for(int i=1;i<=q;i++){if(l[i]==0)continue;if(query(1,1,n,l[i],r[i])<i){printf("NO\n");return 0;}}printf("YES\n");for(int i=1;i<=n;i++){printf("%d ",a[i]);} } View Code
?
E : 第一次做交互題,,瞎寫一發入魂,,(當然不是昨晚上。。。)
感覺就是個貪心啊,,我也不知道為啥我這么做就是對的
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm>using namespace std; int n;bool ask(int n,int m,int x,int y){cout<<"? "<<n<<" "<<m<<" "<<x<<" "<<y<<endl;string s;cin>>s;return s[0]=='Y'; } int main(){string ans1="";string ans2="";scanf("%d",&n);int i=1,j=1;int cnt =0;while (i<=n&&j<=n&&++cnt<=(n-1)){if(ask(i,j+1,n,n)){j++;ans1+="R";} else{i++;ans1+="D";}}i=n;j=n;cnt=0;while (i>=1&&j>=1&&++cnt<=n-1){if(ask(1,1,i-1,j)){i--;ans2+="D";} else{j--;ans2+="R";}}reverse(ans2.begin(),ans2.end());printf("! ");cout<<ans1<<ans2; } View Code
?
講道理這套題要是放到我狀態很好的時候我真有可能5題。。。當然很好這種東西一般不存在。。
我昨晚就出了BC兩道題。。。驚了。。。
有個可憐的計科老兄被查重誤判skip了。。。我也是第一次聽說這種操作。。。
兩題竟然還是藍名,驚了。。。
今中午要好好睡午覺!!!md4點睡的八點多就起來來實驗室補題結果沒開門。。。(筆記本被我折磨了5個多小時gg了,,沒帶電源回去)
今晚edu可別再掉了,,,根據我的經驗我現在已經達到極小點要開始反彈上紫了(霧
擴了一波學長的好友現在有將近十個好友注冊了很開森QwQ
?
轉載于:https://www.cnblogs.com/MXang/p/9496653.html
總結
以上是生活随笔為你收集整理的Codeforces Round 504的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 003 Preconditons
- 下一篇: linux 下添加,修改,删除路由