重新振作第16-18天----狂补作业
痛苦,焦虑,痛苦,想紫砂
补了个damn的作业啊
移动应用开发---通讯录
后面补
软件设计小实验
后面补
数据库实验11和12
实验12有毒,给的代码有一点问题,但是看不出来哪里有问题,跑不了一点。
汇编实验报告 1.5h
完成了一手实验,理解了一下,完成了实验报告
操作系统文献阅读PPT和记录 2h
具体看以下链接:
https://www.cnblogs.com/cdag/p/18583161
退役acmer的每日一题*12 1h 加 abc383 加第36次csp认证
每日一题
题目链接:https://atcoder.jp/contests/abc369/tasks/abc369_e
思路分析: 一开始,没看到n的范围。然后发现n只有400,直接就可以Floyd预处理好最短路,然后发现k是只有5的,然后我们对于k的所有排列遍历一遍,然后还有判断是首还是尾,这样直接就可以过了。可以看一下这位大哥的题解:https://blog.csdn.net/swan416/article/details/141759165
但是后面的话,我是用状压来实现的。
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=3e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m;
vector<int>u(m+1,0),v(m+1,0),s(m+1,0);
vector<vector<int>>f(n+1,vector<int>(n+1,1E18));
for(int i=1;i<=n;i++)f[i][i]=0;
for(int i=1;i<=m;i++){
cin>>u[i]>>v[i]>>s[i];
f[u[i]][v[i]]=min(s[i],f[u[i]][v[i]]);
f[v[i]][u[i]]=min(s[i],f[v[i]][u[i]]);
}
// 计算多源头最短路
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
}
}
}
int q;
cin>>q;
while(q--){
cin>>k;
int a[k];
for(int i=0;i<k;i++){
cin>>a[i];
}
sort(a,a+k);
int ans=1E18;
do{
for(int i=0;i<(1<<k);i++){
int ft=1;
int temp=0;
for(int j=0;j<k;j++){
if((i>>j)&1){
temp+=f[ft][u[a[j]]]+s[a[j]];
ft=v[a[j]];
}
else {
temp+=f[ft][v[a[j]]]+s[a[j]];
ft=u[a[j]];
}
}
temp+=f[ft][n];
ans=min(ans,temp);
}
}while(next_permutation(a,a+k));
cout<<ans<<endl;
}
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
A
评价:水题
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=3e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n;
int ans=0,tt=0;
while(n--){
int t,x;
cin>>t>>x;
ans=max(0ll,ans+(tt-t));
tt=t;
ans+=x;
}
cout<<ans<<endl;
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
B
评价:水题
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=3e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m>>w;
string s[n+1];
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]=' '+s[i];
}
vector<pair<int,int>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(s[i][j]=='.'){
q.push_back({i,j});
}
}
}
int ans=0;
for(int i=0;i<q.size();i++){
for(int j=i+1;j<q.size();j++){
int temp=0;
for(int ii=1;ii<=n;ii++){
for(int jj=1;jj<=m;jj++){
if(s[ii][jj]=='.'){
if(abs(q[i].first-ii)+abs(q[i].second-jj)<=w
||abs(q[j].first-ii)+abs(q[j].second-jj)<=w)
temp++;
}
}
}
ans=max(ans,temp);
}
}
cout<<ans<<endl;
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
C
评价:水题
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=3e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
cin>>n>>m>>w;
string s[n+1];
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]=' '+s[i];
}
int vis[n+1][m+1];
memset(vis,0,sizeof vis);
queue<pair<int,int>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(s[i][j]=='H'){
q.push({i,j});
vis[i][j]=1;
}
}
}
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
while (q.size())
{
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int i=0;i<4;i++){
int tx=dx[i]+x;
int ty=dy[i]+y;
if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&!vis[tx][ty]&&s[tx][ty]=='.'&&vis[x][y]+1<=w+1){
vis[tx][ty]=vis[x][y]+1;
q.push({tx,ty});
}
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(vis[i][j]){
ans++;
}
}
}
cout<<ans<<endl;
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
D
评价:数学思维
代码实现:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=2e6+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
int prime[4000010],cnt;
short flag[4000010];
void linear(int n) {
int i, j;
for (i = 2; i <= n; i++) {
if (!flag[i]) prime[cnt++] = i;
for (j = 0; j < cnt && i * prime[j] <= n; j++) {
flag[i * prime[j]]++;//i*prime[j]的最小质因子时prime[j]
if (i % prime[j] == 0) break;//i已经被筛过了
}
}
}
void solve(){
cin>>n;
int x=sqrtl(n);
linear(N);
int ans=0;
//cout<<prime[0]<<' '<<prime[1]<<endl;
// 两个质数的乘积
for(int i=0;i<cnt;i++){
for(int j=i+1;j<cnt;j++){
if(prime[i]*prime[j]<=x){
ans++;
// cout<<prime[i]<<' '<<prime[j]<<endl;
}
else break;
}
}
// 质数的平方 有3个 再次平方 5个 再次平方 9个
for(int i=0;i<cnt;i++){
if(sqrtl(sqrtl(sqrtl(n)))>=prime[i]){
ans++;
}
}
cout<<ans<<endl;
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}
csp认证
已经心灰意冷,睡到中午十二点半起床,刷个牙,午饭都不吃就去打。当时就想着,已经没救了。然后打完发现430,,,,这真不是我太菜了吧,所以之前icpc的时候,真的不是我没有尽力,只是真的不能把希望放在其他人身上,与其期待别人能够出题,不如期待自己能够出题。
第1题水题,第二题不好说,感觉有点思维量,但是吧,也很快过了。半小时出两题。然后第三题思路想好的时候,差不多过去了40minutes了,是比赛开始1h10m,但是我写注释的时候竟然会闪退,什么破电脑,只要一敲当前???还有一些啥词,就会退出程序。然后代码白敲??????我人都崩溃了。。然后写一行保存一次,甚至写一个词保存一次,差不多在比赛开始2h的时候一发过了,第三题,思路也是差不多30分钟出来,但是一开始我使用的是set来维护,但是set在擦除后,使用auto,竟然会有奇怪的bug,我也不懂了,然后就换成了一个全局的cnt来维护。差不多在还剩50分钟的时候过了。第五题的话,一开始没想法,后面就想骗骗分吧,然后我就写了一个暴力的,拿来30分,然后还剩下20分钟。那个时候就在写小作文了,其实是有点想法的,但是当时思绪有点乱,就没有整理好,就没有尝试去写,因为我是想用前后缀的,后面他们说单调栈,发现确实,我的前缀也是维护从前开始的最小的。但是中间有点细节没有想好,就没有开始敲。
题解后面能查看答卷的时候发上来。