R 540
好久没写题解了嘻嘻嘻,昨天补edu自闭了一天还没补完fg这div3令人愉悦。
A:
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
int q;ll n,a,b;
int main(){
ios::sync_with_stdio(false);
cin>>q;
while (q--){
cin>>n>>a>>b;
if(*a<=b){
cout<<n*a<<endl;
} else{
if(n%==){
cout<<n/*b<<endl;
} else{
cout<<n/*b+a<<endl;
}
}
}
}
B:枚举每个删掉的,维护奇偶数前缀和。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 2e5+;
int n,a[N],odd[N],even[N];
int main(){
n=read();
for(int i=;i<=n;i++){
a[i]=read();
odd[i]=odd[i-];
even[i]=even[i-];
if(i&){
odd[i]+=a[i];
} else{
even[i]+=a[i];
}
}
int ans=;
for(int i=;i<=n;i++){
ll s1=odd[i-]+even[n]-even[i];
ll s2=even[i-]+odd[n]-odd[i];
if(s1==s2){
ans++;
}
}
cout<<ans<<endl;
}
C:模拟,没啥好说的。注意偶数必须全是4的倍数,奇数的情况 只能有一个奇数,4的倍数大于(n/2)*(n/2)。
然后填就行了。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
int n,a[][],c[],num[];
int main(){
n=read();
for(int i=;i<=n*n;i++){
c[i]=read();
num[c[i]]++;
}
if(n%==){
for(int i=;i<=;i++){
if(num[i]%){
cout<<"NO";
exit();
}
}
cout<<"YES"<<endl;
int k=;
for(int i=;i<n/;i++){
for(int j=;j<n/;j++){
for(;k<=;){
if(num[k]>=){
a[i][j]=a[n-i-][j]=a[i][n-j-]=a[n-i-][n-j-]=k;
num[k]-=;
break;
} else{
k++;
}
}
}
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
} else{
int f=;
int cnt=;
for(int i=;i<=;i++){
if(num[i]&){
if(f){
cout<<"NO"<<endl;
exit();
} else{
f=i;
num[i]--;
}
}
if(num[i]>=){
cnt+=num[i]/;
}
}
if(cnt<(n/)*(n/)){
cout<<"NO"<<endl;
exit();
}
int k=;
a[n/+][n/+]=f;
for(int i=;i<=n/;i++){
for(int j=;j<=n/;j++){
for(;k<=;){
if(num[k]>=){
num[k]-=;
a[i][j]=a[i][n-j+]=a[n-i+][j]=a[n-i+][n-j+]=k;
break;
} else{
k++;
}
}
}
}
k=;
for(int i=;i<=n/;i++){
for(;k<=;){
if(num[k]>=){
a[i][n/+]=a[n-i+][n/+]=k;
num[k]-=;
break;
} else
k++;
}
}
k=;
for(int i=;i<=n/;i++){
for(;k<=;){
if(num[k]>=){
a[n/+][i]=a[n/+][n-i+]=k;
num[k]-=;
break;
} else
k++;
}
}
cout<<"YES"<<endl;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
}
D:二分,和昨晚上eduC异曲同工之妙
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 2e5+;
int n,m,a[N];
bool cmp(int a,int b){
return a>b;
}
int check(int x){
ll ans=;
for(int i=;i<=n;i++){
int tmp=(i-)/x;
if(a[i]-tmp<=)
break;
ans+=a[i]-tmp;
}
return ans>=m;
}
int main(){
n=read();m=read();
ll sum=;
for(int i=;i<=n;i++){
a[i]=read();
sum+=a[i];
}
if(sum<m){
cout<<-;
exit();
}
sort(a+,a++n,cmp);
int l=,r=n;
while (l<=r){
int mid=l+r>>;
if(check(mid)){
r=mid-;
} else{
l=mid+;
}
}
cout<<l<<endl;
}
E:**题。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
ll n,k;
void check(int x){
if(x==n)
exit();
}
int main(){
n=read();k=read();
if(n>k*k-k){
cout<<"NO";
} else{
cout<<"YES"<<endl;
int cnt=;
for(int l=;l<=k;l++){
for(int i=;i+l<=k;i++){
printf("%d %d\n",i,i+l);
cnt++;
check(cnt);
}
for(int i=k;i-l>=;i--){
printf("%d %d\n",i,i-l);
cnt++;
check(cnt);
}
}
}
}
F1:维护一下每颗子树里两种颜色的数量,然后枚举边
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 3e5+;
int n,s[N][],a[N],x[N],y[N],dep[N];
vector<int> g[N];
void dfs(int v,int fa){
dep[v]=dep[fa]+;
if(a[v]==)
s[v][]++;
if(a[v]==)
s[v][]++;
for(auto u:g[v]){
if(u==fa)continue;
dfs(u,v);
s[v][]+=s[u][];
s[v][]+=s[u][];
}
}
int main(){
n=read();
for(int i=;i<=n;i++)
a[i]=read();
for(int i=;i<n;i++){
x[i]=read();
y[i]=read();
g[x[i]].push_back(y[i]);
g[y[i]].push_back(x[i]);
}
dfs(,);
int ans=;
for(int i=;i<n;i++){
int u=x[i],v=y[i];
if(dep[u]>dep[v])
swap(u,v);
if(s[][]-s[v][]==||s[][]-s[v][]==){
if(s[v][]==||s[v][]==){
ans++;
}
}
}
cout<<ans<<endl;
}
F2:好难不会哇。
抄看的学长的代码,然后让另一个学长给我讲了讲。。。
首先对于两个颜色相同的点 xy他们一定会被分到一起去,所以我们可以暴力把中间的点染色,顺便判一下无解的情况,就是中间夹着一个其他颜色的。
然后开始dp。
我们,(7个小时之后),好了,我现在又不会了。不管了。明早高铁摸了。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = ;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y) {
if (!b) {
d = a;
x = ;
y = ;
} else {
exgcd(b, a % b, d, y, x);
y -= x * (a / b);
}
}
ll inv(ll a, ll p) {
ll d, x, y;
exgcd(a, p, d, x, y);
return d == ? (x+p)%p : -;
}
const int N = 3e5+;
vector<int> g[N],c[N];
int par[N][],dep[N];
void dfs(int v,int fa){
dep[v]=dep[fa]+;
par[v][]=fa;
for(int i=;(<<i)<=dep[fa];i++)
par[v][i]=par[par[v][i-]][i-];
for(auto u:g[v]){
if(u==fa)continue;
dfs(u,v);
}
}
int lca(int x,int y){
if(dep[x]>dep[y])swap(x,y);
for(int i=;i>=;i--)
if(dep[x]<=dep[y]-(<<i))
y=par[y][i];
if(x==y)return x;
for(int i=;i>=;i--){
if(par[x][i]==par[y][i])continue;
x=par[x][i],y=par[y][i];
}
return par[x][];
}
int n,k,a[N];
void slove(){
for(int i=;i<=k;i++){
int lca_=c[i][];
for(auto u:c[i])
lca_=lca(lca_,u);
for(auto u:c[i]){
if(u==lca_)continue;
int v=u;
while (v!=lca_){
v=par[v][];
if(a[v]!=&&a[v]!=i){
cout<<<<endl;
exit();
}
if(a[v]==i)break;
a[v]=i;
}
}
}
}
ll dp[N][];
void dfs2(int v,int fa){
ll tmp=;
for(auto u:g[v]){
if(u==fa)continue;
dfs2(u,v);
tmp=tmp*(dp[u][]+dp[u][])%mod;
}
if(a[v]==){
dp[v][]=tmp;dp[v][]=;
for(auto u:g[v]){
if(u==fa)continue;
ll x=tmp*inv(dp[u][]+dp[u][],mod)%mod;
x=x*dp[u][]%mod;
dp[v][]=(dp[v][]+x)%mod;
}
} else{
dp[v][]=;dp[v][]=tmp;
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>a[i];
c[a[i]].push_back(i);
}
int x,y;
for(int i=;i<n;i++){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(,);
slove();
dfs2(,);
cout<<dp[][];
}
R 540的更多相关文章
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 利用python进行数据分析2_数据采集与操作
txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- R语言 系统聚类分析1
#聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...
- 基于R语言的结构方程:lavaan简明教程 [中文翻译版]
lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...
- 用R做时间序列分析之ARIMA模型预测
昨天刚刚把导入数据弄好,今天迫不及待试试怎么做预测,网上找的帖子跟着弄的. 第一步.对原始数据进行分析 一.ARIMA预测时间序列 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之 ...
- R语言:R2OpenBUGS
R语言:R2OpenBUGS 用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果 as.bugs.array 转换成bugs object ...
- UVA.540 Team Queue (队列)
UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...
- Codeforces Round #540 (Div. 3) 部分题解
Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...
随机推荐
- fzu1062 洗牌问题(思路模拟)
http://acm.fzu.edu.cn/problem.php?pid=1062 一开始想暴力找规律,没看出来..然后开始推,推测根据1再次返回第一个的时候顺序也复原,然后想以此推导出一个规律公式 ...
- MySql的优化步骤
MySql优化的一般步骤: 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 sho ...
- Unity Inspector面板常用的属性
在扩展Unity的时候,往往会用到一些属性,这里将常用的列一下. 1.属性只读: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngin ...
- 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll" 上
开始 -> 运行 -> inetmgr -> 应用程序池 -> 找到 我的网站对象的 程序池 -> 右键 -> 高级设置 -> 启用32位应用程序 由 fal ...
- 提升SQLite数据插入效率低、速度慢的方法(转)
前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...
- 微信小程序生成海报分享:canvas绘制文字溢出如何换行
主要思路: 1.先分割为字符串数组,然后一个字一个字绘图,利用ctx.measureText(string) 方法,获取绘制后的宽度,判断宽度在多少内就另起一行,再将各行拼成一个字符串 2.计算另起的 ...
- win7下Google谷歌浏览器上传下载卡死无响应
问题背景:win7,谷歌浏览器上传选择图片之后,页面卡死无响应. 以前解决过类似问题就是input type="file"的accept属性当为通配符时,会出现这种情况,改为具体的 ...
- CSS 小技巧(不定时更新)
1.Web 文本中的省略号 在Web开发中,对于一种情况很常见.那就是,文本太长,而放置文本的容器不够长,而我们又不想让文本换行,所以,我们想使用省略号来解决这个问题.在今天HTML的标准中并没有相关 ...
- AI创业的技术方案选择
观察了许多初创公司技术方案的选择,我总结基本遵循8个字:快速灵活,物美价廉.我们也应该根据自身实际情况,跳出束缚与时俱进,选择智能互联网时代最有力的技术和工具. 基础编程语言 候选者:C#/C++/P ...
- 51单片机stack堆栈
一般编译器的堆栈用于保存局部变量.函数的参数.函数的返回值.中断上下文信息等.但Keil对局部变量.函数参数预先分配空间(放在静态全局变量区),Keil的堆栈只是用于保存函数嵌套调用的PC.中断上下文 ...