自我声讨(不是
这周比赛有难也有易,但是我都是写得很少,摸鱼实在太严重,当然技术不到位也是一个方面,主要还是自己的问题。不再讨论
这周比赛学到、用到的的语法如下
快读
int read()
{
int x = 0 , f = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();} \\判断负数
while(ch >= '0' && ch <= '9') {x = x * 10 + ch - 48;ch = getchar();}
return x * f;
}
C++带空格的字符串读入
// for (int i = 1; i <= n; i++) {
// getline(cin,s[i]);
// }
c++读到回车结束这轮输出
for (int i = 1; i <= n; i++) {
for (int j = 1; 1; j++) {
cin >> TY[i][j];
if(cin.get() == '\n')break;
}
}
模拟、标记、二叉树(弱项)、链表(弱项)、二分(弱项)、set的基本用法(有序不重复)
对于不熟悉的、弱项会在自主练习的时间或者其他时间中加强
在练习中比较有意思的题目
1.模拟(往死里模拟(依旧没过)
引以为戒
(https://www.luogu.com.cn/problem/P1148?contestId=96294)
代码篇幅过长只截取一部分有用的条件
if(win){ //如果有记分牌
if(c10){ //如果有加倍牌
if(win == 16){ //判断是否为赢家
ans[0] = ans[1] = ans[2] = ans[3] = 0;
ans[lis] +=1000;
break;
}else{
if(los == n-1)ans[lis] +=50;//如果只有一张加倍牌
else {
if(h == 13){
ans[lis] = 200;//所有的红心牌视为+200
if(s12)ans[lis] += -100;
if(d11)ans[lis] += 100;
if(s12 && d11)ans[lis]+=500;
ans[lis] *= 2;
}else {
if(s12)ans[lis] += -100;
if(d11)ans[lis] += 100;
ans[lis] *= 2;
}
}
}
}else{
if(h == 13){
ans[lis] = 200;
if(s12)ans[lis] += -100;
if(d11)ans[lis] += 100;
if(s12 && d11) ans[lis]+= 500;
}else{
if(s12)ans[lis] += -100;
if(d11)ans[lis] += 100;
}
}
}else ans[lis] = 0;
后缀表达式
一种新的计算方法(我没学过)
(https://www.luogu.com.cn/problem/P8683?contestId=95102)
/*
*后缀和
* 如(3+4)x 6 - 9;
* 则表示为 3 4 + 6 * 9 -;
*/
sort(TY+1,TY+count+1,cmp);
ll ans=0;
for (int i = 1; i <= add+1; i++) {
ans+=TY[i];
}
for (int i = count; i >= count - dec + 1; i--) {
ans -= TY[i];
}
cout << ans;
return 0;
}
标签:week,ch,s12,lis,else,ans,100,match,conclusion
From: https://www.cnblogs.com/TFOREVERY/p/17035440.html