Strange Balls
#include <bits/stdc++.h>
using namespace std;
stack<pair<int,int>> a;
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++){
int x;
cin>>x;
if(a.empty()){
a.push({x,1});
cout<<"1"<<endl;
continue;
}
if(x==a.top().first){
if(a.top().second+1==x){
x--;
while(x--){
a.pop();
}
}
else{
a.push({x,a.top().second+1});
}
}
else{
a.push({x,1});
}
cout<<a.size()<<endl;
}
return 0;
}
这道题是我自己当时没想好怎么表示消除球,也是对栈的使用不是很熟练导致没做出来。
Made Up
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int b[100005];
int c[100005];
int d[100005];
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
cin>>c[i];
}
long long sum=0;
for(int i=1;i<=n;i++){
d[b[c[i]]]+=1;
}
for(int i=1;i<=n;i++){
sum+=d[a[i]];
}
cout<<sum;
return 0;
}
这道题是当时没有想好用什么去存,把n方的复杂度变成2n的复杂度,这个是题做少了。
Connect 6
#include <bits/stdc++.h>
using namespace std;
char a[1005][1005];
int main(){
bool p=false;
int n,sum;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if((i+5)<n){
sum=0;
for(int k=0;k<6;k++){
if(a[i+k][j]=='#'){
sum++;
}
}
if(sum>=4) p=true;
}
if((j+5)<n){
sum=0;
for(int k=0;k<6;k++){
if(a[i][j+k]=='#'){
sum++;
}
}
if(sum>=4) p=true;
}
if((i+5)<n&&(j+5)<n){
sum=0;
for(int k=0;k<6;k++){
if(a[i+k][j+k]=='#'){
sum++;
}
}
if(sum>=4) p=true;
}
if((i-5)>=0&&(j+5)<n){
sum=0;
for(int k=0;k<6;k++){
if(a[i-k][j+k]=='#'){
sum++;
}
}
if(sum>=4) p=true;
}
}
}
if(p) cout<<"Yes";
else cout<<"No";
return 0;
}
这道题是当时想着怎么去把它补成六个#相连,没想去判断有四个及以上就好了
H and V
#include <bits/stdc++.h>
using namespace std;
char a[11][11];
int h,w,k;
bool check(int xi,int xj){
int z=0;
for(int i=0;i<h;i++){
if(xi&(1<<i)) continue;
for(int j=0;j<w;j++){
if(xj&(1<<j)) continue;
if(a[i][j]=='#') z++;
}
}
return z==k;
}
int main(){
cin>>h>>w>>k;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>a[i][j];
}
}
int sum=0;
for(int i=0;i<(1<<h);i++){
for(int j=0;j<(1<<w);j++){
if(check(i,j)) sum++;
}
}
cout<<sum;
return 0;
}
当时没有明确的思路,后面看题解,每个行或列都有选和不选两种状态,用二进制的方式将所有情况枚举出来就行
这一周收获也很多,还在学习别的题目,再补一补。