浣熊帮帮忙19楼,海龙膏,一鸣惊人造句
time limit: 4000/2000 ms (java/others) memory limit: 32768/32768 k (java/others)
total submission(s): 4869 accepted submission(s): 1659
1 // d 2 #include <bits/stdc++.h> 3 using namespace std; 4 #define rep(i,a,n) for (int i=a;i<n;i++) 5 #define per(i,a,n) for (int i=n-1;i>=a;i--) 6 #define pb push_back 7 #define mp make_pair 8 #define all(x) (x).begin(),(x).end() 9 #define fi first 10 #define se second 11 #define sz(x) ((int)(x).size()) 12 typedef vector<int> vi; 13 typedef long long ll; 14 typedef pair<int,int> pii; 15 const ll mod=1000000007; 16 ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} 17 ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} 18 // head 19 20 const int n=101000; 21 int _,n,m,pre[n],l,r,ret[n];//pre维护覆盖i的最左端点 22 int main() { 23 for (scanf("%d",&_);_;_--) { 24 scanf("%d%d",&n,&m); 25 rep(i,1,n+1) pre[i]=i; 26 rep(i,0,m) { 27 scanf("%d%d",&l,&r); 28 pre[r]=min(pre[r],l); 29 per(i,1,n) pre[i]=min(pre[i],pre[i+1]);//pre[i]是pre[i]和pre[i+1]的最小值 30 int pl=1;//从1开始 和覆盖每个点的最左端点pre[i]比较 31 set<int> val; 32 rep(i,1,n+1) val.insert(i);//维护最小可用的数 33 rep(i,1,n+1) { 34 //上个 [pl, i-1] 35 36 //当前 [pre[i], i] 37 while (pl<pre[i]) {//小于pre[i]的点的值 插入set 38 val.insert(ret[pl]); 39 pl++; 40 } 41 ret[i]=*val.begin();//不小于直接取最小的数放进去 42 val.erase(ret[i]);//删除刚放入的数 43 } 44 rep(i,1,n+1) printf("%d%c",ret[i]," \n"[i==n]); 45 } 46 }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论