ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

POJ1201.Intervals题解--zhengjun

2021-11-25 20:59:29  阅读:85  来源: 互联网

标签:-- 题解 char int while gc IO POJ1201 define


思路

一看就是差分约束,直接建边就好了。

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;typedef long long ll;
struct Precision{int x;Precision(int a){x=a;}};struct SW{int x;SW(int a){x=a;}};struct SF{int x;SF(int a){x=a;}};
#define Set(x,y,z) SW(x)<<SF(y)<<z<<SW(0)
struct IO{
	#define Tp template<typename T>
	#define _D isdigit(c=gc())
	#define _A f|=eb;if(f)_R
	#define _R return *this
	#define _G p1==p2&&(p2=(p1=B)+fread(B,1,S,stdin),p1==p2)?EOF:*p1
	#define _T(x) while(st[++st[0]]=x%10+'0',x/=10)
	#define _O operator
	static const int S=1<<21;char B[S],*p1,*p2,sf,t;int st[105],H,bs,sw;bool eb,f;char nex(){return _G;}IO(){bs=6;sf=eb=sw=0;}
	IO& _O >> (char&c){_A;while(T(c=gc())){_A;}_R;}char gc(){t=(_G++);t=='\r'&&nex()=='\n'&&(gc());t==EOF&&(eb=1);return t;}
	IO& _O >> (string&s){_A;s="";char c;while(T(c=gc())){_A;}while(s+=c,!T(c=gc()));_R;}IO& _O << (Precision x){bs=x.x;_R;}
	IO& _O >> (char*c){_A;while(T(*c=gc())){_A;}while(!T(*++c=gc()));*c=0;_R;}int P(char c){return c=='\n'||c=='\r'||c==EOF;}
	IO& _O >> (double&x){_A;x=0;bool F=0;char c;while(!_D){F^=(c=='-');_A;}while(x=x*10+(c^48),_D&&(P(c),1));if(c^'.')_R;c=gc();
	double k=1;while(x+=(c^48)*(k*=0.1),_D);F&&(x=-x);_R;}void pu(int x){while(x-->0)pc(sf);}IO& _O << (SW x){sw=x.x;_R;}
	Tp IO& _O >> (T&x){_A;x=0;bool F=0;char c;while(!_D){F^=(c=='-');_A;}while(x=(x<<3)+(x<<1)+(c^48),_D);F&&(x=-x);_R;}
	IO& _O << (const string &s){int l=s.length();pu(sw-l);for(int i=0;i<l;i++)pc(s[i]);_R;}IO& _O << (const char c){pc(c);_R;}
	IO& _O << (char*c){int l=strlen(c);pu(sw-l);for(int i=0;i<l;i++)pc(c[i]);_R;}void CL(){fwrite(B,1,H,stdout);H=0;}
	IO& _O << (const char*c){int l=strlen(c);pu(sw-l);for(int i=0;i<l;i++)pc(c[i]);_R;}IO& _O << (SF x){sf=x.x;_R;}
	IO& _O << (double x){x<0&&(st[++st[0]]='-',x=-x);double t=0.5;for(int i=1;i<=bs;i++)t*=0.1;x+=t;ll y=x;_T(y);pu(sw-st[0]-
		bool(bs)-bs);while(st[0])pc(st[st[0]--]);x-=ll(x);if(bs)pc('.');for(int i=1;i<=bs;i++)pc(int(x*=10)+'0'),x-=int(x);_R;}
	Tp IO& _O << (T x){x<0&&(pc('-'),x=-x);_T(x);pu(max(sw-st[0],0));while(st[0])pc(st[st[0]--]);_R;}_O bool()const{return !f;}
	IO& getline(string&s){_A;s="";char c=gc();if(!P(c))while(s+=c,!P(c=gc()));_R;}void pc(const char c){H==S&&(CL(),0);B[H++]=c;}
	IO& getline(char*c){_A;*c=gc();if(!P(*c))while(!P(*++c=gc()));*c=0;_R;}int T(char c){return c==' '||P(c);}~IO(){CL();}
}fin,fout;
const int N=5e4+10;struct edges{int to,w,nex;}edge[N<<2];
int n,s,head[N],kk,d[N];void add(int u,int v,int w){edge[++kk]=(edges){v,w,head[u]};head[u]=kk;}
int main(){
	while(fin>>n){
		memset(head,kk=0,sizeof(head));queue<int>q;for(int a,b,c,i=1;i<=n;i++)fin>>a>>b>>c,add(a,b+1,c);
		for(int i=0;i<N-1;i++)add(i,i+1,0),add(i+1,i,-1);q.push(0);memset(d,-1,sizeof(d));d[0]=0;
		while(!q.empty()){
			int u=q.front();q.pop();
			for(int i=head[u];i;i=edge[i].nex){
				int v=edge[i].to;
				if(d[v]<d[u]+edge[i].w){
					d[v]=d[u]+edge[i].w;
					q.push(v);
				}
			}
		}
		fout<<d[N-1]<<'\n';
	}
	return 0;
}

标签:--,题解,char,int,while,gc,IO,POJ1201,define
来源: https://blog.csdn.net/A_zjzj/article/details/121547370

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有