Codeforces_812
A. 每条人行道有六条车道会撞到。
#include<bits/stdc++.h>
using namespace std; int a[],b[],c[],d[]; int main()
{
ios::sync_with_stdio();
for(int i = ;i < ;i++) cin >> a[i] >> b[i] >> c[i] >> d[i];
int flag = ;
for(int i = ;i < ;i++)
{
if(!d[i]) continue;
if(a[i] || b[i] || c[i] || a[(i+)%] || b[(i+)%] || c[(i+)%]) flag = ;
}
if(flag) cout << "YES" << endl;
else cout << "NO" << endl;
return ;
}
B.dp,注意最后一层增加的时间不一样。
#include<bits/stdc++.h>
using namespace std; int n,m,dp[][] = {};
string s[]; int main()
{
ios::sync_with_stdio();
cin >> n >> m;
for(int i = ;i <= n;i++)
{
cin >> s[i];
s[i] = " "+s[i];
}
int t;
for(t = ;t <= n;t++)
{
int flag = ;
for(int j = ;j <= m+;j++)
{
if(s[t][j] == '') flag = ;
}
if(flag) break;
}
if(t == n+)
{
cout << << endl;
return ;
}
dp[][n+] = -;
dp[][n+] = 1e9;
for(int i = n;i >= t;i--)
{
int l = m+;
int r = ;
for(int j = m+;j >= ;j--)
{
if(s[i][j] == '') l = j;
}
for(int j = ;j <= m+;j++)
{
if(s[i][j] == '') r = j;
}
if(i == t)
{
cout << min(dp[][i+]+r,dp[][i+]+m+-l) << endl;
return ;
}
dp[][i] = min(dp[][i+]+m+,dp[][i+]+*(r-)+);
dp[][i] = min(dp[][i+]+m+,dp[][i+]+*(m+-l)+);
}
return ;
}
C.二分个数,注意long long。
#include<bits/stdc++.h>
using namespace std; int n,s;
long long a[],b[]; bool ok(int x)
{
for(int i = ;i <= n;i++) b[i] = a[i]+(long long)x*i;
sort(b+,b++n);
long long sum = ;
for(int i = ;i <= x;i++) sum += b[i];
return sum <= s;
}
int main()
{
ios::sync_with_stdio();
cin >> n >> s;
for(int i = ;i <= n;i++) cin >> a[i];
int l = ,r = n;
while(l < r)
{
int mid = (l+r+)/;
if(ok(mid)) l = mid;
else r = mid-;
}
for(int i = ;i <= n;i++) b[i] = a[i]+(long long)l*i;
sort(b+,b++n);
long long sum = ;
for(int i = ;i <= l;i++) sum += b[i];
cout << l << " " << sum << endl;
return ;
}
D.建一个有向图,前面的requests组成的是森林或树,再加一个后,若形成了环,则x和x的子孙都会cry,否则没有人会cry。
对于1e5的queries,我们先预处理每个节点的子孙个数和和dfs序,然后判断就简单了。
#include<bits/stdc++.h>
using namespace std; int n,m,k,q,cnt = ,pre[] = {},l[],r[],ok[] = {},sum[];
vector<int> v[]; void dfs(int now)
{
++cnt;
l[now] = cnt;
sum[now] = ;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
dfs(t);
sum[now] += sum[t];
}
r[now] = cnt;
}
int main()
{
ios::sync_with_stdio();
cin >> n >> m >> k >> q;
while(k--)
{
int x,y;
cin >> x >> y;
if(pre[y] != )
{
v[pre[y]].push_back(x);
ok[x] = ;
}
pre[y] = x;
}
for(int i = ;i <= n;i++)
{
if(!ok[i]) dfs(i);
}
while(q--)
{
int x,y;
cin >> x >> y;
if(pre[y] && l[x] <= l[pre[y]] && r[pre[y]] <= r[x]) cout << sum[x] << endl;
else cout << << endl;
}
return ;
}
E.普通nim游戏判断过程为每堆石子个数的异或。若增加一个可以增加石子的操作,结果相同,因为一个人加的另一个人可以减去相同数量。我们建树,把跟叶子节点向上相差偶数个节点的点作为堆,其余的作为可以增加的石子。那么判断过程为这些堆的异或。ok为0则成立,我们现在要使ok变为0。
根据异或性质,在两类节点之间可以成立的交换操作为ok^a[i]^b[i]==0的两个点。
另外,若ok已经为0,我们可以进行节点同类中交换。
#include<bits/stdc++.h>
using namespace std; int n,a[],h[];
map<int,int> mp;
vector<int> v[]; void dfs(int now)
{
int x = ;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
dfs(t);
x = max(h[t],x);
}
h[now] = x+;
} int main()
{
ios::sync_with_stdio();
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i];
for(int i = ;i <= n;i++)
{
int x;
cin >> x;
v[x].push_back(i);
}
dfs();
int ok = ,cnt1 = ;
for(int i = ;i <= n;i++)
{
if(h[i]%)
{
ok ^= a[i];
cnt1++;
mp[a[i]]++;
}
}
int cnt2 = n-cnt1;
long long ans = ;
if(ok == ) ans = (long long)cnt1*(cnt1-)/+(long long)cnt2*(cnt2-)/;
for(int i = ;i <= n;i++)
{
if(h[i]% == ) ans += mp[ok^a[i]];
}
cout << ans << endl;
return ;
}
Codeforces_812的更多相关文章
随机推荐
- antDeaign-form-getFieldDecorator 使用注意事项
2020-01-06 antDeaign-form-getFieldDecorator 使用注意事项 一.使用getFieldDecorator之前,必须先使用 Form.create({ })(Fo ...
- 22.Python安装和卸载第三方模块方法
安装和卸载第三方开源模块的步骤:下例,安装urllib3模块的步骤. 1.安装开源模块步骤: 按键盘windows键+r键,输出cmd回车.或开始->windows系统->命令提示符: 输 ...
- ATOM插件及快捷键
xml-formatter :https://atom.io/packages/xml-formatter xml格式化工具 SHIFT-CTRL-X:快速格式化 SHIFT-CTRL-M:移除换行符 ...
- 【DPDK】【Multiprocess】一个dpdk多进程场景的坑
[前言] 这是一个隐藏了近3年的问题,理论上只要用到DPDK multiprocess场景的都会遇到这个问题,具体出不出问题只能说是看运气,即使不出问题也仍然是一个风险. [场景] 我先描述一下这个问 ...
- cogs 173. 词链 字典树模板
173. 词链 ★★☆ 输入文件:link.in 输出文件:link.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述]给定一个仅包含小写字母的英文单词表,其中每个 ...
- NOIP2004普及组第3题 FBI树
/* 1106: NOIP2004普及组第3题 FBI树 时间限制: 1 Sec 内存限制: 128 MB 提交: 10 解决: 9 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 我 ...
- Java 使用Scanner时的NoSuchElementException异常
做实验时设计了一个类,在类中的两个不同函数中分别创建了两个Scanner对象,并且在各个函数的结尾使用了close()方法,结果在运行时产生了NoSuchElementException异常. 实验的 ...
- Java标签学习
今天早上看Java编程思想第四章控制执行流程,本来很简单的一些东西,但是突然看到了goto发现自己以前还真的没怎么用过,不过Java中对goto作为保留关键字,而是提供了一个叫标签的东西,我们一起来看 ...
- [bzoj3930] [洛谷P3172] [CQOI2015] 选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- 最强PostMan使用教程
最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...