阿狸与桃子的游戏
史上最水黑题?
注意边权下放到点权的时候,不要/2.
输出答案时再/2,以免整数除法带来错误(第一次就是因为这个wa了23333333
阿狸与桃子的游戏1 #include<bits/stdc++.h> 2 #define LL long long 3 #define maxn 10000+5 4 #define re register int 5 using namespace std; 6 LL sum; 7 int dian[maxn]; 8 int n,m; 9 int main() 10 { 11 ios::sync_with_stdio(false); 12 cin>>n>>m; 13 for(re i=1;i<=n;i++) 14 cin>>dian[i],dian[i]*=2; 15 for(re i=1;i<=m;i++) 16 { 17 int u,v,w; 18 cin>>u>>v>>w; 19 dian[u]+=w; 20 dian[v]+=w; 21 } 22 sort(dian+1,dian+n+1); 23 for(re i=1;i<=n;i+=2) 24 sum+=(dian[n-i+1]-dian[n-i]); 25 cout<<sum/2; 26 return 0; 27 }
起床困难综合症
比较重要的性质是全0和全1穿过门后能表示出所有的情况(显然?)
然后拆位贪心就可以了
起床困难综合症1 #include<bits/stdc++.h> 2 #define re register int 3 using namespace std; 4 int n,m,t; 5 char ch[5]; 6 int tmp1,tmp2=-1; 7 int ans; 8 int main() 9 { 10 cin>>n>>m; 11 for(re i=1;i<=n;i++) 12 { 13 scanf("%s",ch); 14 cin>>t; 15 if(ch[0]==‘A‘) tmp1&=t,tmp2&=t; 16 if(ch[0]==‘O‘) tmp1|=t,tmp2|=t; 17 if(ch[0]==‘X‘) tmp1^=t,tmp2^=t; 18 } 19 for(re i=29;i>=0;i--) 20 { 21 if((tmp1>>i)&1) ans+=(1<<i); 22 else if(((tmp2>>i)&1)&&(1<<i)<=m) 23 ans+=(1<<i),m-=(1<<i); 24 } 25 cout<<ans; 26 return 0; 27 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。