2019佳木斯集训 Day7
T1
不算很水的数学题,难度中
思路:我们首先发现除了2xy以外剩下的加和必定是个奇数
然后我们发现r是偶数时无解,并且r<=4时无解,其余情况就是
3+一个偶数,显然可以表达所有情况,所以直接输出1和(r-3)/2即可
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 long long r; 4 int main(){ 5 scanf("%lld",&r); 6 if(r%2==0||r<=5) printf("NO"); 7 else printf("1 %lld",(r-3)/2); 8 return 0; 9 }
T2
垃圾题,臭题,题面都能给错!!!(要不然我就A了!!)
思路:暴力跑模拟就行,需要注意,班长无论如何都不会去0位置
所以一旦班长跑到0要变到1.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n,m,k,t,x,y,l,r; 4 int main(){ 5 scanf("%d%d%d%d",&n,&m,&k,&t); 6 for(register int i=1;i<=t;i++){ 7 scanf("%d%d",&x,&y); 8 if(x==0){ 9 if(y<=m){ 10 m-=y; 11 n-=y; 12 } 13 else if(y>m){ 14 n-=(n-y); 15 } 16 } 17 if(x==1){ 18 if(y<=m){ 19 n++,m++; 20 } 21 if(y>m) n++; 22 } 23 if(m==0) m=1; 24 printf("%d %d\n",n,m); 25 } 26 return 0; 27 }
T3
我们有时需要简便的暴力,来解决暴力问题
思路:我们预处理把横的和竖的分开存好,然后暴力跑O(n^3)
每次枚举两条横着的边,再挨个遍历剩下的竖边,如果竖边能切割两条
横边,就累加一个num,每跑完一条竖边,ans+=num*(num-1)/2即可;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 int yu,yd,x; 5 }shu[1010]; 6 struct nodee{ 7 int xl,xr,y; 8 }heng[1010]; 9 int he,sh; 10 int n,a,b,c,d,num; 11 long long ans; 12 int main(){ 13 scanf("%d",&n); 14 for(register int i=1;i<=n;i++){ 15 scanf("%d%d%d%d",&a,&b,&c,&d); 16 if(a==c){ 17 sh++; 18 shu[sh].x=a; 19 shu[sh].yu=max(b,d); 20 shu[sh].yd=min(b,d); 21 continue; 22 } 23 he++; 24 heng[he].y=b; 25 heng[he].xr=max(a,c); 26 heng[he].xl=min(a,c); 27 } 28 for(register int i=1;i<=he;i++){ 29 for(register int j=i+1;j<=he;j++){ 30 num=0; 31 int emm=max(heng[i].y,heng[j].y); 32 int err=min(heng[i].y,heng[j].y); 33 int ess=max(heng[i].xl,heng[j].xl); 34 int epp=min(heng[i].xr,heng[j].xr); 35 if(epp<=ess)continue; 36 for(register int k=1;k<=sh;k++){ 37 if(shu[k].yu>=emm&&shu[k].yd<=err&&shu[k].x>=ess&&shu[k].x<=epp) num++; 38 } 39 ans+=num*(num-1)/2; 40 } 41 } 42 printf("%lld",ans); 43 return 0; 44 }
end;