友情提示:

这篇题解并没有GJKL,因为我也不会,而且看别人代码也看不懂,而且问学长还不给我讲!hmc:这个题巨麻烦,我只能说balabala。我不学了我退役了啊!

A:这傻逼题我从开头wa了四个小时然后我发现我写了各种奇葩东西,

嗯不说了。很明显要么在某线段起点开始要么在某线段终点结束。然后枚举段点二分就行。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 1e5+;
  5. struct Node{
  6. ll l,r,v;
  7. }node[N];
  8. bool cmp(Node a,Node b){
  9. return a.r<b.r;
  10. }
  11. ll t,m;ll k;
  12. ll l[N],r[N],v[N],pre[N];
  13. int main(){//什么东西啊这是
  14. ios::sync_with_stdio(false);
  15. cin>>t;
  16. while (t--){
  17. cin>>m>>k;
  18. for(int i=;i<=m;i++){
  19. cin>>node[i].l>>node[i].r>>node[i].v;
  20. }
  21. sort(node+,node++m,cmp);
  22. for(int i=;i<=m;i++){
  23. l[i]=node[i].l;
  24. r[i]=node[i].r;
  25. v[i]=node[i].v;
  26. pre[i]=pre[i-]+(r[i]-l[i]+)*v[i];
  27. }
  28. l[m+]=2e9+;r[m+]=2e9+;
  29. pre[m+]=pre[m]+;
  30. ll ans = ;
  31. for(int i=;i<=m;i++){
  32. int id = lower_bound(r,r+m+,l[i]+k-)-r;//
  33. ll tmp = pre[id-]-pre[i-];
  34. if(l[i]+k->=l[id])
  35. tmp+=(l[i]+k-l[id])*v[id];
  36. ans = max(ans,tmp);
  37. }
  38. for(int i=;i<=m;i++){
  39. int id = lower_bound(l,l+m+,r[i]-k+)-l;
  40. ll tmp = pre[i]-pre[id-];
  41. if(r[i]-k+<=r[id-]){
  42. tmp+=(r[id-]-(r[i]-k+)+)*v[id-];
  43. }
  44. ans = max(ans,tmp);
  45. }
  46. cout<<ans<<endl;
  47. }
  48. }
  49. /**
  50. 1
  51. 1 1000000000
  52. 2 1000000000 1000000000
  53. */

B:这。。。傻逼题吧。。。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. int t;
  7. ll x,n;
  8. ll ans[];
  9. int main(){
  10. ios::sync_with_stdio(false);
  11. cin>>t;
  12. while (t--){
  13. memset(ans,, sizeof(ans));
  14. cin>>x>>n;
  15. if(n==){
  16. cout<<x<<endl;
  17. continue;
  18. }
  19. ll tmp = x/(*n-);
  20. x%=*n-;
  21. ans[]+=tmp;ans[n]+=tmp;
  22. for(int i=;i<n;i++)
  23. ans[i]+=tmp*;
  24. for(int i=;i<=n;i++){
  25. if(x<=) break;
  26. ans[i]++;x--;
  27. }
  28. for(int i=n-;i>=;i--){
  29. if(x<=) break;
  30. ans[i]++,x--;
  31. }
  32. for(int i=;i<=n;i++){
  33. cout<<ans[i]<<' ';
  34. }
  35. cout<<endl;
  36. }
  37. }

C:读错题wa自闭了。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. int main(){
  7. ios::sync_with_stdio(false);
  8. int t;ll n;
  9. cin>>t;
  10. while (t--){
  11. cin>>n;
  12. bool flag = false;
  13. int ans = ;
  14. for(int i=;i<=;i++){
  15. if(!(n&(1ll<<i))){
  16. ans++;
  17. } else
  18. break;
  19. }
  20. cout<<ans+<<endl;
  21. }
  22. }

