重新振作第10天----日常小记
虽然早上说要振作,但是还是没有振作起来。。。。。。。从早上七点醒来后,然后睡了一个回笼觉,直接睡到下午五点,然后就emmmm,不得不去补作业了。学习通的24小时作业截止通知已经发了,然后就去杨咏曼了。
六级单词
照常背背单词,其他无。。。。。。
数据库实验
虽然数据库实验并没有很难,但是课程要求的data studio这个软件是真的不好用。有时候点击运行,并没有反应。但是吧,通过这几次实验的验证。我发现了为什么会这样的原因了。每次在运动代码前,要进行保存。否则,这个软件运行的是未修改前的代码。虽然很玄乎,但是实践出来的规律就是这样的。奇奇怪怪的,也可能和data studio的版本有所关系。我的版本有点低的。
从下午五点开始,中间8-10点打了一场atcoder,然后继续实验报告,写到晚上2点,完美完成五分实验报告。别问为什么是五份实验报告,要问就只能说,没有ddl的加持,感觉只想摆烂。
但从明天,大概率是不能摆烂了,期末月了。再不赶紧补作业就真的寄寄了,我还查一堆作业没有写。寄寄!
退役acmer的每日一题5
由于今天有atcoder,那么今天的每日一题就是atcoer了。
总结一下这次的atcoder。43分钟结束D题,然后接下来一个小时,在E的支配下坐牢。有1说1,求期望的题目真的不是我的强项,没有那个数学功底哇。然后最后,等榜结束之后,发现emmm题目难度和分值对不上,F题过的比E要多很多。所以其实应该做F的。。。。。。。下次一定看着榜打。但说实话,atcoder的难度分配感觉不太合适。前面太水,后面几题又有点toooooo hard(仅针对于本人)。
A
题目链接:https://atcoder.jp/contests/abc382/tasks/abc382_a
思路: 按照题目说的,直接模拟即可
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=5e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m;
string s;
cin>>s;
s=' '+s;
int cnt=0;
for(int i=1;i<=n;i++){
if(s[i]=='.'){
cnt++;
}
}
cout<<min(n,cnt+m)<<endl;
}
signed main(){
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
B
题目链接:https://atcoder.jp/contests/abc382/tasks/abc382_b
思路: 一样是无脑题,随便模拟一下
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=5e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m;
string s;
cin>>s;
s=' '+s;
int cnt=0;
for(int i=1;i<=n;i++){
if(s[i]=='.'){
cnt++;
}
}
int x=n-min(n,cnt+m);
for(int i=1;i<=n;i++){
if(x&&s[i]=='@'){
cout<<'@';
x--;
}
else cout<<'.';
}
cout<<endl;
}
signed main(){
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
C
题目链接:https://atcoder.jp/contests/abc382/tasks/abc382_c
思路: emmm也是水题,但是有点思维量,先对题中所说的美味值从大到小排序,然后类似于双指针一样的处理,不过是在不同的数组中滑动。
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=5e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m;
vector<int>a(n+1,0);
vector<pair<int,int>>b(m+1);
vector<int>ans(m+1,-1);
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i].first;
b[i].second=i;
}
sort(b.begin()+1,b.begin()+1+m,greater<pair<int,int>>());
int j=1;
for(int i=1;i<=n;i++){
while(a[i]<=b[j].first&&j<=m){
ans[b[j].second]=i;
j++;
}
}
for(int i=1;i<=m;i++){
cout<<ans[i]<<endl;
}
}
signed main(){
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
D
题目链接:https://atcoder.jp/contests/abc382/tasks/abc382_d
思路: 不得不说,atcoder的英文题目真的抽象,不知道是不是语言习惯的问题,这个英语太抽象了。直接跟着题意dfs即可。
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=5e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
int ans;
int a[N][20];
int a1[20];
void dfs(int x,int cnt,int s){
for(int i=10;i<=m;i++){
if(10*(n-cnt-1)+x>m){
break;
}
else {
if(cnt==n-1){
a1[0]=s;
for(int i=0;i<n;i++){
a[ans][i]=a1[i];
}
ans++;
return;
}
a1[cnt+1]=x+i;
dfs(x+i,cnt+1,s);
}
}
}
void solve(){
cin>>n>>m;
for(int i=1;i<=m;i++){
dfs(i,0,i);
}
cout<<ans<<endl;
for(int i=0;i<ans;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<'\n';
}
}
signed main(){
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}