NOIP普及組板子及注意事項(wyc&&xxy給學弟們的禮物)
轉載至:xxy https://blog.csdn.net/xuxiayang/
和 wyc https://blog.csdn.net/mr_wuyongcong/
板子們
//01揹包模版
#include<cstdio>
using namespace std;
int n,m,a[101],f[10001];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
f[0]=1;
for(int i=1;i<= n;i++)
for(int j=m;j>=a[i];j--)
f[j]+=f[j-a[i]];
printf("%d",f[m]);
}
//完全揹包模版
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,w[501],c[501],s[501],f[6001];
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
scanf("%d%d%d",& w[i],&c[i],&s[i]);
for (int i=1;i<=n;i++)
for (int j=m;j>=0;j--)
for (int k=0;k<=s[i];k++)//列舉組數
{
if (j-k*w[i]<0) break;//判斷越界
f[j]=max(f[j],f[j-k*w[i]]+k*c[i]);
}
printf("%d",f[m]);
}
//二進位制優化
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,w[10001],c[10001],f[6001],n1;
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
int x,y,s,t=1;
scanf("%d%d%d",&x,&y,&s);
while (s>=t)
{
w[++n1]=x*t;
c[n1]=y*t;
s-=t;
t*=2;
}
w[++n1]=x*s;
c[n1]=y*s;
//二進位制優化
}
for (int i=1;i<=n1;i++)
for (int j=m;j>=w[i];j--)
f[j]=max(f[j],f[j-w[i]]+c[i]);
printf("%d",f[m]);
}
//混合揹包
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,w[31],c[31],f[201],s[31];
int main()
{
scanf("%d%d",&m,&n);
for (int i=1;i<=n;i++)
{
scanf("%d%d%d",&w[i],&c[i],&s[i]);
}
for (int i=1;i<=n;i++)
if (s[i]==0)
{
for (int j=w[i];j<=m;j++)
f[j]=max(f[j],f[j-w[i]]+c[i]);
}//完全揹包
else
{
for (int j=1;j<=s[i];j++)
for (int k=m;k>=w[i];k--)
f[k]=max(f[k],f[k-w[i]]+c[i]);
}//多重
printf("%d",f[m]);
}
//分組揹包
#include<cstdio>
#include<iostream>
using namespace std;
int w[31],c[31],a[11][32],f[201],m,n,t,p;
int main()
{
scanf("%d%d%d",&m,&n,&t);
for (int i=1;i<=n;i++)
{
scanf("%d%d%d",&w[i],&c[i],&p);
a[p][++a[p][0]]=i;//分組
}
for (int i=1;i<=t;i++)
for (int j=m;j>=0;j--)
for (int k=1;k<=a[i][0];k++)
//列舉選的組數
if (j>=w[a[i][k]])//避免越界
{
f[j]=max(f[j],f[j-w[a[i][k]]]+c[a[i][k]]);
//動態轉移
}
printf("%d",f[m]);
}
//快速冪模版
#define ll long long
int power(int a,int b)
{
int ans=1;
a%=p;//不這樣很可能會炸
while(b)
{
if(b&1) ans=(ll)ans*a%p;
a=(ll)a*a%p
//記得加(ll)
}
return ans;
}
//二分查詢
int find(int a[],int x) //在a中查詢x
{
int l=1,r=n;//假設a陣列下標為1..n
//並且a單調遞增,簡單來說就是前面的比後面的小
while(l<=r)
{
mid=(l+r)/2;//取中間值
if(a[mid]==x) return mid;//找到了!
if(a[mid]<x)//取的值比x小,那麼我們要往右邊走
l=mid+1;
else //否則,我們要往左邊走
r=mid-1;
}
return ("找你mb",0);
}
//快速讀入,使用方法 x=read()
int read()
{
int x=0,flag=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')flag=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*flag;
}
//快速輸出
void write(int x)
{
if(x<0) {x=-x;putchar('-');}
if(x>9) write(x/10);
putchar(x%10+48);
return;
}
//Lu某同學要的結構體排序
#include<algorithm>
struct node{
int x,b,gezhongdongxi;
}a[N];
bool cmp(node x,node y)
{return x.x>y.x;}
//根據x從大到小排序
void sort_MB()
{
sort(a+1,a+1+n,cmp);
//從1~n排序
}
//gcd(求最大公約數)模版
int gcd(int a,int b)
{
if(!b) return a;
return gcd(b,a%b);
}
//楊輝三角遞推
void ycl_get()//預處理
{
c[0][0]=1;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
//求組合數(配合上面使用)
int get_C(int x,int y)
{return c[x+1][y+1];}
//隨機l~r的數字
#incldue<cstdlib>
#define random(l,r) l+rand()%(r-l+1)
//對拍程式模版(選學)
#include<windows.h>
#include<ctime>
void dp()//dp==對拍
{
while(1)
{
system("data.exe");//執行隨機程式
system("BL.exe");//執行暴力
double st=clock();
system("MPY.exe");//執行(偽)正解
double ed=clock();
if(system("fc data.ans data.out")){
printf("傻逼了吧,你的(偽)正解WA了");
return;
}
else
printf("(暫時)AC time:%0.2lf ms",ed-st);
}
}
//algorithm庫的騷操作
#include<algorithm>
void std()
{
wz=lower_bound(a+1,a+1+n,x)-(a+1)
//在a陣列中查詢x的位置(如果不存在,返回前面那個數的位置),返回到wz
m=unique(a+1,a+1+n)-(a+1);
//將a陣列去重(要求a陣列已經排好序),剩下的元素個數返回到m
fill(a+1,a+1+n,x);
//將a陣列下標為1..n的都賦值為x,類似memset,但可以限制範圍
//如若要清空n*m的二維陣列,格式如下
fill(a[1]+1,a[n]+1+m,0);
//不過推薦你們還是用memset清空好,不容易錯
//但這種方法對於不是清0的時候很好用!
}
//other騷操作
void sao()
{
for(register int i=1;i<=n;++i)
//++i比i++快, 迴圈變數前加register會更快
a<<b//a*(2^b)快速運算
putchar();//用putchar()輸出單個字元更快
//用字元陣列處理比字串會優秀
//更多的詳見你們學長的部落格
//https://blog.csdn.net/xuxiayang/article/details/81021585
//——to be continue
}
//輸出陣列記憶體
printf("%.3f M\n",(double)sizeof(a)/(1<<20));
printf("%.3f K\n",(double)sizeof(a)/(1<<10));
//(你們)常用的標頭檔案
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
//以下的最好不要放在要交的程式裡
#include<cstdlib>
#include<ctime>
//以下的千萬不要放在要交的程式裡
#include<windows.h>
//前面帶"__"的函式不可以用
可能有些寫錯了(反正我也沒編譯過)。
不會的來問我。
注意事項
之後是來自菜雞學長的一些提醒
- 做不出來題目心態不要爆炸,反正你做不出來別人也做不出來
- 不會的就暴力,暴力出奇跡
- 上面的板子都背好,總會有用的
- 標頭檔案起碼檢查10遍以上(特別是Wu同學)
- 記得看要不要用long long
- 第四題你們應該都是做不出來的,水個幾十分就好了
- 前2題一定要對,不然你基本涼了╮(╯_╰)╭
- 寫大模擬題的時候我推薦你們給自己的程式碼加註釋
經歷分享
//以下是wyc去年第3題的程式
while (true)
{
if (x+1==n && y==n && color[n][n]==c || x==n && y+1==n && color[n][n]==c || x==n && y==n) break;
else if (x+1==n && y==n && color[n][n] || x==n && y+1==n && color[n][n]) {money++; break;}
else if (x+1==n && y==n || x==n && y+1==n) {money+=2; break;}
else if (color[x][y+1]==c) y++;
else if (color[x+1][y]==c) x++;
else if (color[x-1][y]==c) x--;
else if (color[x][y-1]==c) y--;
else if (color[x][y+1
相關推薦
NOIP普及組板子及注意事項(wyc&&xxy給學弟們的禮物)
轉載至:xxy https://blog.csdn.net/xuxiayang/ 和 wyc https://blog.csdn.net/mr_wuyongcong/
板子們
//01揹包模版
#include<cstdio>
using namespace std
NOIP普及組板子及注意事項
轉載至
w
y
c
重灌系統後,重新安裝ORACLE加環境變數配置、客戶端PL/SQL的安裝過程,及注意事項(避免再次踩坑)
(1)首先了解什麼是OERACLE及Oracle與PL/SQL是什麼關係: ORACLE是資料庫,有客戶端和伺服器; PLSQL Developer只是第三方工具,服務於ORACLE,類似的工具還有Toad,sqlplus,sql developer等等; 安裝PLSQL Developer
JavaScript之ES6中解構原理及注意事項(陣列和物件)
//ES6中的解構原理(常用型別):
//陣列解構:
//陣列的元素是按次序排列的,變數的取值由它的位置決定;
let [a,b,c] = [1,2,3];
console.log(a,b,c) //結果為: 1,2,3;
//物件解構變數同名(
將 Spring boot 專案打成可執行Jar包,及相關注意事項(main-class、缺少 xsd、重複打包依賴)
最近在看 spring boot 的東西,覺得很方便,很好用。對於一個簡單的REST服務,都不要自己部署Tomcat了,直接在 IDE 裡 run 一個包含 main 函式的主類就可以了。
但是,轉念一想,到了真正需要部署應用的時候,不可能通過 IDE 去部署
sql查詢語句的書寫順序、執行順序及注意事項(優化策略)
查詢中用到的關鍵詞主要由6個,分別是:select、from、where、group by、having、order by書寫順序:順序與上一行一致。不過其中select和from為必須,其他關鍵詞是可選執行順序:from、where、group by、having、sele
ansible安裝k8s步驟及注意事項(線上安裝)
以下步驟都經本人實測,可以完美執行。官方參考網址:https://github.com/gjmzj/kubeasz/Ansible瞭解ansible是個什麼東西呢?官方的title是“Ansibleis
android APP整合系統詳細步驟及注意事項(amlogic平臺)
此說明用於amlogic平臺整合不簽名的apk。(如何判斷整合的apk需不需要簽名。簡單來說使用U盤安裝後,能正常開啟使用的就可以不簽名方式整合。)
各平臺的檔案系統有差異,但整體大同小異。其他平臺
ansible安裝k8s步驟及注意事項(離線安裝)
依賴包網址:1.在所有部署節點上搭建私有yum源①新建mkdir/media/Packages複製ansible_offline_Packages下的所有rpm到yum源目錄下/mdeia/Packages。②上傳createrepo包,使用rpm命令手動安裝createre
博弈論(noip普及組2010第四題 三國遊戲)
三國 勝利 沒有 blog hang max efi () turn 小涵很喜歡電腦遊戲,這些天他正在玩一個叫做《三國》的遊戲。
在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 N 位武將(N為偶數且不小於 4),任意兩個武將之間有一個“默
noip普及組2013 車站分級(luogu P1983)
eof 矩陣 oid har 一個 org pac 題目 style 原題鏈接:https://www.luogu.org/problem/show?pid=1983
題目大意:每個車站有一個權值,每一車次始發站與終點站之間如果有不停靠的點,那麽它的權值一定比停靠的點的權值
【C++】向量(vector) 基本使用方法及注意事項
介紹:
向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。
特點:
1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素
分享知識-快樂自己:Struts2(動態方法、動態結果、萬用字元、方法內部跳轉、action跳轉、OGNL 的使用及注意事項)
這裡主要以案例演示:涵蓋以下知識點
1、動態方法呼叫:使用關鍵 符號 ! 進行操作 例如:/名稱空間 ! 方法名
2、動態結果集:就是說,通過後臺返回的結果 ${} 獲取,重定向到符合預期的頁面。
3、萬能萬用字元:*_* :第一個 * 為 類名、第二個 * 為方
elasticsearch(五)java 使用批量操作bulk及注意事項
1,BulkRequest物件可以用來在一次請求中,執行多個索引、更新或刪除操作
且允許在一次請求中進行不同的操作,即一次請求中索引、更新、刪除操作可以同時存在
BulkRequest bulkRequest = new BulkRequest();
bulk
實戰Java高併發程式設計(四、鎖的優化及注意事項)
在多核時代,使用多執行緒可以明顯地提升系統的效能。但事實上,使用多執行緒會額外增加系統的開銷。對於單任務或單執行緒的應用來說,其主要資源消耗在任務本身。對於多執行緒來說,系統除了處理功能需求外,還需要維護多執行緒環境特有的資訊,如執行緒本身的元資料,執行緒的排程,執行緒上下文的切換等。
4.1有
NOIP考試技巧及注意事項&&資訊學競賽常用函式/模板
OI 中轉站 OI演算法大全
[NOIP提高組(2018)考試技巧及注意事項] (https://blog.csdn.net/hi_ker/article/details/81181615)
1.保持好的心態
2.審題
3.考慮嚴謹
4.程式碼正確
5
ORACLE分割槽表梳理系列(一)- 分割槽表概述、分類、使用方法及注意事項
前言
本文著重闡述分割槽表的概念、優勢,以及常用分割槽表的使用方法及使用過程中的注意事項。
對於分割槽表的日常維護方法,如:索引的維護、分割槽的合併等,將在後續文章中再詳細介紹。
本文涉及的相應演示,使用的資料庫版本為oracle 11.2.0.4。
本文常用分割槽表的使
《連載 | 物聯網框架ServerSuperIO教程》- 5.輪詢通訊模式開發及注意事項。附:網友製作的類庫說明(CHM)
目 錄
5. 輪詢通訊模型開發及注意事項... 2
4.1 概述... 2
4.2 通訊機制說明... 2
4.3 裝置驅動開發注意事項... 3
4.3.1 實時傳送資料... 3
4.3.2