日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

山东省第十届ACM浪潮杯补题

發(fā)布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 山东省第十届ACM浪潮杯补题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一次參加省賽,可能也是最后一次了。。有點遺憾,但是收獲還是很多的。濟南大學真大,飯菜也很好吃,志愿者小姐姐也很漂亮。上來題出的很快,差不多不到一個半小時就出了五道題,然后wa了兩發(fā)。后面三個半小時全程掛機,H和L題一直沒出,思路有問題。最后五題拿銅。遺憾收場。要是五題出的在快點就是銀牌了(畢竟是銅牌靠前,菜是原罪)
補題H和L。
H
Median

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124
賽場上一直想拓撲排序,各種拓撲排序,然后想出各種不對的條件。一直wa,,,下了賽場才知道,不一定要是確定的,把所有不確定的找出來就行。啊啊啊。我們想一下,其實那個點可以作為中位數(shù)的條件就是大于或者小于這個數(shù)的個數(shù)都不大于n/2,就有可能作為中位數(shù)。其實就是正反各建一次邊,正著反著找出各個點的子樹(類似)節(jié)點數(shù)。邊找邊判斷就可以了。唉,難受的一批

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<map> #include<vector> #include<queue> using namespace std;const int maxx=1e2+10; int mp1[maxx][maxx]; int mp2[maxx][maxx]; int in[maxx]; int vis[maxx]; int n,m;void init() {memset(mp1,0,sizeof(mp1));memset(mp2,0,sizeof(mp2));memset(vis,0,sizeof(vis));memset(in,0,sizeof(in)); }int dfs1(int cur) {int ans=1;vis[cur]=1;for(int i=1;i<=n;i++){if(mp1[cur][i]&&vis[i]==0){vis[i]=1;ans+=dfs1(i);}}return ans; }int dfs2(int cur) {int ans=1;vis[cur]=1;for(int i=1;i<=n;i++){if(mp2[cur][i]&&vis[i]==0){vis[i]=1;ans+=dfs2(i);}}return ans; }int main() {int t;scanf("%d",&t);while(t--){ scanf("%d%d",&n,&m);init();//初始化!!!!int x,y;int flag1=1;for(int i=0;i<m;i++){scanf("%d%d",&x,&y);mp1[x][y]=1;mp2[y][x]=1;in[y]++;}queue<int> p;for(int i=1;i<=n;i++){if(in[i]==0){p.push(i); }}while(p.size())//判斷環(huán),如果有環(huán),肯定不對的。。{int x=p.front();p.pop();if(vis[x]) continue;vis[x]=1;for(int i=1;i<=n;i++){if(mp1[x][i]){in[i]--;if(in[i]==0){p.push(i);} }}}int flag=1;for(int i=1;i<=n;i++){if(vis[i]==0){flag=0;break;}}if(flag==0){for(int i=1;i<=n;i++) printf("0");printf("\n");continue;}for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));int x=dfs1(i)-1;//小于memset(vis,0,sizeof(vis));int y=dfs2(i)-1;//大于if(x>n/2||y>n/2) printf("0");else printf("1");}printf("\n");}return 0; } /*4321 10 8 1 2 2 5 4 6 3 7 8 9 2 9 3 4 5 8*/

L Tokens on the Segments

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4120
賽場上的時候看出是貪心來了,按著左端點,右端點,區(qū)間長度都排序來找,但是一直wa,后來隊友寫了一發(fā)暴力,還是wa,嚶嚶嚶。后來知道用優(yōu)先隊列去貪心,想了想確實比單一的排一次序好得多。菜的想哭。。

#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #include<vector> #define ll long long using namespace std;const int maxx=1e5+100; struct node{ll l,r;node(ll a=0,ll b=0){l=a;r=b;}bool operator < (const node &a)const{if(l!=a.l) return l>a.l;else return r>a.r;} }; int n;int main() {int t;scanf("%d",&t);while(t--){scanf("%d",&n);ll l,r;priority_queue<node> p; for(int i=0;i<n;i++){scanf("%lld%lld",&l,&r);p.push(node(l,r));}ll maxn=-1;ll ans=0;while(!p.empty()){node a;a=p.top();p.pop();if(a.l<=maxn&&a.l+1<=a.r) {p.push(node(a.l+1,a.r));continue;}if(a.l>maxn){ans++;maxn=max(maxn,a.l);}}printf("%lld\n",ans);} }

后面還有藍橋和南昌邀請賽。愿不忘初心,方得始終。加油!!!
努力加油a啊,(o)/~

總結(jié)

以上是生活随笔為你收集整理的山东省第十届ACM浪潮杯补题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。