Gym 101810
友情提示:
这篇题解并没有GJKL,因为我也不会,而且看别人代码也看不懂,而且问学长还不给我讲!hmc:这个题巨麻烦,我只能说balabala。我不学了我退役了啊!
A:这傻逼题我从开头wa了四个小时然后我发现我写了各种奇葩东西,

嗯不说了。很明显要么在某线段起点开始要么在某线段终点结束。然后枚举段点二分就行。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+;
struct Node{
ll l,r,v;
}node[N];
bool cmp(Node a,Node b){
return a.r<b.r;
}
ll t,m;ll k;
ll l[N],r[N],v[N],pre[N];
int main(){//什么东西啊这是
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>m>>k;
for(int i=;i<=m;i++){
cin>>node[i].l>>node[i].r>>node[i].v;
}
sort(node+,node++m,cmp);
for(int i=;i<=m;i++){
l[i]=node[i].l;
r[i]=node[i].r;
v[i]=node[i].v;
pre[i]=pre[i-]+(r[i]-l[i]+)*v[i];
}
l[m+]=2e9+;r[m+]=2e9+;
pre[m+]=pre[m]+;
ll ans = ;
for(int i=;i<=m;i++){
int id = lower_bound(r,r+m+,l[i]+k-)-r;//
ll tmp = pre[id-]-pre[i-];
if(l[i]+k->=l[id])
tmp+=(l[i]+k-l[id])*v[id];
ans = max(ans,tmp);
}
for(int i=;i<=m;i++){
int id = lower_bound(l,l+m+,r[i]-k+)-l;
ll tmp = pre[i]-pre[id-];
if(r[i]-k+<=r[id-]){
tmp+=(r[id-]-(r[i]-k+)+)*v[id-];
}
ans = max(ans,tmp);
}
cout<<ans<<endl;
}
}
/**
1
1 1000000000
2 1000000000 1000000000
*/
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;
int t;
ll x,n;
ll ans[];
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
memset(ans,, sizeof(ans));
cin>>x>>n;
if(n==){
cout<<x<<endl;
continue;
}
ll tmp = x/(*n-);
x%=*n-;
ans[]+=tmp;ans[n]+=tmp;
for(int i=;i<n;i++)
ans[i]+=tmp*;
for(int i=;i<=n;i++){
if(x<=) break;
ans[i]++;x--;
}
for(int i=n-;i>=;i--){
if(x<=) break;
ans[i]++,x--;
}
for(int i=;i<=n;i++){
cout<<ans[i]<<' ';
}
cout<<endl;
}
}
C:读错题wa自闭了。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int main(){
ios::sync_with_stdio(false);
int t;ll n;
cin>>t;
while (t--){
cin>>n;
bool flag = false;
int ans = ;
for(int i=;i<=;i++){
if(!(n&(1ll<<i))){
ans++;
} else
break;
}
cout<<ans+<<endl;
}
}
D:别想什么横着竖着花里胡哨的,就一排一排的交错放就行。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int t;
ll n,m;
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n>>m;
ll ans = 1e17;
if(n==){
cout<<(m+)/<<endl;
continue;
}
if(m==){
cout<<(n+)/<<endl;
continue;
}
if(n%==){
if(m%==){
ans = min(ans,n/*(m+));
ans = min(ans,m/*(n+));
} else{
ans = min(ans,n/*(m+));
ans = min(ans,m*n/+m/);
}
} else{
if(m%==){
ans = min(ans,m/*(n+));
ans = min(ans,n*m/+n/);
} else{
ans = min(ans,n*(m+)/);
ans = min(ans,m*(n+)/);
}
}
cout<<ans<<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+;
const int N = 1E5+;
int t;
int n;
ll a[N];
ll pre[N];
ll f[N];
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n;
pre[]=1ll;
for(int i=;i<=n;i++) {
cin >> a[i];
pre[i] = pre[i - ] * a[i] % mod;
}
f[]=a[]-;
for(int i=;i<=n;i++){
f[i]=(a[i]*f[i-]+pre[i-]*(a[i]-))%mod;
}
cout<<f[n]<<endl;
}
}
F:我很知趣的没用memset,被这个东西坑死太多次了,然后枚举每个ai就完了
#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 int N = 1e5+;
int t,n,a[N];
int vis[*N];
int qaq(int x){
int tmp = x;
for(int i=;i*i<=x;i++){
if(x%i==){
if(vis[i]) {
tmp = min(tmp, i);
break;
}
if(vis[x/i]) {
tmp = min(tmp, x/i);
}
}
}
return tmp;
}
vector<int> v;//***
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n;
for(int i=;i<=n;i++){
cin>>a[i];
vis[a[i]]=;
v.push_back(a[i]);
}
ll sum = ;
for(int i=;i<=n;i++){
a[i] = qaq(a[i]);
sum+=a[i];
}
for(auto a:v){
vis[a]=;
}
v.clear();
cout<<sum<<endl;
}
}
H:。。。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int main(){
ios::sync_with_stdio(false);
int t,n,a[];
cin>>t;
while (t--){
cin>>n;
for(int i=;i<=*n;i++)
cin>>a[i];
int maxx = ;
for(int i=;i<=*n;i++){
maxx = max(maxx,a[i]+a[*n-i+]);
}
cout<<maxx<<endl;
}
}
I:。。。
#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int t,x,n;
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>x>>n;
int tmp = x/n;
if(tmp==){
cout<<-<<endl;
continue;
}
if(x%n==){
for(int i=;i<=n;i++)cout<<tmp<<' ';
} else{
vector<int> ans;
for(int i=;i<=x%n;i++)
ans.push_back(tmp+);
for(int i=x%n;i<n;i++)
ans.push_back(tmp);
reverse(ans.begin(),ans.end());
for(auto a: ans) cout<<a<<' ';
}
cout<<endl;
}
}
M:lca板子题,用的cincout然后tle三发自闭了。快读大法好
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+;
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;
}
struct Node{
int to,v1,v2;
};
vector<Node>g[N];
int s1[N],s2[N];
int t,n,q;
int par[N][],dep[N],deg[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(int i=;i<g[v].size();i++){
int u = g[v][i].to;
if(u==fa)
continue;
s1[u]=s1[v]+g[v][i].v1;//下来
s2[u]=s2[v]+g[v][i].v2;//上去
//down[v]+=g[v][i].v1+g[v][i].v2;
dfs(u,v);
//down[v]+=down[u];
}
}
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;
else
x=par[x][i],y=par[y][i];
}
return par[x][];
}
void init(){
for(int i=;i<=1e5;i++)
g[i].clear();
memset(par,, sizeof(par));
memset(dep,, sizeof(dep));
memset(deg,, sizeof(deg));
memset(s1,, sizeof(s1));
memset(s2,, sizeof(s2));
}
int main(){
t = read();
while (t--){
init();
cin>>n;
int u,v,c1,c2;
int all = ;
for(int i=;i<n;i++){
u=read();v=read();c1=read();c2=read();
deg[u]++;
deg[v]++;
all+=c1+c2;
g[u].push_back(Node{v,c1,c2});
g[v].push_back(Node{u,c2,c1});
}
for(int i=;i<=n;i++){
if(deg[i]==){
dfs(i,);
break;
}
}
q=read();
while (q--){
u=read();v=read();
int baba = lca(u,v);
int ans = all;
ans -= s2[v]-s2[baba];
ans -= s1[u]-s1[baba];
printf("%d\n",ans);
}
}
}
Gym 101810的更多相关文章
- gym 101810 M. Greedy Pirate (LCA)
题目:https://codeforc.es/gym/101810/problem/M 题意:给 你一颗树,下面有m次查询,求u->v的最大值是多少,输入两点之间都会有两条边,正边有正权,反边有 ...
- Gym - 101810H ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- Gym - 101810F ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...
- Gym - 101810E ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...
- Gym - 101810D ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- Gym - 101810C ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- Gym - 101810B ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- Gym - 101810A ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810/problem/A 大模拟,写崩了,代码借队友的...... 注意处理段与段的连接问题: #include&l ...
- [ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)]
https://codeforces.com/gym/101810 A. Careful Thief time limit per test 2.5 s memory limit per test 2 ...
随机推荐
- JavaScript 中回调地狱的今生前世
1. 讲个笑话 JavaScript 是一门编程语言 2. 异步编程 JavaScript 由于某种原因是被设计为单线程的,同时由于 JavaScript 在设计之初是用于浏览器的 GUI 编程,这也 ...
- SharePoint 修改用户属性User Name
前言 最近,碰到一个奇怪的事情,在SharePoint里的用户,如果显示方式显示为登录名(Account)的方式,显示为空.如下图: 1.经过查找,发现是因为用户属性 User name为空造成的,如 ...
- Android的Databinding-RecyleView绑定
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserHolder> { private static ...
- java调用第三方的webservice应用实例
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...
- php: 统计在线人数
<?php $filename='online.txt';//数据文件 $cookiename='VGOTCN_OnLineCount';//cookie名称 $onlinetime=60;// ...
- 【VS2019】F12跳转到源码,关闭浏览器不停止项目【转】
[VS2019]F12跳转到源码 1.工具->选项 2.文本编辑器->C#->高级->勾选支持导航到反编译源码 3.关闭浏览器不停止项目
- 分析轮子(九)- Cloneable.java
注:玩的是JDK1.7版本 一:Cloneable.java 接口也是标记接口,所以,它没有任何方法和属性,实现此接口表示的意思是:可以调用 Object.java 类的 clone() 方法,进行简 ...
- Linksys WRT610n V2 刷ddwrt后安装entware-ng,使用opkg
安装步骤很简单,首先启用usb.jffs.等. 然后: mkdir -p /jffs/opt mount -o bind /jffs/opt /opt wget -O - http://pkg.ent ...
- Android Studio创建JAR/AAR库
[时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,jar,aar,library] 0 引言 最近在工作中遇到了升级Android S ...
- const引用和函数占位参数遇上默认参数以及内联函数
1.const引用: 但是加上const之后是可以的,const int &a=100;就不会报错了. 2.函数占位参数: 如果给最后的占位参数加上默认值: 3.内联函数 内联只是对编译器发起 ...