Codeforces 1229A. Marcin and Training Camp
2024-09-05 13:23:25
垃圾翻译毁一生怎么办
题目看错直接 $GG$
首先所有 $a_i$ 重复出现的人全都可以加入
考虑剩下的人发现 $a$ 必须是初始那些人的子集才能加入(证明显然),设当前考虑的人为 $x$
则集合存在 $y$ ,使得 $a_y>a_x$ 并且 $a_y \text{&} a_x=a_x$
证明显然...真的很显然啊
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
typedef long long ll;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=;
const ll INF=1e18;
ll n,a[N],b[N];
ll Ans;
vector <int> V;
map <ll,int> cnt;
bool vis[N];
int main()
{
n=read(); if(n==) { printf("0\n"); return ; }
for(int i=;i<=n;i++) a[i]=read(),cnt[a[i]]++;
for(int i=;i<=n;i++) b[i]=read();
for(int i=;i<=n;i++) if(cnt[a[i]]>) V.push_back(i),vis[i]=;
for(int i=;i<=n;i++)
{
if(vis[i]) continue;
for(auto A: V) if(a[A]>a[i]&&((a[A]&a[i])==a[i])) { V.push_back(i),vis[i]=; break; }
}
for(auto A: V) Ans+=b[A];
printf("%lld\n",Ans);
return ;
}
最新文章
- css全局样式
- 安装 CentOS 后的系统配置及软件安装备忘
- TortoiseSVN,排除不想提交文件的方法(转)
- IOS快速集成下拉上拉刷新
- intellij idea 代码正常,但是编译出现 java:需要";;";
- STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
- button 变成圆
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
- su -无反应
- vc中Error spawning cl.exe错误的解决方法.
- django进阶-3
- Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
- Javascript高级编程学习笔记(96)—— WebGL(2) 类型化视图
- QLineEdit拾遗:数据的过滤、验证和补全
- gulp的使用(一)之gulp的基础了解
- [android] 手机卫士设备管理权限锁屏
- JavaScript获取星期几的几种方法
- 移动端font-size适配方案
- spring aop 的理解
- nodejs基础 -- EventEmitter