冯志远0918

数列

时间限制: 1 Sec  内存限制: 256 MB
提交: 32  解决: 27
[提交][状态][讨论版]

题目描述

输入

输出

样例输入

3 5

样例输出

5

提示

宝藏

时间限制: 1 Sec  内存限制: 256 MB
提交: 65  解决: 43
[提交][状态][讨论版]

题目描述

输入

输出

样例输入

6
1 2 1
2 3 3
3 4 36
3 6 13
3 5 2
6 8 9 10 13 1

样例输出

30
29
28
10
30
16

提示

只打了两道题,第一题题忘记判断浮点运算了,被坑了10分.

第一题发现,新的数就是大数不断减小数而产生的数,因此可以发现去模,然后就可以了.

第二题一眼可以看出是树上dp,这道题,预处理关于该点位根的子树,离开,或者停留.

然后,分情况讨论,在找最小点的时候,需要寻找两个点,这个应该许多树上dp都是有的,

情况需要仔细,向上的情况,整棵树的情况,这些都需要细细考虑,有一些明显可以贪心的

应该直接优化,而不是浪费多余的代码,尝试了读入优化,从上面过来时,需要将上面加入或者不去上面,注意

最后去哪里,这个和双倍花费很有关系,一般做这些题的时候可以发现,三次经过时绝对不需要的,因此暴力可以

优化许多.

T1  

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6
 7 using namespace std;
 8
 9 long long x,y,z,ans;
10
11 int main()
12 {
13
14     scanf("%lld%lld",&x,&y);
15     ans=0;
16     while (x%y!=0)
17     {
18         if (x<y) swap(x,y);
19         ans=ans+x/y;
20         z=x,x=y,y=z%y;
21         if (y==0) break;
22     }
23     if (y!=0) ans=ans+x/y+1;
24     else ans+=1;
25     printf("%lld",ans);
26 }

T2

  1 #include<cstdio>
  2 #include<iostream>
  3 #include<algorithm>
  4 #include<cstring>
  5 #include<cmath>
  6
  7 #define ll long long
  8 #define N 300007
  9 #define inf 1e9+7
 10 using namespace std;
 11
 12 int n,a[N];
 13 int cnt,head[N],next[N*2],rea[N*2],cost[N*2];
 14 ll f[N],g[N],ckt[N],ckg[N],upd[N],up[N];
 15 bool boo[N];
 16
 17 inline int read()
 18 {
 19     int x=0;char ch=getchar();
 20     while(ch>‘9‘||ch<‘0‘) ch=getchar();
 21     while(ch>=‘0‘&&ch<=‘9‘)
 22     {
 23         x=x*10+ch-‘0‘;
 24         ch=getchar();
 25     }
 26     return x;
 27 }
 28 void add(int x,int y,int z)
 29 {
 30     cnt++;
 31     next[cnt]=head[x];
 32     rea[cnt]=y;
 33     cost[cnt]=z;
 34     head[x]=cnt;
 35 }
 36 void dfs_init(int x,int fa)
 37 {
 38     f[x]=g[x]=a[x];
 39     ll s=0;
 40     for(int i=head[x];i!=-1;i=next[i])
 41     {
 42         int v=rea[i],fee=cost[i];
 43         if(v!=fa)
 44         {
 45                dfs_init(v,x);
 46             s=s+max(0LL,f[v]-2*fee);
 47         }
 48     }
 49     upd[x]=s,f[x]=s+a[x];
 50     for(int i=head[x];i!=-1;i=next[i])
 51     {
 52         int v=rea[i],fee=cost[i];
 53         if(v!=fa)
 54         {
 55                ll left=s-max(0LL,f[v]-2*fee);
 56             g[x]=max(g[x],left+max(g[v],f[v])-fee+a[x]);
 57         }
 58     }
 59 }
 60 void dfs_solve(int x,int fa)
 61 {
 62     ll s=0,left=0;
 63     for(int i=head[x];i!=-1;i=next[i])
 64     {
 65         int v=rea[i],fee=cost[i];
 66         if(v!=fa) s=s+max(0LL,f[v]-2*fee);
 67     }
 68     s=s+max(0LL,ckt[x]);
 69     for(int i=head[x];i!=-1;i=next[i])
 70     {
 71         int v=rea[i],fee=cost[i];
 72         if(v!=fa)
 73         {
 74                left=s-max(0LL,f[v]-2*fee);
 75             up[v]=max(up[v],left-2*fee);
 76             ckt[v]=max(ckt[v],left-2*fee+a[v]);
 77         }
 78     }
 79     ll s1=0,s2=0,p1=0,p2=0;
 80     for(int i=head[x];i!=-1;i=next[i])
 81     {
 82         int v=rea[i],fee=cost[i];
 83         if(v!=fa)
 84         {
 85                left=s-max(0LL,f[v]-2*fee)+g[v]-fee;
 86             if(left>s1) s2=s1,p2=p1,s1=left,p1=v;
 87             else if(left>s2) s2=left,p2=v;
 88         }
 89     }
 90     left=s-max(0LL,ckt[x])+ckg[x];
 91     if(left>s1) s2=s1,p2=p1,s1=left,p1=x;
 92     else if(left>s2) s2=left,p2=x;
 93     for(int i=head[x];i!=-1;i=next[i])
 94     {
 95         int v=rea[i],fee=cost[i];
 96         if(v!=fa)
 97         {
 98             if(p1==v) ckg[v]=max(ckg[v],s2-fee+a[v]-max(0LL,f[v]-2*fee));
 99             else ckg[v]=max(ckg[v],s1-fee+a[v]-max(0LL,f[v]-2*fee));
100         }
101     }
102     for(int i=head[x];i!=-1;i=next[i])
103     {
104         int v=rea[i];
105         if (v==fa) continue;
106         dfs_solve(rea[i],x);
107     }
108 }
109 void prepare()
110 {
111     n=read();
112     memset(head,-1,sizeof(head));
113     for(int i=1;i<n;i++)
114     {
115         int x=read(),y=read(),z=read();
116         add(x,y,z),add(y,x,z);
117     }
118     for(int i=1;i<=n;i++)
119     {
120         a[i]=read();
121         ckt[i]=ckg[i]=a[i];
122     }
123     dfs_init(1,0);
124 }
125 int main()
126 {
127     freopen("treasure.in","r",stdin);
128     freopen("treasure.out","w",stdout);
129
130     prepare();
131     dfs_solve(1,0);
132
133     for(int i=1;i<=n;i++)
134     {
135         ll x=max(ckt[i]+f[i]-a[i],g[i]+up[i]),y=ckg[i]+upd[i];
136         printf("%lld\n",max(x,y));
137     }
138 }
时间: 2024-12-24 10:00:14

