中考结束了嘛
然后由于D萎蛋了 所以前期是上午OI下午文化课晚上作业 提前把高一知识搞完这样停课比较稳
这几天先是简单题的康复训练 NOIP提高难度吧 然后中间穿插一些之前想补的题
嗯就这样,开始吧。
6.17
做了一下下面的小朋友【大雾 的题 还是很好做的嘛233
poj2437
有点辣鸡的贪心题 贪就完事了 处理边界有点麻烦
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//Love and Freedom. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #define ll long long #define inf 20021225 using namespace std; struct mud { int st,ed; bool operator<(const mud &x) { return st<x.st; } }m[10010]; int n,l; int main() { scanf("%d%d",&n,&l); for(int i=1;i<=n;i++) scanf("%d%d",&m[i].st,&m[i].ed); sort(m+1,m+n+1); int ans=0,lst=0; for(int i=1;i<=n;i++) { int tmp=max(lst,m[i].st);// printf("%d\n",tmp); int len=m[i].ed-tmp; if(len<=0) continue; len=(len-1)/l+1; ans+=len; lst=tmp+len*l; } printf("%d\n",ans); return 0; }
bzoj1614
比较好做的题 简化题意就是求路径上第(k+1)大最小
这种什么最大最小二分就很靠谱 然后spfa更新个dp数组就好啦
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//Love and Freedom. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<queue> #define ll long long #define inf 20021225 #define N 10001 #define MX 1000001 using namespace std; struct edge{int to,lt,v;}e[N<<1]; int in[N],f[N],cnt,n,p,k; void add(int x,int y,int v) { e[++cnt].to=y; e[cnt].lt=in[x]; e[cnt].v=v; in[x]=cnt; e[++cnt].to=x; e[cnt].lt=in[y]; e[cnt].v=v; in[y]=cnt; } queue<int> q; bool spfa(int t) { //while(!q.empty()) q.pop(); memset(f,48,sizeof(f)); q.push(1); f[1]=0; while(!q.empty()) { int x=q.front(); q.pop(); for(int i=in[x];i;i=e[i].lt) { int y=e[i].to,tmp=f[x]; if(e[i].v>t) tmp++; if(tmp<f[y]) f[y]=tmp,q.push(y); } } if(f[n]<=k) return 1; return 0; } int main() { int x,y,v; scanf("%d%d%d",&n,&p,&k); for(int i=1;i<=p;i++) scanf("%d%d%d",&x,&y,&v),add(x,y,v); int l=0,r=MX,mid; int ans=MX; while(l<=r) { mid=l+r>>1; if(spfa(mid)) ans=min(ans,mid),r=mid-1; else l=mid+1; } if(ans==MX) ans=-1; printf("%d\n",ans); return 0; }
ATC034A 放在长期计划了
LOJ6435 PKUSC2018 星际穿越
在这里->戳我