D:别想什么横着竖着花里胡哨的,就一排一排的交错放就行。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. int t;
  7. ll n,m;
  8. int main(){
  9. ios::sync_with_stdio(false);
  10. cin>>t;
  11. while (t--){
  12. cin>>n>>m;
  13. ll ans = 1e17;
  14. if(n==){
  15. cout<<(m+)/<<endl;
  16. continue;
  17. }
  18. if(m==){
  19. cout<<(n+)/<<endl;
  20. continue;
  21. }
  22. if(n%==){
  23. if(m%==){
  24. ans = min(ans,n/*(m+));
  25. ans = min(ans,m/*(n+));
  26. } else{
  27. ans = min(ans,n/*(m+));
  28. ans = min(ans,m*n/+m/);
  29. }
  30. } else{
  31. if(m%==){
  32. ans = min(ans,m/*(n+));
  33. ans = min(ans,n*m/+n/);
  34. } else{
  35. ans = min(ans,n*(m+)/);
  36. ans = min(ans,m*(n+)/);
  37. }
  38. }
  39. cout<<ans<<endl;
  40. }
  41. }

E:运用小学数学知识可以很轻松的发现这个递推式吧,写在代码里了。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. const ll mod = 1e9+;
  7. const int N = 1E5+;
  8. int t;
  9. int n;
  10. ll a[N];
  11. ll pre[N];
  12. ll f[N];
  13. int main(){
  14. ios::sync_with_stdio(false);
  15. cin>>t;
  16. while (t--){
  17. cin>>n;
  18. pre[]=1ll;
  19. for(int i=;i<=n;i++) {
  20. cin >> a[i];
  21. pre[i] = pre[i - ] * a[i] % mod;
  22. }
  23. f[]=a[]-;
  24. for(int i=;i<=n;i++){
  25. f[i]=(a[i]*f[i-]+pre[i-]*(a[i]-))%mod;
  26. }
  27. cout<<f[n]<<endl;
  28. }
  29. }

F:我很知趣的没用memset,被这个东西坑死太多次了,然后枚举每个ai就完了

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. const int N = 1e5+;
  7. int t,n,a[N];
  8. int vis[*N];
  9. int qaq(int x){
  10. int tmp = x;
  11. for(int i=;i*i<=x;i++){
  12. if(x%i==){
  13. if(vis[i]) {
  14. tmp = min(tmp, i);
  15. break;
  16. }
  17. if(vis[x/i]) {
  18. tmp = min(tmp, x/i);
  19. }
  20. }
  21. }
  22. return tmp;
  23. }
  24. vector<int> v;//***
  25. int main(){
  26. ios::sync_with_stdio(false);
  27. cin>>t;
  28. while (t--){
  29. cin>>n;
  30. for(int i=;i<=n;i++){
  31. cin>>a[i];
  32. vis[a[i]]=;
  33. v.push_back(a[i]);
  34. }
  35. ll sum = ;
  36. for(int i=;i<=n;i++){
  37. a[i] = qaq(a[i]);
  38. sum+=a[i];
  39. }
  40. for(auto a:v){
  41. vis[a]=;
  42. }
  43. v.clear();
  44. cout<<sum<<endl;
  45. }
  46. }

H:。。。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. int main(){
  7. ios::sync_with_stdio(false);
  8. int t,n,a[];
  9. cin>>t;
  10. while (t--){
  11. cin>>n;
  12. for(int i=;i<=*n;i++)
  13. cin>>a[i];
  14. int maxx = ;
  15. for(int i=;i<=*n;i++){
  16. maxx = max(maxx,a[i]+a[*n-i+]);
  17. }
  18. cout<<maxx<<endl;
  19. }
  20. }

I:。。。

  1. #include <bits/stdc++.h>
  2. #define mk(a,b) make_pair(a,b)
  3. #define pii pair<int,int>
  4. using namespace std;
  5. typedef long long ll;
  6. int t,x,n;
  7. int main(){
  8. ios::sync_with_stdio(false);
  9. cin>>t;
  10. while (t--){
  11. cin>>x>>n;
  12. int tmp = x/n;
  13. if(tmp==){
  14. cout<<-<<endl;
  15. continue;
  16. }
  17. if(x%n==){
  18. for(int i=;i<=n;i++)cout<<tmp<<' ';
  19. } else{
  20. vector<int> ans;
  21. for(int i=;i<=x%n;i++)
  22. ans.push_back(tmp+);
  23. for(int i=x%n;i<n;i++)
  24. ans.push_back(tmp);
  25. reverse(ans.begin(),ans.end());
  26. for(auto a: ans) cout<<a<<' ';
  27. }
  28. cout<<endl;
  29. }
  30. }

M:lca板子题,用的cincout然后tle三发自闭了。快读大法好

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 1e5+;
  5. inline int read() {
  6. int X=,w=; char c=getchar();
  7. while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
  8. while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
  9. return X*w;
  10. }
  11. struct Node{
  12. int to,v1,v2;
  13. };
  14. vector<Node>g[N];
  15. int s1[N],s2[N];
  16. int t,n,q;
  17. int par[N][],dep[N],deg[N];
  18. void dfs(int v,int fa){
  19. dep[v]=dep[fa]+;
  20. par[v][]=fa;
  21. for(int i=;(<<i)<=dep[fa];i++)
  22. par[v][i]=par[par[v][i-]][i-];
  23. for(int i=;i<g[v].size();i++){
  24. int u = g[v][i].to;
  25. if(u==fa)
  26. continue;
  27. s1[u]=s1[v]+g[v][i].v1;//下来
  28. s2[u]=s2[v]+g[v][i].v2;//上去
  29. //down[v]+=g[v][i].v1+g[v][i].v2;
  30. dfs(u,v);
  31. //down[v]+=down[u];
  32. }
  33. }
  34. int lca(int x,int y){
  35. if(dep[x]>dep[y])
  36. swap(x,y);
  37. for(int i=;i>=;i--)
  38. if(dep[x]<=dep[y]-(<<i))
  39. y = par[y][i];
  40. if(x==y)
  41. return x;
  42. for(int i=;i>=;i--) {
  43. if (par[x][i] == par[y][i])
  44. continue;
  45. else
  46. x=par[x][i],y=par[y][i];
  47. }
  48. return par[x][];
  49. }
  50. void init(){
  51. for(int i=;i<=1e5;i++)
  52. g[i].clear();
  53. memset(par,, sizeof(par));
  54. memset(dep,, sizeof(dep));
  55. memset(deg,, sizeof(deg));
  56. memset(s1,, sizeof(s1));
  57. memset(s2,, sizeof(s2));
  58. }
  59. int main(){
  60. t = read();
  61. while (t--){
  62. init();
  63. cin>>n;
  64. int u,v,c1,c2;
  65. int all = ;
  66. for(int i=;i<n;i++){
  67. u=read();v=read();c1=read();c2=read();
  68. deg[u]++;
  69. deg[v]++;
  70. all+=c1+c2;
  71. g[u].push_back(Node{v,c1,c2});
  72. g[v].push_back(Node{u,c2,c1});
  73. }
  74. for(int i=;i<=n;i++){
  75. if(deg[i]==){
  76. dfs(i,);
  77. break;
  78. }
  79. }
  80. q=read();
  81. while (q--){
  82. u=read();v=read();
  83. int baba = lca(u,v);
  84. int ans = all;
  85. ans -= s2[v]-s2[baba];
  86. ans -= s1[u]-s1[baba];
  87. printf("%d\n",ans);
  88. }
  89. }
  90. }

Gym 101810的更多相关文章

  1. gym 101810 M. Greedy Pirate (LCA)

    题目:https://codeforc.es/gym/101810/problem/M 题意:给 你一颗树,下面有m次查询,求u->v的最大值是多少,输入两点之间都会有两条边,正边有正权,反边有 ...

  2. Gym - 101810H ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  3. Gym - 101810F ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...

  4. Gym - 101810E ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...

  5. Gym - 101810D ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  6. Gym - 101810C ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  7. Gym - 101810B ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  8. Gym - 101810A ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810/problem/A 大模拟,写崩了,代码借队友的...... 注意处理段与段的连接问题: #include&l ...

  9. [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 ...

随机推荐

  1. django之模型层(model)--建表、查询、删除基础

    要说一个项目最重要的部分是什么那铁定数据了,也就是数据库,这篇就开始带大家走进django关于模型层model的使用,model主要就是操纵数据库不使用sql语句的情况下完成数据库的增删改查.本篇仅带 ...

  2. flask之基于DBUtils实现数据库连接池、本地线程、上下文

    本篇导航: 数据库连接池 本地线程 上下文管理 面向对象部分知识点解析 1.子类继承父类__init__的三种方式 class Dog(Animal): #子类 派生类 def __init__(se ...

  3. 用css实现自定义虚线边框

    开发产品功能的时候ui往往会给出虚线边框的效果图,于是乎,我们往往第一时间想到的是用css里的border,可是border里一般就提供两种效果,dashed或者dotted,ui这时就不满意了,说虚 ...

  4. curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.报错

    curl https 网站 出现报错 解决办法: You can use the domain name as usual but override the resolver like so: cur ...

  5. 如何在一小时内更新100篇文章?-Evernote Sync插件介绍

    上一篇"手把手教你制作微信小程序,开源.免费.快速搞定",已经教会你如何快速制作一个小程序,但作为资讯类小程序,内容不可少,并且还需要及时更新. 但是,如果让你复制粘贴,可能还需要 ...

  6. 发现一个强大的可视化第三方库pyecharts

    pyecharts 目前尚在不断的更新中,值得重点研究和学习的图表库

  7. 基于cefsharp的用户浏览器

    技术:vc++2015   概述 用于需要制作一个浏览器 winfrom 中浏览器的插件有很多种 如:WebBrowser , Web.kit等 但用于比较稳定 功能齐全的还是cefsharp 详细 ...

  8. Jexus 5.4.6 on CentOS 6.6

    Mono 通过脚本安装 https://github.com/cjy37/linux-asp.net-installScript 版本 3.10 MongoDB 也可通过以上脚本安装 默认端口 270 ...

  9. 【转载】浅谈事件冒泡与事件捕获 - javascript 事件代理

    原文:https://segmentfault.com/a/1190000000749838 事件冒泡与事件捕获 事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发 ...

  10. hive SQL COALESCE 函数

    COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值.如果所有的表达式都是空 ...