|
趁讲之前口胡一个,每个节点记录一个值 dis_i 和 vector 数组 v_i,表示 1 到 i 的最短距离,和通过某一条铁轨,一直不换乘的情况下,走的最长距离,然后显然我们只需要考虑通过某些铁轨能到达 i 且保持最小距离的,同时也只能通过这些铁轨转移,然后转移就按照记录的值和数组简单的转移,基于 dij。
感觉好简陋的思路,但是感觉好对啊:)
题目 3987 熙熙攘攘、我们的城市
2024-07-01 15:38:39
|
|
其实这做法加上归并排序就是一个log了
|
|
我的号很穷
|
|
可以用二项式定理简化
|
|
为什么下边也得写边界啊
(递推这么慢的 ![]() |
|
和正确答案一样为什么不过
|
|
#include<iostream>
using namespace std; int n,k,w; long long lis[1000010]; long long sum; int ans; int main(){ freopen("transit.in","r",stdin); freopen("transit.out","w",stdout); scanf("%d%d%d",&n,&k,&w); for(int i=1;i<=n;i++){ long long p;scanf("%lld",&p); lis[i%k]+=p; sum+=p; } ans=w/sum*k; w=w%sum; for(int i=1;i<=k;i++){ if(w<=0) break; w-=lis[i
题目 3976 运送粮食
2024-06-11 19:48:48
|
|
格鲁吉亚是谁,我们家 Alice 呢
题目 2660 [POJ 1704]格鲁吉亚和鲍勃
2024-06-07 08:10:37
|
|
#include<bits/stdc++.h>
using namespace std; int main() { freopen("jisuan.in","r",stdin); freopen("jisuan.out","w",stdout); double a,b; char op; cin>>op>>a>>b; switch(op) { case'+':cout<<fixed<<setprecision(2)<<a+b;break; case'-':cout<<fixed<<setprecision(2)<<a-b;break; case'*':cout<<fixed<<setprecision(2)<<a*b;break; case'/':cout<<fixed<<setprecision(2)<<a/b;break; } return 0; }
题目 3981 ktt
2024-06-04 19:41:02
|
|
注意 $0$
|
|
函数还是挺好用的,不过在不用函数做出来题之前最好别用函数做就是了(简单来说,菜就要多练技术,别成天想着偷懒,就比如我,小菜鸡一枚)
|
|
#include <iostream>
#include <fstream> #include <vector> #include <string> using namespace std; vector<string> v; void d(int k[5][5],int x,int y,int c,string s){ if(c==1){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ char a=k[i][j]+48; string ss; ss+=a; if(j+1<5){ d(k,i,j+1,c+1,ss); } if(j-1>-1){ d(k,i,j-1,c+1,ss); } if(i-1>-1){ d(k,i-1,j,c+1,ss); } if(i+1<5){ d(k,i+1,j,c+1,ss); } } } } else if(c==6){ char a=k[x][y]+48; s+=a; int t=0; for(int i=0;i<v.size
题目 562 跳房子
2024-05-28 20:49:33
|
|
if(i%4==0)day[2]=29;
if(i%400!=0&&i%100==0)day[2]=28; if(i%10*10+i/10%10<=12&&i%10*10+i/10%10!=0&&i/1000+i/100%10*10<=day[i%10*10+i/10%10]&&i/1000+i/100%10*10!=0) ans++; } cout<<ans; return 0; }
题目 3979 篮球
2024-05-28 20:39:18
|
|
#include<bits/stdc++.h>
using namespace std; char c; int a[15],b[15],day[15]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int n,m,ans=0; int main(){ freopen("datea.in" ,"r", stdin); freopen("datea.out","w",stdout); for(int i=1;i<=8;i++){ cin>>c; a[i]=int(c-'0'); } for(int i=1;i<=8;i++){ cin>>c; b[i]=int(c-'0'); } m=a[1]*1000+a[2]*100+a[3]*10+a[4]; n=b[1]*1000+b[2]*100+b[3]*10+b[4]; for(int i=m;i<=n;i++){ if(i%4
题目 3979 篮球
2024-05-28 20:38:37
|
|
#include<bits/stdc++.h>
using namespace std; int main() { freopen("split.in","r",stdin); freopen("split.out","w",stdout); int a,i=2; cin>>a; for(;i*i<=a;){ if(a%i==0) { a=a/i; cout<<i<<"*"; }else i++; }
题目 3979 篮球
2024-05-28 20:37:30
|
|
我的代码有一定的bug,但是是对的;
在正确思路下,最后输出时,不应有max和min的使用,应直接输出; 希望有高人指点斧正 谢谢 |
|
https://www.cnblogs.com/cndarkmoon/articles/18216427
博客,快点赞 ![]()
题目 3981 ktt
2024-05-28 19:56:47
|
|
题目 3971 不重叠正方形
2024-05-27 18:44:29
|
|
longlong
|
|
原题编号是啥呀
![]()
题目 3971 不重叠正方形
2024-05-27 17:00:57
|