生活随笔
收集整理的這篇文章主要介紹了
牛客NOIP暑期七天营-提高组1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
牛客NOIP暑期七天營-提高組1
鏈接
A
邊權可為0就排序建一條鏈子。
但是邊權不為0
除了第一個有0的不行。
x連向上一個比他小的數。
期間判斷有無解。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=2e5+7;
int read() {int x=0,f=1;char s=getchar();for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';return x*f;
}
int n,S;
struct edge{int a,b,c;};
struct node {int id,val;bool operator < (const node &b) const {return val==b.val?id<b.id:val<b.val;}
}a[_];
std::vector<edge> ans;
int main() {// freopen("a.in","r",stdin);n=read(),S=read();for(int i=1;i<=n;++i) a[i].val=read(),a[i].id=i;sort(a+1,a+1+n);for(int i=2;i<=n;++i) if(!a[i].val) return puts("-1"),0;for(int i=2;i<=n;) {int las=i;if(a[i].val-a[i-1].val>S) return puts("-1"),0;while(a[i].val==a[las].val) ans.push_back(edge{a[las-1].id,a[i].id,a[i].val-a[las-1].val}),++i;}printf("%d\n",(int)ans.size());for(auto x:ans) printf("%d %d %d\n", x.a,x.b,x.c);return 0;
}
B
和XOR-MST差不多,就應該早做掉這個ZR題,要不就不用想呢么久了。答案就是XOR-MST上的最大的那條邊。
感性:字數內的也是個完全圖。因為邊權都比外邊的那條邊小,隨便連,兩顆子樹就可以變成任意形態的鏈子了。枚舉端點就行了。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=1e6+7;
ll read() {ll x=0,f=1;char s=getchar();for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';return x*f;
}
int n,ch[_*60][2],cnt=1,rt,dsr;
ll a[_],ans;
void insert(ll x) {int p=1;for(int i=59;i>=0;--i) {bool k=x&(1LL<<i);if(!ch[p][k]) ch[p][k]=++cnt;p=ch[p][k];}
}
ll query(ll x) {int p=rt;ll ans=0;for(int i=dsr;i>=0;--i) {bool k=x&(1LL<<i);if(ch[p][k]) p=ch[p][k];else p=ch[p][!k],ans|=1LL<<i;}return ans;
}
int main() {// freopen("b.in","r",stdin);n=read();for(int i=1;i<=n;++i)a[i]=read(),insert(a[i]);rt=1,dsr=59; while((!ch[rt][0]||!ch[rt][1])&&dsr>=0)rt=ch[rt][0]|ch[rt][1],dsr--;if(dsr<0) return puts("0"),0;ch[rt][1]=0;ans=1LL<<60;for(int i=1;i<=n;++i)if(a[i]&(1LL<<dsr)) ans=min(ans,query(a[i]));cout<<ans<<"\n";return 0;
}
C
沒大看題,貌似很惡心的亞子。
轉載于:https://www.cnblogs.com/dsrdsr/p/11379882.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的牛客NOIP暑期七天营-提高组1的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。