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的更多相关文章
随机推荐
- 原生js获取下拉框下标
// 获取下拉框所选下标 传入下拉框的id function getselectscheckitemindex (idStr) { let o = document.getElementById(id ...
- mac使用python识别图形验证码
前言 最近在研究验证码相关的操作,所以准备记录下安装以及使用的过程.虽然之前对验证码的破解有所了解的,但是之前都是简单使用之后就不用了,没有记录一个详细的过程,所以后面再用起来也要重新从网上查找资料比 ...
- 曹工说Spring Boot源码(8)-- Spring解析xml文件,到底从中得到了什么(util命名空间)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Spring Cloud Stream消息驱动之RocketMQ入门(一)
SpringCloudStream目前支持的中间件有RabbitMQ.Kafka,还有我最近在学习的RocketMQ,以下是我学习的笔记 学习Spring cloud Stream 可以先学习一下了解 ...
- MySQL故障演习
MySQL故障演习 接上次的 MySQL定时备份 该次实验主要是练习在MySQL数据库发生误删等意外情况下,利用全量备份文件和增量备份文件恢复数据. 1. 实验环境 -- 创建数据库 create d ...
- spring get方法 中文(UTF-8)乱码
问题: 前端用Get方法进行如下请求: 在浏览器中输入:http://localhost:8080/dmaList/ExportBySQL?sql=&names=分区级别&size=1 ...
- Java解析文件内容
本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符| ...
- 关于revit的外部扩展存储
最近被revit的外部扩展存储搞得死去活来,作为日后再次使用的预防针,此处随手留下印记,以作警示. 首先我们知道外部扩展存储ExtensibleStorage是revit提供给revit二次开发人员用 ...
- 机器学习-特征工程-Missing value和Category encoding
好了,大家现在进入到机器学习中的一块核心部分了,那就是特征工程,洋文叫做Feature Engineering.实际在机器学习的应用中,真正用于算法的结构分析和部署的工作只占很少的一部分,相反,用于特 ...
- dp - 求符合题意的序列的个数
The sequence of integers a1,a2,…,ak is called a good array if a1=k−1 and a1>0. For example, the s ...