考试160,改后300
字母还原
考试时通过比对字符串打70,不知道问题在哪
后来按照题目的思路打就过了
附70分代码
#include<bits/stdc++.h>
using namespace std;
int n;
string s1,s2,s3;
char letter1[200],letter2[200];
inline void init(){
for(char i='a';i<='z';i++){
letter1[i]=i-96;
letter2[i-96]=i;
}
for(int i=123;i<=149;i++){
letter1[i]=letter1[i-26]+26;
letter2[i-96]=letter2[i-122];
}
}
inline void pd(string a,string b,string c,int n){
int p[n+10],q[n+10];
char s[n+10];
memset(p,0,sizeof(p));
memset(q,0,sizeof(q));
for(int i=0;i<n;i++){
p[i]=letter1[a[i]];
if(a[i]>b[i]){
q[i]=letter1[b[i]+26];
}
else{
q[i]=letter1[b[i]];
}
}
int k=q[0]-p[0];
if(k%2!=0){
return;
}
else{
for(int i=1;i<n;i++){
if(q[i]-p[i]!=k){
return;
}
}
for(int i=0;i<n;i++){
s[i]=letter2[p[i]+k/2];
}
for(int i=0;i<n;i++){
if(s[i]!=c[n-i-1]){
return;
}
}
}
for(int i=0;i<n;i++){
cout<<s[i];
}
return;
}
int main(){
freopen("restore.in","r",stdin);
freopen("restore.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>s1>>s2>>s3;
init();
pd(s1,s2,s3,n);
pd(s1,s3,s2,n);
pd(s2,s1,s3,n);
pd(s2,s3,s1,n);
pd(s3,s1,s2,n);
pd(s3,s2,s1,n);
return 0;
}
棋盘染色
考试暴力,30
后来按照题解的思路倒着染色,成功AC
附改后AC代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct paint{
ll x,y,z;
}a[1000002];
ll n,m,q,ans,line[1000002],row[1000002],sumline,sumrow;
int main(){
freopen("board.in","r",stdin);
freopen("board.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m>>q;
for(ll i=1;i<=q;i++){
cin>>a[i].x>>a[i].y>>a[i].z;
}
for(ll i=q;i>=1;i--){
if(a[i].x==0){
if(line[a[i].y]!=0){
continue;
}
if(a[i].z==1){
ans+=m-sumrow;
}
sumline++;
line[a[i].y]=1;
}
else{
if(row[a[i].y]!=0){
continue;
}
if(a[i].z==1){
ans+=n-sumline;
}
sumrow++;
row[a[i].y]=1;
}
}
cout<<ans;
return 0;
}
为你写串
大水题,然而考试忘记mod1e9+7导致只有50
附改后AC代码
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
string s;
int p,q,ans;
int main(){
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>s;
for(int i=s.size()-1;i>=0;i--){
if(s[i]=='b'){
p++;
}
if(s[i]=='a'){
q++;
ans+=p;
ans%=mod;
p*=2;
p%=mod;
}
}
cout<<ans%mod;
return 0;
}
货物分组
DP+线段树求区间最值,显然不是我等凡人可企及之题
总结
分数最高的一次
然而大家都很高所以并没有很开心
好个观星
原来你也玩崩坏三!
原来你也……