冯志远0918的相关文章

冯志远0912

个人感受:这次分数是50+40+0,也就是说两天分数相加是340分,是达不了标的,这次第一题打好以后,想了许久第二题,发现了有重复元素的排列 但是两个元素,就是求一个组合(这个没想到,就算会Lucas也没什么用),╮(╯▽╰)╭,然后第三题,暴力都写不出什么,拿了个0分. gemo.cpp 1 #include<cstdio> 2 #include<algorithm> 3 #include<iostream> 4 #include<cmath> 5 #in

冯志远0913

1664: 溢出 时间限制: 1 Sec  内存限制: 256 MB提交: 84  解决: 18[提交][状态][讨论版] 题目描述 输入 输出 样例输入 4 int32 100000 100000 100000 int16 1 2 3 4 5 6 7 8 unsigned int16 1 2 3 4 5 6 7 8 unsigned int8 23333333 33333333 样例输出 2 8 never 1 提示 函数变换 时间限制: 1 Sec  内存限制: 256 MB提交: 26  

冯志远0911

个人感受:这套题目,跪在了最后一道题,想了许久,应该是7:40左右开始想的,想了斜率优化之类的,但是最后没有拿更多的分数,实在是失策. 三道题100+100+50 nbc 1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 #include<iostream> 6 #define mod 1000000007 7 8 using name

冯志远0914

问题 A: 组合数问题 时间限制: 1 Sec  内存限制: 512 MB提交: -  解决: -[提交][讨论版] 题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1, 2, 3)三个物品中选择两个物品可以有(1, 2),(1, 3),(2, 3)这三种选择方法.根据组合数的定义,我们可以给出计算组合数C(n,m)的一般公式: C(n,m)=n!/(m!(n-m)!) 其中n!= 1×2×···×n. 小葱想知道如果给定n,m和k,对于所有的0≤i≤n,0≤

冯志远0920

排序 时间限制: 1 Sec  内存限制: 256 MB提交: 80  解决: 52[提交][状态][讨论版] 题目描述 输入 输出 样例输入 6 1 2 4 3 6 5 样例输出 2 提示 图 时间限制: 1 Sec  内存限制: 256 MB提交: 173  解决: 48[提交][状态][讨论版] 题目描述 输入 输出 样例输入 2 4 URUU UUUU BRUR BRUU 4 UUBB RURU UUUU URBU 样例输出 T N 提示 或 时间限制: 1 Sec  内存限制: 256

20145211黄志远 《网络对抗》Exp7 网络欺诈技术防范

20145211黄志远 <网络对抗>Exp7 网络欺诈技术防范 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体有(1)简单应用SET工具建立冒名网站(2)ettercap DNS spoof(3)结合应用两种技术,用DNS spoof引导特定访问到冒名网站. 1.实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 共享WiFi中,尤其要注意不需要密码的WiFi,通常情况下一般是你身边的人 (2)在日常生活工作中如何防范以上两攻击方法 经常上的

Centos+Serync+inotify实时同步数据文件-任志远

DRDB安装配置详解+NFS(Mysql)+Heartbeat高可用实例配置-任志远

温馨提示: 如果mysqld高可用 haresources node1IPaddr::192.168.1.222/24/eth0:1 Filesystem::/dev/drbd0::/data::ext4mysqld chmod a+x/etc/ha.d/resource.d/mysqld_umount cp /etc/init.d/mysqld/etc/ha.d/resource.d/ 作者:http://renzhiyuan.blog.51cto.com/

201771010107 ------冯志霞----java学习进度表

2018面向对象程序设计(Java)课程进度表 周次 (阅读/编写)代码行数 发布博文量/评论他人博文数量 课余学习时间 学习收获的最大程序阅读或编程任务 1 30-50 1/1 3 通过输出一个九九乘法表掌握了一个完整代码所具备的基本格式,基本框架,定义,如何标准输入输出 2 60-80 1/0 7 导入源文件并对其代码进行语法分析虽然不会很会但是经过几个代码的阅读除却相同才发现各个代码执行的功能不同,顺便找了几个例子进行加深的理解, 3 70-80 0 8 自己进行算法设计,考虑很多因素合理