csp-j模拟赛1总结
文章目录
- T1
- T2
- T3
- 结语
- 尾声
快csp考试了得多刷题啊…
题海战术,启动(玩OI玩的)
咳咳,进入正题.
T1
T1
水题,小学数学即可搞定,话不多说,上代码:
#include <iostream>
using namespace std;
int main(){int n,t;cin>>n>>t;bool y=0;unsigned long long int number=0,highest=-1;for(int i=1;i<=n;i++){int a,b;cin>>a>>b;int now_high=(t-b)*a;if(now_high>highest&&y){highest=now_high;number=i; } if(!y){highest=now_high;number=i;y=1;}}cout<<number<<endl;return 0;
}
4分钟搞定,不得不说:暴力出奇迹
T2
T2
第一思路,暴力~~
14分钟过样例.为了保险用ctime库的timeb写了个随机数生成器,跑了一下极限大数据.
1分钟后–
咋有个挂了???(蒟蒻问号)
于是发现只能得60分
找规律,容易发现只有两种情况会无解,即多于n个N或开局就Y
并且Y的值一定输出为1,那就很好判断啦,直接用黑心,阿不,贪心算法搞定.
成功在18分钟写完.
代码:
#include <iostream>
using namespace std;
int pass[(int)1e6+25];
int main(){ios::sync_with_stdio(0);int a,b;cin>>a>>b;int lst=a;for(int i=0;i<b;i++){char ch;cin>>ch;if(ch=='N'){if(lst==0){cout<<"No solution"<<endl;return 0;}pass[i]=a-lst+1;lst--;}else {if(a==lst){cout<<"No solution"<<endl;return 0;}else{pass[i]=1;}}}for(int i=0;i<b;i++){cout<<pass[i]<<" ";}cout<<endl;return 0;
}
记得加上流加速(不加也行 ).
T3
T3
初中数学,由于时间紧迫(我要去睡觉了),胡了一个13分的暴力走人
#include <iostream>
using namespace std;
int k[(int)1e5+25],b[(int)1e5+25];
bool y[(int)1e5+25];
int main(){int n;cin>>n;for(int t=0;t<n;t++){int a,ki,bi;cin>>a;cin>>ki>>bi;if(a==1){for(int i=0;i<n;i++){if(!y[i]){y[i]=!y[i];k[i]=ki;b[i]=bi;break;}}}else if(a==2){int ans=0;for(int i=0;i<n;i++){if(y[i]&&k[i]!=ki){ans++;}}cout<<ans<<endl;}if(a==3){for(int i=0;i<n;i++){if(y[i]&&k[i]!=ki||y[i]&&k[i]==ki&&b[i]==bi){y[i]=!y[i];}} }}return 0;
}
结语
最终喜提100+100+27+0=227分,比预估高14分,没挂分(飞起)
已经比本省csp-j分数线高啦!!
尾声
点个赞,谢谢,好久没收到赞了