| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 1608 | Accepted: 737 |
Description
As for a film,
- it will be made ONLY on some fixed days in a week, i.e., Alice can only work for the film on these days;
- Alice should work for it at least for specified number of days;
- the film MUST be finished before a prearranged deadline.
For example, assuming a film can be made only on Monday, Wednesday and Saturday; Alice should work for the film at least for 4 days; and it must be finished within 3 weeks. In this case she can work for the film on Monday of the first week, on Monday and Saturday of the second week, and on Monday of the third week.
Notice that on a single day Alice can work on at most ONE film.
Input
Output
Sample Input
2 2 0 1 0 1 0 1 0 9 3 0 1 1 1 0 0 0 6 4 2 0 1 0 1 0 1 0 9 4 0 1 1 1 0 0 0 6 2
Sample Output
Yes No
Hint
A proper schedule for the first test case:
date Sun Mon Tue Wed Thu Fri Sat
week1 film1 film2 film1 film1
week2 film1 film2 film1 film1
week3 film1 film2 film1 film1
week4 film2 film2 film2
Source
#include<stdio.h>
#include<string.h>
const int INF=1<<28-1;
int mat[1100][400],link[400];
bool usedif[400];
int n,gx,gy;
bool can(int t)
{
for(int i=1; i<=gy; i++)
{
if(usedif[i]==0&&mat[t][i]>0)
{
usedif[i]=1;
if(link[i]==-1||can(link[i]))
{
link[i]=t;
return true;
}
}
}
return false;
}
bool MaxMatch()
{
memset(link,-1,sizeof(link));
for(int i=1;i<=gx;i++)
{
memset(usedif,0,sizeof(usedif));
if(!can(i)) return false;
}
return true;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
gx=0;
gy=0;
memset(mat,0,sizeof(mat));
for(int i=1;i<=n;i++)
{
int a1,a2,a3,a4,a5,a6,a7,d,w;
scanf("%d%d%d%d%d%d%d%d%d",&a7,&a1,&a2,&a3,&a4,&a5,&a6,&d,&w);
if(a7) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+7]=1; }
if(a6) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+6]=1; }
if(a5) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+5]=1; }
if(a4) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+4]=1; }
if(a3) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+3]=1; }
if(a2) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+2]=1; }
if(a1) { for(int k=1;k<=d;k++) for(int j=1;j<=w;j++) mat[k+gx][(j-1)*7+1]=1; }
if(7*w>gy) gy=7*w;
gx+=d;//1010
}
if(MaxMatch()) printf("Yes/n");
else printf("No/n");
}
return 0;
}
本文深入探讨了AI音视频处理领域中的关键技术——视频分割与语义识别,通过详细解释这些技术的工作原理、应用场景及实际应用案例,为读者提供了一次全面的技术解读之旅。
1万+

被折叠的 条评论
为什么被折叠?



