您的位置:首页 > 其它

懒人标记

2016-04-23 10:23 232 查看
http://acm.zzuli.edu.cn/zzuliacm/problem.php?cid=1149&pid=3

懒人标记代码o(n)

#include<iostream>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
const int N=100;
int main()
{
int a
,b
,dp
;
queue<int> q;
int i,j,k,tmp,n,m,text;
cin>>text;
while(text--)
{
memset(dp,0,sizeof(dp));
cin>>n>>m;
for(i=0;i<m;i++)    cin>>a[i]>>b[i],dp[a[i]]++,dp[b[i]+1]--;//标记  1    -1
for(i=2;i<=n;i++)    dp[i]+=dp[i-1];//每间房打扫 的次数
for(i=1;i<=n;i++)    if(dp[i]!=1&&dp[i]!=0) dp[i]=0;else dp[i]=1;//将打扫0 1次的房间标记为1
for(i=1;i<=n;i++)    dp[i]+=dp[i-1];//前i个有 几个打扫房间打扫0 1次
for(i=0;i<m;i++)    if(dp[b[i]]-dp[a[i]-1]==0)    q.push(i+1);//判断是否有 打扫0 1次的房间
cout<<q.size()<<endl;
if(q.size()==0) continue;
tmp=q.front();
q.pop();
cout<<tmp;
while(!q.empty())
{
tmp=q.front();
q.pop();
cout<<" "<<tmp;
}
cout<<endl;
}
}

http://acm.hdu.edu.cn/showproblem.php?pid=1556 #include <cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
#define lson l,m,rt<< 1
#define rson m+1,r,rt<<1|1
const int N=100000+10;
int s
;
int main()
{
int m,n,i,j,k,ans,tmp;
while(scanf("%d",&n),n)
{
int a,b;
memset(s,0,sizeof(s));
for(i=0;i<n;i++) scanf("%d%d",&a,&b),s[a]++,s[b+1]--;
for(i=1;i<=n;i++) s[i]+=s[i-1];
for(i=1;i<n;i++) cout<<s[i]<<" ";
cout<<s
<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: